最近在研究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的內部機制不了解,所以不知道到底是為什么會出現這種現象,希望各位不吝賜教,謝謝!
uj5u.com熱心網友回復:
熱資料<資料庫快取 快取命中高 反之命中低就需要去磁盤查找資料uj5u.com熱心網友回復:
我覺得不是快取命中率的問題,因為雖說是隨機讀寫,但是select的陳述句基本都差不多,我測驗了很多次,每次都是磁盤讀很高;
根據我的理解,如果是因為快取命中率的原因,那么后面幾次相同的測驗,磁盤讀應該會相應的降低,但是并沒有。。。
uj5u.com熱心網友回復:
查看資料庫組態檔中對資料庫快取的配置是多大。一般好像都是128K。轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/81814.html
標籤:MySQL
上一篇:MySQL報錯
