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.225 | 3544.44 |
复制开启,读写测试 |
ROCKSDB |
161.48 |
3229.54 |
200 |
1000,000 | ||
复制开启,读写测试 |
TokuDB |
189.84 |
3796.82 |
100 |
1000,000 | 160.88 | 3217.63 |
复制开启,读写测试 |
TokuDB |
131.92 |
2638.44 |
200 |
1000,000 | ||
复制开启,读写测试 |
INNODB |
167.81 |
3356.13 |
100 |
1000,000 | 180.245 | 3604.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.21 | 3464.18 |
复制开启,读写测试 |
ROCKSDB |
173.95 |
3479.00 |
200 |
10,000,000 | ||
复制开启,读写测试 |
TokuDB |
150.17 |
3003.34 |
100 |
10,000,000 | 144.61 | 2892.17 |
复制开启,读写测试 |
TokuDB |
139.05 |
2780.99 |
200 |
10,000,000 | ||
复制开启,读写测试 |
INNODB |
131.86 |
2637.12 |
100 |
10,000,000 | 161.715 | 3234.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.46 | 818.46 |
复制开启,写测试 |
ROCKSDB |
733.41 |
733.41 |
200 |
1000,000 | ||
复制开启,写测试 |
TokuDB |
467.27 |
467.27 |
100 |
1000,000 | 631.935 | 631.935 |
复制开启,写测试 |
TokuDB |
796.60 |
796.60 |
200 |
1000,000 | ||
复制开启,写测试 |
INNODB |
597.11 |
597.11 |
100 |
1000,000 | 702.285 | 702.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.935 | 499.935 |
复制开启,写测试 |
ROCKSDB |
568.75 |
568.75 |
200 |
10,000,000 |
||
复制开启,写测试 |
TokuDB |
436.43 |
436.43 |
100 |
10,000,000 |
553.575 | 553.575 |
复制开启,写测试 |
TokuDB |
670.72 |
670.72 |
200 |
10,000,000 |
||
复制开启,写测试 |
INNODB |
813.51 |
813.51 |
100 |
10,000,000 |
722.71 | 722.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.1975 | 659.1975 |
复制开启,写测试 |
TokuDB |
592.755 |
592.755 |
复制开启,写测试 |
INNODB |
712.4975 |
712.4975 |
读写测试可以看出3个存储引擎,rocksdb平均tps和qps较高
写测试看出3个存储引擎,innodb平均tps和qps较高
rocksdb、tokudb、innodb引擎性能测试相关推荐
- mysql引擎测试_MySQL MyISAM引擎和InnoDB引擎的性能测试
以下的文章主要介绍的是MySQL MyISAM引擎和InnoDB引擎的性能测试,MyISAM引擎和InnoDB引擎在实际操作中是经常运用到的,以下的文章就是对MySQL MyISAM引擎和InnoDB ...
- tokuDB存储引擎的安装、配置、使用及注意事项
原文:http://blog.csdn.net/lidan3959/article/details/35985569 平台支持: TokuDB 只能在 64-bit Linux 下使用. 最小内存要求 ...
- 阿里云mysql数据库引擎_在阿里云RDS数据库服务器中将MySQL InnoDB引擎表转为压缩格式...
今年以来将我们以前托管或者租用的服务器全面转向阿里云,除了采用ECS服务器以外,还有一项重要的是采用了RDS数据库服务器,这对于服务的稳定性.各项指标的监控.调优等都有帮助. 不过随着近期更多数据库转 ...
- 将MySQL去重操作优化到极致之三弹连发(三):用rocksdb替代innodb
前面已经建立了索引,优化了SQL语句,并将单线程变为多线程并行执行,去重时间由最初的35秒优化为3.5秒,是不是就到此为止呢?吴老师又使用了rocksdb存储引擎替代innodb的方法.这里有必要交代 ...
- [杂记] 新年物语关于Mysql引擎性能测试
顺便看到一个Mysql的测试文章,感觉还满有参考价值的,于是记录下来以便参考. 以下是一个MySQL中MyISAM引擎与InnoDB引擎性能简单性能测试: [硬件配置] CPU : AMD2500+ ...
- mysql 5.6 innodb_MYSQL 5.6中禁用INNODB引擎
并不是所有人都需要INNODB引擎,虽然它弥补了MYSQL缺乏事务支持的毛病,但是它的磁盘性能一直是让人比较担忧的. 另外比较老的PHP系统,大多是采用MYISAM引擎在MYSQL建表,似乎INNOD ...
- Linux环境编译安装Mysql以及补装innodb引擎方法
mysql安装 5.6以后可能会收费,所以选择5.1 以下从台湾中山大学镜像下载 1.首先要安装C++编译环境 # yum install gcc-c++ 2.下载解压 # wget http:// ...
- 工作中InnoDB引擎数据库主从复制同步心得
近期将公司的MySQL架构升级了,由原先的一主多从换成了DRBD+Heartbeat双主多从,正好手上有一个电子商务网站新项目也要上线了,用的是DRBD+Heartbeat双主一从,由于此过程还是有别 ...
- mysql innodb引擎丢失_【MySQL】InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据...
注意!此方法只适用于innodb_file_per_table独立表空间的InnoDB实例. 此种方法可以恢复ibdata文件被误删.被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所 ...
最新文章
- 【组合数学】递推方程 ( 无重根递推方程求解实例 | 无重根下递推方程求解完整过程 )
- centos安装mysql5.7.19_Linux下Centos7安装Mysql5.7.19的详细教程
- vue通过监听实现相同路径的视图重新加载
- 厉害了,教你用 Spring Boot 控制并发登录人数
- 【图文解释】快速排序算法
- win7 管理iphone日历_大师给你传授win7系统安装桌面日历的途径
- devexpress实现单元格根据条件显示不同的样式(颜色、字体、对齐方式,大小等)...
- 如何实现BootStrapTable的动态表格
- Redis只能做缓存?太out了!
- sigmoid激活函数
- java电子贺卡_基于JAVA WEB的电子贺卡,请帖制作系统
- java发送lrc文件格式_lrc歌词文件格式
- Win11文件资源管理器有明显卡顿,微软承诺在2022年提高性能
- 用OpenCV实现简单的泊松融合
- 企业微信自动打卡脚本
- 建模方法(十)-灰色预测模型GM(1,1)
- vnc 字体设置_VPS开启VNC服务,并解决中文乱码的方法——ubuntu系统
- Linux -- vim编辑器使用教程
- 好用的python打包软件_Python打包exe文件方法汇总【4种】
- sql定义表时,int(10)是什么意思?
热门文章
- 极简的欧洲史-读书笔记
- 总说未雨绸缪,一觉醒来窗外已是漫天飞雪
- 艾宾浩斯遗忘曲线PHP,【干货】~~~艾宾浩斯遗忘曲线~~~
- CRM准确数据分析,把控客户需求
- prometheus监控windows系统
- 科技系列 - 1 :判断键盘上的某个键按下 :KEY_DOWN
- Keil5出现Error: Flash Download failed - Could not load file ‘ces \ces.axf‘的解决方法
- 什么蓝牙耳机玩游戏超低延迟?玩游戏超低延迟的蓝牙耳机推荐
- python读取图片路径_Python小列子-读取照片位置
- 2044:【例5.12】回文字串