Here is a quick comparison of the new InnoDB plugin performance between different compression, row formats that is introduced recently.
The table is a pretty simple one:
CREATE TABLE `sbtest` ( `id` int(10) unsigned NOT NULL, `k` int(10) unsigned NOT NULL DEFAULT ‘0′, `c` char(120) NOT NULL DEFAULT ”, `pad` char(60) NOT NULL DEFAULT ”, PRIMARY KEY (`id`), KEY `k` (`k`) ) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
The table is populated with 10M rows with average row length being 224 bytes. The tests are performed for Compact, Dynamic and Compressed (8K and 4K) row formats using MySQL-5.1.24 with InnoDB plugin-1.0.0-5.1 on Dell PE2950 1x Xeon quad core with 16G RAM, RAID-10 with RHEL-4 64-bit.
Here are the four test scenarios:
All the above tests are repeated with innodb_buffer_pool_size=6G and 512M to make sure one fits everything in memory and another one overflows. The rest of the InnoDB settings are all default except that innodb_thread_concurrency=32.
Here is the summary of the test results:
Table Load:
Load time from a dump of SQL script having 10M rows (not batched)
| Compact | Compressed (8K) | Compressed (4K) | Dynamic |
| 28m 18s | 29m 46s | 36m 43s | 27m 55s |
File Sizes:
Here is the size of the .ibd file after each data load
| Compact | Compressed (8K) | Compressed (4K) | Dynamic |
| 2.3G | 1.2G | 592M | 2.3G |
Data and Index Size from Table Status:
Here is the Data and Index size in bytes from SHOW TABLE STATUS and you can see the original data size here rather than the compressed size
| Compact | Compressed (8K) | Compressed (4K) | Dynamic | |
| Data | 2247098368 | 2247098368 | 2249195520 | 2247098368 |
| Index | 137019392 | 137035776 | 160301056 | 137019392 |
Compression Stats:
Here is the compression stats after the table is populated from information_schema.InnoDB_cmp; and you notice that 4K takes more operations and time for both compression and un-compression
| Page_size | Compress_ops | Compress_ops_ok | Compress_time | Uncompress_ops | Uncompress_time | |
| 8K | 8192 | 446198 | 445598 | 73 | 300 | 0 |
| 4K | 4096 | 1091421 | 1012917 | 463 | 38801 | 13 |
Performance:
Here is the performance of various row formats with threads ranging from 1-512 for both 512M and 6G buffer pool size for both concurrent reads and writes.
Observations:
Few key observations from the performance tests that I performed without looking to any of the sources, as I could be wrong, someone can correct me here. Its hard to draw from these input scenarios, but helps to estimate what is what.