MySQL之sysbench測試

注: sysbench的版本是1.0.14,MySQL的版本是5.7,Linux是Ubuntu16,運行內存是4G,可用的CPU核數是4。   mysql

準備工做:git

  1.     安裝sysbench,各個操做系統上如何安裝sysbench,參考其Gtihub
  2.     我安裝的sysbench版本是1.0.14,sysbench命令參數與網上不少給出的例子不一樣(sysbench-1.0.4版本上不支持"--test=" 或者"--oltp-table-name"),而Github上的sysbench也沒有給出具體的例子說明,因此無奈只能Google,查到Stackoverflow上的有一個,有些sysbench參數就是參考這個Stackoverflow裏面的來的,"sysbench --help"也沒有我想要的參數列表說明。
  3.     建立名爲foo的數據庫,下面要使用這個數據庫。

1.單表10萬行數據測試

1.1 建一個擁有10w行的單表

    在ubuntu命令行中執行List-1中的命令,此時數據庫foo中會新增一張表,表中10w行數據。github

    List-1sql

sysbench /usr/share/sysbench/oltp_read_only.lua --db-driver=mysql --table_size=100000 --mysql-host=localhost  --mysql-db=foo --mysql-user=root --mysql-password=密碼 prepare

1.2 用sysbench的run命令

    在ubuntu命令行中執行List-2中的命令。數據庫

    List-2ubuntu

sysbench /usr/share/sysbench/oltp_read_only.lua --db-driver=mysql --table_size=100000 --mysql-host=localhost  --mysql-db=foo --mysql-user=root --mysql-password=密碼 run

    獲得的結果以下:bash

               

                                                              圖1 run命令的結果多線程

    圖1中顯示: 測試

    "transactions:   4244   (424.29 per sec.)",每秒事物數是424.29;優化

    "queries:          67904  (6788.64 per sec.)",每秒讀寫次數是6788;

    其它數據不太瞭解其表明什麼。

1.3 最後用cleanup命令,清除寫入的數據

    執行List-3中的命令後,foo中剛纔新建的表被刪除了。

    List-3

sysbench /usr/share/sysbench/oltp_read_only.lua --db-driver=mysql --table_size=100000 --mysql-host=localhost  --mysql-db=foo --mysql-user=root --mysql-password=密碼 cleanup

 

2. 建4張表,每張表100萬行

    咱們來測試數據量比較大的狀況,建4張表(原本想建10張表的,虛擬機硬盤不夠),每張表插入100萬條數據

2.1 prepare命令,會自動建表,插入數據

    List-4

sysbench /usr/share/sysbench/oltp_read_only.lua --db-driver=mysql --table_size=1000000 --tables=4 --mysql-host=localhost  --mysql-db=foo --mysql-user=root --mysql-password=密碼 prepare

    以下圖2所示,會多出4張表,

                                                       

                                     圖2 數據庫foo裏面多出4張表,每張表有100萬條記錄

2.2 執行run命令進行測試

    List-5

sysbench /usr/share/sysbench/oltp_read_only.lua --db-driver=mysql --table_size=1000000 --tables=4 --mysql-host=localhost  --mysql-db=foo --mysql-user=root --mysql-password=密碼 run

    結果以下所示

                      

                                                圖3 用sysbench的run命令測試的結果

    圖3中顯示:

    "transactions:    5959   (595.66 per sec.)",每秒事物數是595.66;

    "queries:           95344  (9530.59 per sec.)",每秒讀寫次數是9530.59;

    圖3中的事物數和讀寫次數都比圖1中的高,爲何會這樣就不知道了,我只是將"--table_size=1000000 --tables=4"這倆個參數的值改變了。

2.3 執行sysbench的cleanup命令清除測試數據

    List-6

sysbench /usr/share/sysbench/oltp_read_only.lua --db-driver=mysql --table_size=1000000 --tables=4 --mysql-host=localhost  --mysql-db=foo --mysql-user=root --mysql-password=jmd cleanup

    執行cleanup命令後,再去查看foo數據庫,圖2中的4張表已經不存在了。

    注意:其實上面只是測只讀模式,由於咱們使用的是/usr/share/sysbench/oltp_read_only.lua,即read_only。看圖1和圖3中,SQL statics處,write的值都是0。

    安裝完sysbench後,新增了一些oltp開頭的文件(find / -name oltp*),以下List-7。

    List-7

......
find: ‘/sys/kernel/debug’: Permission denied
find: ‘/root’: Permission denied
/usr/share/sysbench/oltp_delete.lua
/usr/share/sysbench/oltp_update_index.lua
/usr/share/sysbench/oltp_point_select.lua
/usr/share/sysbench/oltp_common.lua
/usr/share/sysbench/tests/include/oltp_legacy
/usr/share/sysbench/tests/include/oltp_legacy/oltp_simple.lua
/usr/share/sysbench/tests/include/oltp_legacy/oltp.lua
/usr/share/sysbench/oltp_read_only.lua
/usr/share/sysbench/oltp_write_only.lua
/usr/share/sysbench/oltp_read_write.lua
/usr/share/sysbench/oltp_insert.lua
/usr/share/sysbench/oltp_update_non_index.lua
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/ssl/private’: Permission denied
......

 

3.測讀寫都存在的模式

    此次使用/usr/share/sysbench/oltp_read_write.lua,即此次的測試,read、write都存在。測試的數據仍是4張表,每張表100萬數據。分別執行以下的List-八、List-9。

    List-8

sysbench /usr/share/sysbench/oltp_read_write.lua --db-driver=mysql --table_size=1000000 --tables=4 --mysql-host=localhost  --mysql-db=foo --mysql-user=root --mysql-password=密碼 prepare

    List-9

sysbench /usr/share/sysbench/oltp_read_write.lua --db-driver=mysql --table_size=1000000 --tables=4 --mysql-host=localhost  --mysql-db=foo --mysql-user=root --mysql-password=密碼 run

    執行List-9中的命令後,獲得以下圖

                                                                                     圖4 

    圖4中顯示:

    "transactions:     2137   (213.64 per sec.)",與圖3對比,減小了385(595-213)。

    "queries:            42740  (4272.71 per sec.)",與圖3對比,減小了5258(9530-4272)。

    與圖3對比,圖4中SQL Statics部分,write的值再也不是0了。

 

注意:

  1.    上面的測試,我沒有指定測試的線程個數,只是單線程去測試的,能夠加上"--num-threas=線程個數"進行多線程測試。
  2.    若是想修改表的個數,修改參數"--tables"的值;若是想修改每張表中數據的條數,修改參數"--table_size"的值。
  3.    後續要思考如何優化數據庫了,好比Buffer大小的設置等。

   也能夠看看這篇,這是Centos上安裝的,sysbench版本是1.1.0。

相關文章
相關標籤/搜索