最近在研究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.logsysbench --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.logsysbench --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的内部机制不了解,所以不知道到底是为什么会出现这种现象,希望各位不吝赐教,谢谢!