很久前是用 tpcc-mysql 測試 MySQL 效能:「 用 tpcc-mysql 測試 LSI 的 Nytro MegaRAID NMR 8100-4i 」,最近剛好又有測試需求,想說拿來學個新玩具測試,就想到 sysbench 的 oltp 測試。
先用 Google 找了找測試的方式,appleboy 之前寫的「 Sysbench 測試 Percona XtraDB Server 效能 」算是還不錯的文件,就拿來當起點了。
我是拿 AWS 測試,主要是因為幾乎所有的效能都是固定的,這樣測出來才有意義。
Amazon EC2 用 c4.8xlarge,用 10Gbps 網路測試會比較準確一點。硬碟的部份是掛上 100GB 的 SSD 硬碟,如果是測 I/O bound 的人就選擇有固定 IOPS 的 Provisioned 版本,但我這次測的都是 CPU bound,就只選用 General 版本了。
跑起 Ubuntu 14.04 後直接用 apt-get install sysbench
就可以裝起來了。
Percona 的 apt repository 設定可以參考官方的「 Installing Percona Server on Debian and Ubuntu 」這篇文章。設好後要裝什麼版本測試就是自己的選擇了。
都裝好後,測試的方式是先用 prepare 塞資料,再用 run 測試。
這是 prepare 部份的指令:(粗體字的 x 需要帶入自己對應的參數)
sysbench --test=oltp --db-driver=mysql --mysql-engine-trx=yes --mysql-table-engine=innodb --mysql-host=x --mysql-user=x --mysql-password=x --oltp-auto-inc=off --test=/usr/share/doc/sysbench/tests/db/oltp.lua --oltp-table-size=10000000 prepare
這是 run 部份的指令,我這邊用了 --oltp-read-only=on
只測 read transaction 的速度:
sysbench --test=oltp --db-driver=mysql --mysql-engine-trx=yes --mysql-table-engine=innodb --mysql-host=x --mysql-user=x --mysql-password=x --oltp-auto-inc=off --test=/usr/share/doc/sysbench/tests/db/oltp.lua --oltp-table-size=10000000 --oltp-read-only=on --num-threads=256 --report-interval=5 --max-time=60 --max-requests=0 run
大致上就是這樣測,然後用 gnuplot 畫圖。