rocksdb、tokudb、innodb引擎性能测试

1、双主一从测试环境搭建

主机名

ip

角色

cpu/内存

master1

172.16.84.150

2c/4G

master2

172.16.84.151

2c/4G

slave

172.16.84.152

2c/4G

双主一从结构按照文档https://blog.csdn.net/du18020126395/article/details/115288524安装(文档是mysql企业版的,换成percona版本即可)

rpm -ivh Percona-Server-shared-compat-57-5.7.31-34.1.el7.x86_64.rpm

rpm -ivh Percona-Server-shared-57-5.7.31-34.1.el7.x86_64.rpm

rpm -ivh Percona-Server-client-57-5.7.31-34.1.el7.x86_64.rpm

rpm -ivh Percona-Server-server-57-5.7.31-34.1.el7.x86_64.rpm

rpm -ivh Percona-Server-rocksdb-57-5.7.31-34.1.el7.x86_64.rpm

rpm -ivh jemalloc-3.6.0-1.el7.x86_64.rpm

rpm -ivh Percona-Server-tokudb-57-5.7.31-34.1.el7.x86_64.rpm

 

配置双主时,双主分别配置:

change master to master_host='master2',master_port=3306,master_user='rpl_user',master_password='123',MASTER_AUTO_POSITION=1;

change master to master_host='master1',master_port=3306,master_user='rpl_user',master_password='123',MASTER_AUTO_POSITION=1;

 

从节点配置:

change master to master_host='master2',master_port=3306,master_user='rpl_user',master_password='123',MASTER_AUTO_POSITION=1;

 

start slave即可

2、启动rocksdb和tokudb引擎(三节点均操作)

安装rocksdb和tokudb引擎

ps-admin --enable-rocksdb -uroot -p123

 

ps-admin --enable-tokudb -u root -p123

 

安装tokudb结束后需要重启mysql实例,并在此执行:

ps-admin --enable-tokudb -u root -p123

3、sysbench安装

rpm -ivh ck-0.5.2-2.el7.x86_64.rpm

rpm -ivh luajit-2.0.4-3.el7.x86_64.rpm

rpm -ivh postgresql-libs-9.2.24-1.el7_5.x86_64.rpm

rpm -ivh sysbench-1.0.17-2.el7.x86_64.rpm

 

sysbench --version

4、造数据

建10个100万和5个1000万的rocksdb、tokudb和innodb作为存储引擎的表

create database sbrocksdb; ---存储10张100万的rocksdb引擎的表

create database sbtokudb;  ---存储10张100万的tokudb引擎的表

create database sbinnodb;    ---存储10张100万的innodb引擎的表

create database sbrocksdb0; ---存储5张1000万的rocksdb引擎的表

create database sbtokudb0;  ---存储5张1000万的tokudb引擎的表

create database sbinnodb0;    ---存储5张1000万的innodb引擎的表

 

/usr/share/sysbench/oltp_common.lua中找到CREATE DATABASE 将storage部分分别改为ENGINE=TokuDB、ROCKSDB和INNODB

 

ROCKSDB:

sysbench --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_common.lua --tables=10 --table_size=1000000 --mysql-db=sbrocksdb prepare

 

sysbench --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_common.lua --tables=5 --table_size=10000000 --mysql-db=sbrocksdb0 prepare

 

TokuDB:

sysbench --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_common.lua --tables=10 --table_size=1000000 --mysql-db=sbtokudb prepare

 

sysbench --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_common.lua --tables=5 --table_size=10000000 --mysql-db=sbtokudb0 prepare

 

INNODB:

sysbench --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_common.lua --tables=10 --table_size=1000000 --mysql-db=sbinnodb prepare

 

sysbench --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_common.lua --tables=5 --table_size=10000000 --mysql-db=sbinnodb0 prepare

5、Innodb参数优化

innodb_buffer_pool_instances=8

innodb_write_io_threads=4

innodb_read_io_threads=4

innodb_buffer_pool_size=2G

6、Rocksdb参数优化

rocksdb_max_open_files=-1

rocksdb_max_background_jobs=8

rocksdb_max_total_wal_size=4G

rocksdb_block_size=16384

rocksdb_block_cache_size=2G

rocksdb_table_cache_numshardbits=6

rocksdb_bytes_per_sync=16777216

rocksdb_wal_bytes_per_sync=4194304

rocksdb_compaction_sequential_deletes_count_sd=1

rocksdb_compaction_sequential_deletes=199999

rocksdb_compaction_sequential_deletes_window=200000

