OS
CentOS release 6.9 (Final)
Kernel | 2.6.32-696.el6.x86_64
cpu 64xIntel(R) Xeon(R) Gold 6130 CPU @ 2.10GHz
内存 128G
bond0 2000Mb/s Full
磁盘 SSD
MySQL版本
Server version: 5.7.22-22-log Percona Server (GPL), Release 22, Revision f62d93c
cpu密集型innodb_buffer_pool_size=64G
sync_binlog=1
innodb_flush_log_at_trx_commit=1
rocksdb-block-cache-size = 64G
rocksdb-block-size = 4096
rocksdb-block-size-deviation = 10
rocksdb-flush-log-at-trx-commit = 1
rocksdb-wal-bytes-per-sync = 0
rocksdb_default_cf_options =compression=kZlibCompression;bottommost_compression=kZlibCompression
tokudb_row_format = tokudb_fast
tokudb_cache_size = 64G
tokudb_commit_sync = 1
tokudb_directio = 1
tokudb_read_block_size = 128K
tokudb_read_buf_size = 128K
tokudb_fsync_log_period = 1000
100并发 、1kw行记录,64G大内存状况下 对于CPU密集型工作负载(数据量适合内存),
性能上 innodb完全秒杀其他存储引擎 ,MyRocks的效益甚至比InnoDB差
如果没有其他比如 压缩存储、写IO放大对SSD的伤害的需要可以不用考虑其他的存储引擎
IO密集型
innodb_buffer_pool_size=10G
sync_binlog=1
innodb_flush_log_at_trx_commit=1
rocksdb-block-cache-size = 10G
rocksdb-block-size = 4096
rocksdb-block-size-deviation = 10
rocksdb-flush-log-at-trx-commit = 1
rocksdb-wal-bytes-per-sync = 0
100并发 、1亿行记录(innodb 23G 、 MyRocks 22G),内存10G状况下 对于IO密集型工作负载。
压测过程中观察:
MyRocks
innodb
如图: write_only 过程 MyRocks
innodb
Myrocks 范围查
innodb 范围查
Myrocks 只写
innodb 只写
总结:innodb qps不是很稳定 开始阶段 qps需要爬坡 ,MyRocks 非常稳定 ;
开始innodb的qps不如 MyRocks ,后面稳定阶段高于 MyRocks;
MyRocks 相较innodb有读放大,innodb相较MyRocks 有写放大;
MyRocks cpu的负载相对innodb要低并且相对平稳。
参考:A Look at MyRocks Performancewww.percona.comInnoDB and TokuDB on AWSwww.percona.comhttps://www.percona.com/blog/2018/08/01/saving-with-myrocks-in-the-cloud/www.percona.comrocksdb for rds 测试yq.aliyun.comSaving With MyRocks in The Cloudwww.percona.comrocksdb for rds 测试yq.aliyun.com