Tag Archives: innodb

On InnoDB compression in production

Our latest changes have been pushed to public mysql@facebook branch, allowing this post to happen \o/ Recently we started rolling out InnoDB compression to our main database tier, and that has been a huge undertaking for multiple teams and a … Continue reading

Posted in facebook, mysql | Tagged , | 1 Comment

Blowing up in memory

MySQL isn’t too concerned about table handler memory usage – it will allocate row size buffer thrice per each table invocation. There’s a few year old bug discussing UNION memory usage – for each mention in an union one can allocate … Continue reading

Posted in mysql | Tagged , , , | 7 Comments

InnoDB subsystems in color

I tried to put every subdirectory of InnoDB codebase into a chart that would explain some of relations between subsystems and modules inside the source. This is what I got (click to enlarge): Update: Check Vadim’s diagram for a more … Continue reading

Posted in mysql | Tagged , , | 5 Comments

InnoDB locking makes me sad

Vadim and others have pointed at the index->lock problems before, but I think they didn’t good job enough at pointing out how bad it can get (the actual problematic was hidden somewhere as some odd edge case). What ‘index lock’ … Continue reading

Posted in facebook, mysql | Tagged , , , | 19 Comments

MySQL metrics for read workloads

There are multiple metrics that are really useful for read workload analysis, that should all be tracked and looked at in performance-critical environments. The most commonly used is of course Questions (or ‘Queries’, ‘COM_Select’) – this is probably primary finger-pointing … Continue reading

Posted in facebook, mysql | Tagged , , , ,

Logs memory pressure

Warning, this may be kernel version specific, albeit this kernel is used by many database systems Lately I’ve been working on getting more memory used by InnoDB buffer pool – besides obvious things like InnoDB memory tax there were seemingly … Continue reading

Posted in facebook, mysql | Tagged , , , | 4 Comments

random poking

These are some of my notes from some sysbench in-memory r/o testing in past day or so: At ‘fetch data by primary key’ benchmark with separate read snapshots at each statement, MySQL shines until ~200 concurrent threads, then performance starts … Continue reading

Posted in mysql | Tagged , , , | 6 Comments

on performance stalls

We quite often say, that benchmark performance is usually different from real world performance – so performance engineering usually has to cover both – benchmarks allow to understand sustained performance bottlenecks, and real world analysis usually concentrates on something what … Continue reading

Posted in facebook, mysql | Tagged , , , , | 3 Comments

Read ahead…

Mark wrote about how to find situations where InnoDB read-ahead is a bottleneck. What he didn’t disclose, though, is his trick to disable read-ahead without restart or recompile of MySQL. See, there’s no internal “disable read ahead knob”. But there … Continue reading

Posted in mysql | Tagged , , | 4 Comments

Opening tables!

There’s one bottleneck in MySQL/InnoDB that ultimately sucks. It sucked in 4.0, sucked in 5.0, sucks in 5.1 with newest InnoDB plugin. Opening tables has been a bottleneck on machines that have thousands of tables all the time (as LOCK_open … Continue reading

Posted in mysql | Tagged , | 3 Comments