Testing TokuDB – Faster and smaller for large tables
For the past two months, I have been running tests on TokuDB in my free time. TokuDB is a storage engine put out by Tokutek. TokuDB uses fractal tree indexes instead of B-tree indexes to improve performance, which is dramatically noticeable when dealing with large tables (over 100 million rows).
For those that like the information “above the fold”, here is a table with results from a test comparing InnoDB and TokuDB. All the steps are explained in the post below, if you want more details, but here’s the table:
| Action | InnoDB | TokuDB |
|---|---|---|
| Importing ~40 million rows | 119 min 20.596 sec | 69 min 1.982 sec |
| INSERTing again, ~80 million rows total | 5 hours 13 min 52.58 sec | 56 min 44.56 sec |
| INSERTing again, ~160 million rows total | 20 hours 10 min 32.35 sec | 2 hours 2 min 11.95 sec |
| Size of table on disk | 42 Gb | 15 Gb |
| COUNT(*) query with GROUP BY | 58 min 10.11 sec | 5 min 3.21 sec |
| DELETE query | 2 hours 46 min 18.13 sec | 1 hour 14 min 57.75 sec |
| Size of table on disk | 42 Gb | 12 Gb |
| OPTIMIZE TABLE | 1 day 2 hours 19 min 21.96 sec | 21 min 4.41 sec |
| Size of table on disk | 41 Gb | 12 Gb |
| TRUNCATE TABLE | 1 min 0.13 sec | 0.27 sec |
| Size of table on disk | 41 Gb | 193 Mb (after waiting 60 seconds before doing an ls -l) |
| OPTIMIZE TABLE | 23.88 sec | 0.03 sec |
| Size of table on disk | 176 Kb | 193 Mb |
