使用sysbench对mysql进行大数据量随机读写压测时,磁盘读非常高

lvchenotl 2016-08-02 10:27:46
最近在研究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的内部机制不了解,所以不知道到底是为什么会出现这种现象,希望各位不吝赐教,谢谢!
...全文
901 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pangxiaoling5 2018-09-19
  • 打赏
  • 举报
回复
查看数据库配置文件中对数据库缓存的配置是多大。一般好像都是128K。
lvchenotl 2016-08-02
  • 打赏
  • 举报
回复
引用 1 楼 rucypli 的回复:
热数据<数据库缓存 缓存命中高 反之命中低就需要去磁盘查找数据
我觉得不是缓存命中率的问题,因为虽说是随机读写,但是select的语句基本都差不多,我测试了很多次,每次都是磁盘读很高; 根据我的理解,如果是因为缓存命中率的原因,那么后面几次相同的测试,磁盘读应该会相应的降低,但是并没有。。。
rucypli 2016-08-02
  • 打赏
  • 举报
回复
热数据<数据库缓存 缓存命中高 反之命中低就需要去磁盘查找数据

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