rocksdb_default_cf_options="write_buffer_size=256m;target_file_size_base=32m;max_bytes_for_level_base=512m;max_write_buffer_number=4;level0_file_num_compaction_trigger=4;level0_slowdown_writes_trigger=20;level0_stop_writes_trigger=30;max_write_buffer_number=4;block_based_table_factory={cache_index_and_filter_blocks=1;filter_policy=bloomfilter:10:false;whole_key_filtering=0};level_compaction_dynamic_level_bytes=true;optimize_filters_for_hits=true;memtable_prefix_bloom_size_ratio=0.05;prefix_extractor=capped:12;compaction_pri=kMinOverlappingRatio;compression=kLZ4Compression;bottommost_compression=kLZ4Compression;compression_opts=-14:4:0"

rocksdb_max_subcompactions=4

rocksdb_compaction_readahead_size=16m

rocksdb_use_direct_reads=ON

rocksdb_use_direct_io_for_flush_and_compaction=ON

7、Tokudb参数优化

tokudb_row_format=tokudb_fast

tokudb_directio=on

tokudb_cache_size=2G

 

8、读写压测

(1)100万行表压测

100万行的rocksdb引擎跑100s和200s读写:

sysbench --threads=4 --time=100 --report-interval=10 --mysql-db=sbrocksdb --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_read_write.lua --tables=10 --table_size=1000000 run

 

sysbench --threads=4 --time=200 --report-interval=10 --mysql-db=sbrocksdb --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_read_write.lua --tables=10 --table_size=1000000 run

 

100万行的tokudb引擎跑100s和200s读写:

sysbench --threads=4 --time=100 --report-interval=10 --mysql-db=sbtokudb --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_read_write.lua --tables=10 --table_size=1000000 run

 

sysbench --threads=4 --time=200 --report-interval=10 --mysql-db=sbtokudb --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_read_write.lua --tables=10 --table_size=1000000 run

 

 

100万行的innodb引擎跑100s和200s读写:

sysbench --threads=4 --time=100 --report-interval=10 --mysql-db=sbinnodb --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_read_write.lua --tables=10 --table_size=1000000 run

 

sysbench --threads=4 --time=200 --report-interval=10 --mysql-db=sbinnodb --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_read_write.lua --tables=10 --table_size=1000000 run

 

条件

engine

tps

qps

时间(s)

表行数

平均tps

平均qps

复制开启,读写测试

ROCKSDB

192.97

3859.34

100

1000,000

177.2253544.44

复制开启,读写测试

ROCKSDB

161.48

3229.54

200

1000,000

复制开启,读写测试

TokuDB

189.84

3796.82

100

1000,000160.883217.63

复制开启,读写测试

TokuDB

131.92

2638.44

200

1000,000

复制开启,读写测试

INNODB

167.81

3356.13

100

1000,000180.2453604.84

复制开启,读写测试

INNODB

192.68

3853.54

200

1000,000

(2)1000万行表压测

1000万行的rocksdb引擎跑100s和200s读写:

sysbench --threads=4 --time=100 --report-interval=10 --mysql-db=sbrocksdb0 --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_read_write.lua --tables=5 --table_size=10000000 run

 

sysbench --threads=4 --time=200 --report-interval=10 --mysql-db=sbrocksdb0 --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_read_write.lua --tables=5 --table_size=10000000 run

 

1000万行的tokudb引擎跑100s和200s读写:

sysbench --threads=4 --time=100 --report-interval=10 --mysql-db=sbtokudb0 --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_read_write.lua --tables=5 --table_size=10000000 run

 

sysbench --threads=4 --time=200 --report-interval=10 --mysql-db=sbtokudb0 --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_read_write.lua --tables=5 --table_size=10000000 run

 

1000万行的innodb引擎跑100s和200s读写:

sysbench --threads=4 --time=100 --report-interval=10 --mysql-db=sbinnodb0 --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_read_write.lua --tables=5 --table_size=10000000 run

 

sysbench --threads=4 --time=200 --report-interval=10 --mysql-db=sbinnodb0 --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_read_write.lua --tables=5 --table_size=10000000 run

 

条件

engine

tps

qps

时间(s)

表行数

平均tps

平均qps

复制开启,读写测试

ROCKSDB

172.47

3449.35

100

10,000,000

173.213464.18

复制开启,读写测试

ROCKSDB

173.95

3479.00

200

10,000,000

复制开启,读写测试

TokuDB

150.17

3003.34

100

10,000,000144.612892.17

复制开启,读写测试

