您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關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
看完上述內容,你們對mysql中sysbench0.4.12數據庫性能測試有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。