mysql之 sysbench0.4.12資料庫效能測試
1. 常用選項
在Shell中執行以下命令便可得到sysbench的常用選項資訊:
sysbench --help
上述命令的輸出資訊如下圖所示:
1.1 使用語法
使用sysbench時,可以通過以下語法進行基準測試:
sysbench [通用選項]... --test=<測試名稱> [測試選項]... 命令
1.2 通用選項
-
--num-threads=N
:需要使用的執行緒總數(預設值為1)。 -
--max-requests=N
:請求總數的上限值(預設值為10000)。 -
--max-time=N
:總執行時間的上限值,以秒為單位(預設值為0,表示執行時間無限)。 -
--forced-shutdown=STRING
:在–max-time之後,強制停止之前,需要等待的時間總量(預設值為off)。 -
--thread-stack-size=SIZE
:每個執行緒的棧空間的大小(預設值為32KB)。 -
--init-rng=[on|off]
:是否初始化隨機數生成器(預設值為off)。 -
--seed-rng=N
:隨機數生成器的種子,當為0時忽略(預設值為0)。 -
--tx-rate=N
:目標事務速率(TPS)(預設值為0)。 -
--tx-jitter=N
:目標事務變化率,以毫秒為單位(預設值為0)。 -
--report-interval=N
:指定一個間隔時間,sysbench便會定期地報告測試期間的中間統計結果,以秒為單位。若取值為0,則表示禁用中間報告功能(預設值為0)。 -
--report-checkpoints=[LIST,...]
:在指定的時間點,轉儲完整的統計資料,並且復位所有的計數器。這個選項的引數是一個由逗號分隔的值,表示從測試開始到必須執行報告檢查點時需要花費的時間,以秒為單位。預設禁用報告檢查點。 -
--test=STRING
:需要執行的測試項。 -
--debug=[on|off]
:輸出更多的除錯資訊(預設值為off)。 -
--validate=[on|off]
:在可能的情況下執行有效性檢查。 -
--help=[on|off]
:輸出幫助資訊,然後退出。 -
--version=[on|off]
:輸出版本資訊,然後退出。
1.3 日誌選項
-
--verbosity=N
:日誌的詳細等級。若取值為5,則輸出除錯日誌;若取值為0,則只輸出重要資訊(預設值為4)。 -
--percentile=N
:計算查詢響應時間的百分比等級(預設值為95,表示sysbench會丟棄5%的最長的請求,然後再從剩餘的請求中選擇一個最長的請求)。
1.4 內建測試項
-
fileio
:檔案I/O測試。 -
cpu
:CPU效能測試。 -
memory
:記憶體速度測試。 -
threads
:執行緒子系統效能測試。 -
mutex
:互斥效能測試。 -
oltp
:OLTP(線上事務處理)測試。
1.5 命令
-
prepare
:為某些測試執行一些準備性的工作,例如:為fileio
測試在磁碟上建立必要的檔案,為OLTP
測試填充測試資料庫,等等。 -
run
:執行由--test
選項執行的測試項。 -
cleanup
:在測試結束之後,刪除由測試產生的臨時資料和檔案。 -
help
:顯示由--test
指定的測試項的幫助資訊。 -
version
:輸出sysbench的版本資訊。
2. 檔案I/O測試
在Shell中執行以下命令,可以看到檔案I/O測試(fileio)的測試選項:
sysbench --test=fileio help
fileio
的測試選項如下圖所示:
-
--file-num=N
:需要建立的檔案數量(預設為128個檔案)。 -
--file-block-size=N
:在所有的IO操作中使用的資料塊的大小(預設值為16384)。 -
--file-total-size=SIZE
:需要建立的檔案的總大小(預設值為2G)。 -
--file-test-mode=STRING
:測試模式,可選的值有seqwr(順序寫)、seqrewr(順序重寫)、seqrd(順序讀)、rndrd(隨機讀)、rndwr(隨機寫)、rndrw(隨機讀寫)。 -
--file-io-mode=STRING
:檔案操作模式,可選的值有sync、async、mmap(預設值為sync)。 -
--file-extra-flags=STRING
:在已開啟檔案上使用的額外標誌,可選的值有sync、dsync、direct。 -
--file-fsync-freq=N
:在發出這個引數指定數量的請求之後,執行fsync(),將記憶體中已修改的檔案資料同步至儲存裝置中。若取值為0,則表示不使用fsync()(預設值為100)。 -
--file-fsync-all=[on|off]
:每次寫操作之後,執行fsync()(預設值為off)。 -
--file-fsync-end=[on|off]
:在測試結束時,執行fsync()(預設值為on)。 -
--file-fsync-mode=STRING
:同步資料時,使用哪種方法,可選的值有fsync、fdatasync(預設值為fsync)。 -
--file-merged-requests=N
:如果可能,最多合併由這個引數指定數量的IO請求。若取值為0,則表示不會合並請求(預設值為0)。 -
--file-rw-ratio=N
:進行讀寫綜合測試時,讀寫操作的比率(預設值為1.5)。
3. CPU效能測試
在Shell中執行以下命令,可以看到CPU效能測試(cpu)的測試選項:
sysbench --test=cpu help
cpu
的測試選項如下圖所示:
-
--cpu-max-prime=N
:素數生成器的上限值(預設值為10000)。
4. 記憶體速度測試
在Shell中執行以下命令,可以看到記憶體速度測試(memory)的測試選項:
sysbench --test=memory help
memory
的測試選項如下圖所示:
-
--memory-block-size=SIZE
:測試使用的記憶體塊的大小(預設值為1K)。 -
--memory-total-size=SIZE
:需要傳輸的資料總大小(預設值為100G)。 -
--memory-scope=STRING
:記憶體訪問範圍,可選的值有global、local(預設值為global)。 -
--memory-hugetlb=[on|off]
:從HugeTLB池中分配記憶體(預設值為off)。 -
--memory-oper=STRING
:記憶體操作的型別,可選的值有read、write、none(預設值為write)。 -
--memory-access-mode=STRING
:記憶體訪問模式,可選的值有seq(順序)、rnd(隨機)(預設值為seq)。
5. 執行緒子系統測試
在Shell中執行以下命令,可以看到執行緒子系統測試(threads)的測試選項:
sysbench --test=threads help
threads
的測試選項如下圖所示:
-
--thread-yields=N
:每個請求的執行緒暫停次數(預設值為1000)。 -
--thread-locks=N
:每個執行緒使用的鎖的數量(預設值為8)。
6. 互斥鎖效能測試
在Shell中執行以下命令,可以看到互斥鎖效能測試(mutex)的測試選項:
sysbench --test=mutex help
mutex
的測試選項如下圖所示:
-
--mutex-num=N
:互斥鎖陣列的總大小(預設值為4096)。 -
--mutex-locks=N
:執行每個執行緒時使用的互斥鎖的數量(預設值為50000)。 -
--mutex-loops=N
:在互斥鎖內部執行的空迴圈的數量(預設值為10000)。
7. OLTP測試
在Shell中執行以下命令,可以看到線上事務處理測試(oltp)的測試選項:
sysbench --test=oltp help
oltp
的測試選項如下圖所示:
7.1 OLTP選項
-
--oltp-test-mode=STRING
:可以使用的測試型別,可選的值有simple(簡單)、complex(高階事務)、nontrx(無事務)、sp(儲存過程)(預設值為complex)。 -
--oltp-reconnect-mode=STRING
:重連模式,可選的值有session、transaction、query、random(預設值為session)。 -
--oltp-sp-name=STRING
:那麼--oltp-test-mode=sp
,那麼這個引數可用於指定需要呼叫的儲存過程的名稱。 -
--oltp-read-only=[on|off]
:只生成“讀”查詢(不會修改資料庫)(預設值為off)。 -
--oltp-avoid-deadlocks=[on|off]
:以遞增的順序生成更新關鍵字,這樣可以避免死鎖(預設值為off)。 -
--oltp-skip-trx=[on|off]
:跳過BEGIN/COMMIT語句(預設值為off)。 -
--oltp-range-size=N
:範圍查詢的範圍大小(預設值為100)。 -
--oltp-point-selects=N
:一個事務中的點選擇的數量(預設值為10)。 -
--oltp-use-in-statement=N
:每次查詢時,在10個主鍵的查詢中使用IN語句(預設值為0)。 -
--oltp-simple-ranges=N
:一個事務中的簡單範圍查詢的數量(預設值為1)。 -
--oltp-sum-ranges=N
:一個事務中的求和(SUM)範圍查詢的數量(預設值為1) -
--oltp-order-ranges=N
:一個事務中的排序(ORDER)範圍查詢的數量(預設值為1)。 -
--oltp-distinct-ranges=N
:一個事務中的去重(DISTINCT)範圍查詢的數量(預設值為1)。 -
--oltp-index-updates=N
:一個事務中的索引更新(UPDATE)查詢的數量(預設值為1)。 -
--oltp-non-index-updates=N
:一個事務中的非索引更新(UPDATE)的數量(預設值為1)。 -
--oltp-nontrx-mode=STRING
:非事務測試的模式,可選的值有select、update_key、update_nokey、insert、delete(預設值為select)。 -
--oltp-auto-inc=[on|off]
:測試表的id列是否應當使用AUTO_INCREMENT(主鍵自增長)功能(預設值為on)。 -
--oltp-connect-delay=N
:在連線至資料庫之後,進入睡眠的時間,以毫秒為單位(預設值為10000)。 -
--oltp-user-delay-min=N
:在每次請求之後,進入睡眠的最小時間,以毫秒為單位(預設值為0)。 -
--oltp-user-delay-max=N
:在每次請求之後,進入睡眠的最大時間,以毫秒為單位(預設值為0)。 -
--oltp-table-name=STRING
:測試表的名稱(預設值為sbtest)。 -
--oltp-table-size=N
:測試表中的記錄數量(預設值為10000)。 -
--oltp-dist-type=STRING
:隨機數的分佈方式,可選的值有uniform(均勻分佈)、gaussian(高斯分佈)、special(特殊分佈)(預設值為special)。 -
--oltp-dist-iter=N
:生成數字時需要使用的迭代次數(預設值為12)。 -
--oltp-dist-pct=N
:被當作是“特殊值”的數值的百分比,只用於隨機數的特殊分佈方式(預設值為1)。 -
--oltp-dist-res=N
:需要使用的“特殊值”的百分比,只用於隨機數的特殊分佈方式(預設值為1)。 -
--oltp-point-select-mysql-handler=[on|off]
:當進行點選擇時,使用MySQL HANDLER(預設值為off)。 -
--oltp-point-select-all-cols=[on|off]
:當進行點選擇查詢時,選擇所有的列(預設值為off)。 -
--oltp-secondary=[on|off]
:使用二級索引,而不是主鍵(PRIMARY)索引(預設值為off)。 -
--oltp-num-partitions=N
:測試表使用的分割槽的數量(預設值為0)。 -
--oltp-num-tables=N
:測試表的數量(預設值為1)。
7.2 通用資料庫選項
-
--db-driver=STRING
:指定需要使用的資料庫驅動(通過1.5節的help
命令,可以看到可用的驅動列表)。 -
--db-ps-mode=STRING
:如果選用的資料庫驅動支援預處理語句(Prepared Statement) API,那麼sysbench就會在所有查詢中儘可能地使用服務端的預處理語句。否則,就會使用客戶端(或模擬端)的預處理語句。即使當PS API可用時,這個選項也允許強制使用模擬方式。可選的值有auto、disable(預設值為auto)。
7.3 內建資料庫驅動
-
mysql
:MySQL驅動程式。
注意:
由於本文只針對MySQL進行OLTP測試,此處的驅動列表只有MySQL的驅動程式。實際上,除了MySQL之外,sysbench還支援Oracle、PostgreSQL等資料庫。
7.4 MySQL選項
-
--mysql-host=[LIST,...]
:MySQL伺服器的主機名或IP地址(預設值為localhost)。 -
--mysql-port=N
:MySQL伺服器的埠號(預設值為3306)。 -
--mysql-socket=STRING
:MySQL的套接字檔案。 -
--mysql-user=STRING
:MySQL的使用者名稱(預設值為sbtest)。 -
--mysql-password=STRING
:MySQL的登入密碼。 -
--mysql-db=STRING
:MySQL的資料庫名(預設值為sbtest)。 -
--mysql-table-engine=STRING
:測試表使用的儲存引擎,可選的值有myisam、innodb、bdb、heap、ndbcluster、federated(預設值為innodb)。 -
--mysql-engine-trx=STRING
:是否使用支援事務的儲存引擎,可選的值有yes、no、auto(預設值為auto)。 -
--mysql-ssl=[on|off]
:若客戶端程式庫支援SSL連線,則使用(預設值為off)。 -
--myisam-max-rows=N
:MyISAM表能夠支援的最大行數(預設值為1000000)。 -
--mysql-create-options=STRING
:傳遞給CREATE TABLE
語句的額外選項。
三、sysbench使用示例
1. 檔案I/O測試
在Shell中執行以下命令:
# prepare階段:
sysbench --test=fileio --num-threads=16 --file-total-size=2G --file-test-mode=rndrw prepare
# run階段:
sysbench --test=fileio --num-threads=20 --file-total-size=2G --file-test-mode=rndrw run
# cleanup階段:
sysbench --test=fileio --num-threads=20 --file-total-size=2G --file-test-mode=rndrw cleanup
上述命令表示:
-
在測試準備階段,使用16個執行緒,建立的測試檔案總大小為2GB,檔案測試模式為隨機讀寫。
-
在測試執行階段,使用20個執行緒,測試檔案總大小為2GB,檔案測試模式為隨機讀寫。
-
在測試清除階段,使用20個執行緒,測試檔案總大小為2GB,檔案測試模式為隨機讀寫。
測試結果如下圖所示:
-
在測試準備階段,由下圖可知,建立了128個測試檔案,每個檔案大小都為16MB,檔案總大小為2GB,寫入速度為43.61MB/s:
-
在測試執行階段,由下圖可知,隨機I/O請求的次數為10000次,讀寫操作的比例為1.50,使用fsync()同步記憶體和硬碟的資料,每隔100個請求同步一次:
-
在測試清除階段,刪除所有測試檔案:
2. CPU效能測試
在Shell中執行以下命令:
sysbench --test=cpu --cpu-max-prime=2000 run
上述命令表示:
-
素數生成器的上限值為2000。
測試結果如下圖所示:
3. 記憶體速度測試
在Shell中執行以下命令:
sysbench --test=memory --memory-block-size=8K --memory-total-size=1G run
上述命令表示:
-
用於測試的記憶體塊大小為8KB,用於測試記憶體的總資料大小為1GB。
測試結果如下圖所示:
4. 執行緒子系統測試
在Shell中執行以下命令:
sysbench --test=threads --num-threads=500 --thread-yields=100 --thread-locks=4 run
上述命令表示:
-
用於測試的執行緒數量為500個,每個請求的執行緒暫停次數為100次,每個執行緒具有4個鎖。
測試結果如下圖所示:
5. 互斥鎖效能測試
在Shell中執行以下命令:
sysbench --test=mutex --num-threads=100 --mutex-num=1000 --mutex-locks=100000 --mutex-loops=10000 run
上述命令表示:
-
用於測試的執行緒數量為100個,互斥鎖陣列的的大小為1000,每個執行緒執行的互斥鎖次數為100000次,互斥鎖內部執行的空迴圈次數為10000次。
測試結果如下圖所示:
6. OLTP測試
在Shell中執行以下命令:
# prepare階段:
sysbench --test=oltp --mysql-table-engine=innodb --mysql-host=localhost --mysql-db=test --oltp-table-size=500000 --mysql-user=root --mysql-password=password prepare
# run階段:
sysbench --num-threads=16 --test=oltp --mysql-table-engine=innodb --mysql-host=localhost --mysql-db=test --oltp-table-size=500000 --mysql-user=root --mysql-password=password run
# cleanup階段:
sysbench --num-threads=16 --test=oltp --mysql-table-engine=innodb --mysql-host=localhost --mysql-db=test --oltp-table-size=500000 --mysql-user=root --mysql-password=password cleanup
上述命令表示:
-
在測試準備階段,使用的儲存引擎為InnoDB,MySQL伺服器為本機,MySQL的資料庫名為test,測試表的記錄總數為500000條,MySQL的使用者名稱為root,MySQL的登入密碼為password。
-
在測試執行階段,使用的執行緒數量為16個,使用的儲存引擎為InnoDB,MySQL伺服器為本機,MySQL的資料庫名為test,測試表的記錄總數為500000條,MySQL的使用者名稱為root,MySQL的登入密碼為password。
-
在測試清除階段,使用的執行緒數量為16個,使用的儲存引擎為InnoDB,MySQL伺服器為本機,MySQL的資料庫名為test,測試表的記錄總數為500000條,MySQL的使用者名稱為root,MySQL的登入密碼為password。
測試結果如下圖所示:
-
在測試準備階段,由下圖可知,建立了一個名為sbtest的測試表,這張表中有500000條記錄:
-
在測試執行階段,由下圖可知,使用了16個執行緒,生成資料的方式採用特殊分佈(12次迭代,在75%的情況下返回生成的1%的值),開始事務時使用BEGIN語句,主鍵採用自增長模式,OLTP測試的最大請求數量為10000次:
-
在測試清除階段,清除測試表和測試資料:
轉自:
sysbench使用教程 - 今日頭條(TouTiao.com)
http://toutiao.com/a6319391414447046914/?tt_from=mobile_qq&utm_campaign=client_share&app=news_article&utm_source=mobile_qq&iid=5188200538&utm_medium=toutiao_ios
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2217765/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Go 單元測試之Mysql資料庫整合測試GoMySql資料庫
- 效能測試之資料庫監控分析工具PMM資料庫
- 通過sysbench工具實現MySQL資料庫的效能測試MySql資料庫
- 效能測試之資料庫監控分析工具Grafana+Prometheus資料庫GrafanaPrometheus
- MySQL 資料庫生成 10000 條測試資料MySql資料庫
- 資料庫效能測試:sysbench用法詳解資料庫
- 【Mysql】資料庫索引,百萬資料測試索引效果MySql資料庫索引
- MySQL製作具有千萬條測試資料的測試庫MySql
- 軟體測試之資料庫測試技術系列七資料庫
- MySQL預設資料庫之mysql庫MySql資料庫
- 軟體測試之資料庫系列五資料庫
- 軟體測試之資料庫系列四資料庫
- 軟體測試之資料庫系列三資料庫
- 軟體測試之資料庫系列二資料庫
- 軟體測試之資料庫系列一資料庫
- 軟體測試之資料庫系列六資料庫
- 5 測量資料庫效能資料庫
- MySQL資料庫效能最佳化MySql資料庫
- MySQL資料庫之索引MySql資料庫索引
- 大資料測試與 傳統資料庫測試大資料資料庫
- 微服務測試之效能測試微服務
- 效能測試之測試指標指標
- mysql簡單效能測試MySql
- 資料庫測試指南資料庫
- JAVA面試:mysql資料庫Java面試MySql資料庫
- MYSQL 效能測試方法 - 基準測試(benchmarking)MySql
- jmeter之效能測試JMeter
- mysql 資料庫效能分析工具簡介MySql資料庫
- 正式開源金融資料庫效能測試工具 Detabench-T 。資料庫
- 測試開發之效能篇-效能測試設計
- Python之 操作 MySQL 資料庫PythonMySql資料庫
- clickhouse 億級資料效能測試
- Mysql效能壓測、Binlog恢復資料MySql
- MySQL預設資料庫之sys庫MySql資料庫
- 新潮測試平臺之效能測試
- 功能測試之存量資料新與增資料測試
- PHP 單元測試與資料庫測試PHP資料庫
- 2.4. 測試資料庫資料庫