TokuDB

139.05

2780.99

200

10,000,000

复制开启,读写测试

INNODB

131.86

2637.12

100

10,000,000161.7153234.23

复制开启,读写测试

INNODB

191.57

3831.34

200

10,000,000

 

9、写压测(相当于load data)

(1)100万行表压测

100万行的rocksdb引擎跑100s和200s写:

sysbench --threads=4 --time=100 --report-interval=10 --mysql-db=sbrocksdb --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_insert.lua --tables=10 --table_size=1100000 run

sysbench --threads=4 --time=200 --report-interval=10 --mysql-db=sbrocksdb --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_insert.lua --tables=10 --table_size=1100000 run

 

100万行的tokudb引擎跑100s和200s写:

sysbench --threads=4 --time=100 --report-interval=10 --mysql-db=sbtokudb --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_insert.lua --tables=10 --table_size=1100000 run

sysbench --threads=4 --time=200 --report-interval=10 --mysql-db=sbtokudb --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_insert.lua --tables=10 --table_size=1100000 run

 

100万行的innodb引擎跑100s和200s写:

sysbench --threads=4 --time=100 --report-interval=10 --mysql-db=sbinnodb --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_insert.lua --tables=10 --table_size=1100000 run

sysbench --threads=4 --time=200 --report-interval=10 --mysql-db=sbinnodb --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_insert.lua --tables=10 --table_size=1100000 run

条件

engine

tps

qps

时间(s)

表行数

平均tps

平均qps

复制开启,写测试

ROCKSDB

903.51

903.51

100

1000,000

818.46818.46

复制开启,写测试

ROCKSDB

733.41

733.41

200

1000,000

复制开启,写测试

TokuDB

467.27

467.27

100

1000,000631.935631.935

复制开启,写测试

TokuDB

796.60

796.60

200

1000,000

复制开启,写测试

INNODB

597.11

597.11

100

1000,000702.285702.285

复制开启,写测试

INNODB

807.46

807.46

200

1000,000

(2)1000万行表压测    

1000万行的rocksdb引擎跑100s和200s写:

sysbench --threads=4 --time=100 --report-interval=10 --mysql-db=sbrocksdb0 --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_insert.lua --tables=5 --table_size=11000000 run

sysbench --threads=4 --time=200 --report-interval=10 --mysql-db=sbrocksdb0 --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_insert.lua --tables=5 --table_size=11000000 run

 

1000万行的tokudb引擎跑100s和200s写:

sysbench --threads=4 --time=100 --report-interval=10 --mysql-db=sbtokudb0 --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_insert.lua --tables=5 --table_size=11000000 run

sysbench --threads=4 --time=200 --report-interval=10 --mysql-db=sbtokudb0 --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_insert.lua --tables=5 --table_size=11000000 run

 

1000万行的innodb引擎跑100s和200s写:

sysbench --threads=4 --time=100 --report-interval=10 --mysql-db=sbinnodb0 --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_insert.lua --tables=5 --table_size=11000000 run

sysbench --threads=4 --time=200 --report-interval=10 --mysql-db=sbinnodb0 --mysql-host=localhost --mysql-port=3306 --mysql-user=sysbench --mysql-password=123 /usr/share/sysbench/oltp_insert.lua --tables=5 --table_size=11000000 run

 

条件

engine

tps

qps

时间(s)

表行数

平均tps

平均qps

复制开启,写测试

ROCKSDB

431.12

431.12

100

10,000,000

499.935499.935

复制开启,写测试

ROCKSDB

568.75

568.75

200

10,000,000

复制开启,写测试

TokuDB

436.43

436.43

100

10,000,000

553.575553.575

复制开启,写测试

TokuDB

670.72

670.72

200

10,000,000

复制开启,写测试

INNODB

813.51

813.51

100

10,000,000

722.71722.71

复制开启,写测试

INNODB

631.91

631.91

200

10,000,000

10、总结

条件

engine

平均tps

平均qps

复制开启,读写测试

ROCKSDB

175.2175

3504.31

复制开启,读写测试

TokuDB

152.745

3054.9

复制开启,读写测试

INNODB

170.98

3419.535

条件

engine

平均tps

平均qps

复制开启,写测试

ROCKSDB

659.1975659.1975

复制开启,写测试

TokuDB

592.755

592.755

复制开启,写测试

INNODB

712.4975

712.4975

读写测试可以看出3个存储引擎,rocksdb平均tps和qps较高

写测试看出3个存储引擎,innodb平均tps和qps较高

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值