Chinaunix

标题: 使用sysbench对mysql进行大数据量随机读写压测时,磁盘读非常高 [打印本页]

作者: akarin123    时间: 2016-08-02 10:24
标题: 使用sysbench对mysql进行大数据量随机读写压测时,磁盘读非常高
最近在研究innodb_flush_log_at_trx_commit这个配置项对mysql读写性能的影响。
压测前使用sysbench建了3张表,表结构完全相同,只是表的数据量有差异
t500:500W数据量
t2k:2000W数据量
t5000:5000W数据量

建完表后,使用如下语句对数据库进行压测:
sysbench --test=oltp --oltp-table-size=5000000 --oltp-read-only=off --init-rng=on --num-threads=8 --max-requests=0 --oltp-dist-type=uniform --max-time=150 --oltp-table-name=t500 --mysql-db=test --mysql-user=root --mysql-socket=/data/mysql/test/3333/mysql.sock run > /tmp/result500.log

sysbench --test=oltp --oltp-table-size=20000000 --oltp-read-only=off --init-rng=on --num-threads=8 --max-requests=0 --oltp-dist-type=uniform --max-time=150 --oltp-table-name=t2k--mysql-db=test --mysql-user=root --mysql-socket=/data/mysql/test/3333/mysql.sock run > /tmp/result2k.log

sysbench --test=oltp --oltp-table-size=50000000 --oltp-read-only=off --init-rng=on --num-threads=8 --max-requests=0 --oltp-dist-type=uniform --max-time=150 --oltp-table-name=t5000 --mysql-db=test --mysql-user=root --mysql-socket=/data/mysql/test/3333/mysql.sock run > /tmp/result5000.log

下面为部分压测汇总结果的截图:





可以发现当数据量为500W和2000W的时候,速度明显是磁盘写>磁盘读,但当数据量达到5000W的时候,却发现磁盘读变的非常高,而磁盘写却变的非常低
由于本人刚接触mysql不久,对mysql的内部机制不了解,所以不知道到底是为什么会出现这种现象,希望各位不吝赐教,谢谢!
作者: devilkin0312    时间: 2016-08-02 16:42
innodb buffer pool 设置是多少,对比下你的5kw表的数据大小,可以判断是不是buffer过小造成的。
作者: akarin123    时间: 2016-08-02 17:06
回复 2# devilkin0312


    innodb_buffer_pool_size = 6G
服务器总内存是16G,mysql设置的缓存大小是6G
作者: akarin123    时间: 2016-08-02 17:32
回复 2# devilkin0312


我又看了下各个测试表的大小,确实t5000的表大于配置的innodb_buffer_pool_size,表t5000大概10G,应该就是这个原因了,十分感谢!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2