溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql中sysbench0.4.12數(shù)據(jù)庫性能測試

發(fā)布時間:2021-11-08 17:22:10 來源:億速云 閱讀:102 作者:柒染 欄目:建站服務器

今天就跟大家聊聊有關mysql中sysbench0.4.12數(shù)據(jù)庫性能測試,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

1. 常用選項

在Shell中運行以下命令便可得到sysbench的常用選項信息:

sysbench --help

上述命令的輸出信息如下圖所示:

mysql中sysbench0.4.12數(shù)據(jù)庫性能測試

1.1 使用語法

使用sysbench時,可以通過以下語法進行基準測試:

sysbench [通用選項]... --test=<測試名稱> [測試選項]... 命令

1.2 通用選項

  • --num-threads=N:需要使用的線程總數(shù)(默認值為1)。

  • --max-requests=N:請求總數(shù)的上限值(默認值為10000)。

  • --max-time=N:總執(zhí)行時間的上限值,以秒為單位(默認值為0,表示執(zhí)行時間無限)。

  • --forced-shutdown=STRING:在–max-time之后,強制停止之前,需要等待的時間總量(默認值為off)。

  • --thread-stack-size=SIZE:每個線程的??臻g的大?。J值為32KB)。

  • --init-rng=[on|off]:是否初始化隨機數(shù)生成器(默認值為off)。

  • --seed-rng=N:隨機數(shù)生成器的種子,當為0時忽略(默認值為0)。

  • --tx-rate=N:目標事務速率(TPS)(默認值為0)。

  • --tx-jitter=N:目標事務變化率,以毫秒為單位(默認值為0)。

  • --report-interval=N:指定一個間隔時間,sysbench便會定期地報告測試期間的中間統(tǒng)計結果,以秒為單位。若取值為0,則表示禁用中間報告功能(默認值為0)。

  • --report-checkpoints=[LIST,...]:在指定的時間點,轉儲完整的統(tǒng)計數(shù)據(jù),并且復位所有的計數(shù)器。這個選項的參數(shù)是一個由逗號分隔的值,表示從測試開始到必須執(zhí)行報告檢查點時需要花費的時間,以秒為單位。默認禁用報告檢查點。

  • --test=STRING:需要運行的測試項。

  • --debug=[on|off]:輸出更多的調(diào)試信息(默認值為off)。

  • --validate=[on|off]:在可能的情況下執(zhí)行有效性檢查。

  • --help=[on|off]:輸出幫助信息,然后退出。

  • --version=[on|off]:輸出版本信息,然后退出。

1.3 日志選項

  • --verbosity=N:日志的詳細等級。若取值為5,則輸出調(diào)試日志;若取值為0,則只輸出重要信息(默認值為4)。

  • --percentile=N:計算查詢響應時間的百分比等級(默認值為95,表示sysbench會丟棄5%的最長的請求,然后再從剩余的請求中選擇一個最長的請求)。

1.4 內(nèi)建測試項

  • fileio:文件I/O測試。

  • cpu:CPU性能測試。

  • memory:內(nèi)存速度測試。

  • threads:線程子系統(tǒng)性能測試。

  • mutex:互斥性能測試。

  • oltp:OLTP(在線事務處理)測試。

1.5 命令

  • prepare:為某些測試執(zhí)行一些準備性的工作,例如:為fileio測試在磁盤上創(chuàng)建必要的文件,為OLTP測試填充測試數(shù)據(jù)庫,等等。

  • run:運行由--test選項執(zhí)行的測試項。

  • cleanup:在測試結束之后,刪除由測試產(chǎn)生的臨時數(shù)據(jù)和文件。

  • help:顯示由--test指定的測試項的幫助信息。

  • version:輸出sysbench的版本信息。

2. 文件I/O測試

在Shell中運行以下命令,可以看到文件I/O測試(fileio)的測試選項:

sysbench --test=fileio help

fileio的測試選項如下圖所示:

mysql中sysbench0.4.12數(shù)據(jù)庫性能測試

  • --file-num=N:需要創(chuàng)建的文件數(shù)量(默認為128個文件)。

  • --file-block-size=N:在所有的IO操作中使用的數(shù)據(jù)塊的大?。J值為16384)。

  • --file-total-size=SIZE:需要創(chuàng)建的文件的總大?。J值為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:在發(fā)出這個參數(shù)指定數(shù)量的請求之后,執(zhí)行fsync(),將內(nèi)存中已修改的文件數(shù)據(jù)同步至存儲設備中。若取值為0,則表示不使用fsync()(默認值為100)。

  • --file-fsync-all=[on|off]:每次寫操作之后,執(zhí)行fsync()(默認值為off)。

  • --file-fsync-end=[on|off]:在測試結束時,執(zhí)行fsync()(默認值為on)。

  • --file-fsync-mode=STRING:同步數(shù)據(jù)時,使用哪種方法,可選的值有fsync、fdatasync(默認值為fsync)。

  • --file-merged-requests=N:如果可能,最多合并由這個參數(shù)指定數(shù)量的IO請求。若取值為0,則表示不會合并請求(默認值為0)。

  • --file-rw-ratio=N:進行讀寫綜合測試時,讀寫操作的比率(默認值為1.5)。

3. CPU性能測試

在Shell中運行以下命令,可以看到CPU性能測試(cpu)的測試選項:

sysbench --test=cpu help

cpu的測試選項如下圖所示:

mysql中sysbench0.4.12數(shù)據(jù)庫性能測試

  • --cpu-max-prime=N:素數(shù)生成器的上限值(默認值為10000)。

4. 內(nèi)存速度測試

在Shell中運行以下命令,可以看到內(nèi)存速度測試(memory)的測試選項:

sysbench --test=memory help

memory的測試選項如下圖所示:

mysql中sysbench0.4.12數(shù)據(jù)庫性能測試

  • --memory-block-size=SIZE:測試使用的內(nèi)存塊的大小(默認值為1K)。

  • --memory-total-size=SIZE:需要傳輸?shù)臄?shù)據(jù)總大?。J值為100G)。

  • --memory-scope=STRING:內(nèi)存訪問范圍,可選的值有global、local(默認值為global)。

  • --memory-hugetlb=[on|off]:從HugeTLB池中分配內(nèi)存(默認值為off)。

  • --memory-oper=STRING:內(nèi)存操作的類型,可選的值有read、write、none(默認值為write)。

  • --memory-access-mode=STRING:內(nèi)存訪問模式,可選的值有seq(順序)、rnd(隨機)(默認值為seq)。

5. 線程子系統(tǒng)測試

在Shell中運行以下命令,可以看到線程子系統(tǒng)測試(threads)的測試選項:

sysbench --test=threads help

threads的測試選項如下圖所示:

mysql中sysbench0.4.12數(shù)據(jù)庫性能測試

  • --thread-yields=N:每個請求的線程暫停次數(shù)(默認值為1000)。

  • --thread-locks=N:每個線程使用的鎖的數(shù)量(默認值為8)。

6. 互斥鎖性能測試

在Shell中運行以下命令,可以看到互斥鎖性能測試(mutex)的測試選項:

sysbench --test=mutex help

mutex的測試選項如下圖所示:

mysql中sysbench0.4.12數(shù)據(jù)庫性能測試

  • --mutex-num=N:互斥鎖數(shù)組的總大?。J值為4096)。

  • --mutex-locks=N:執(zhí)行每個線程時使用的互斥鎖的數(shù)量(默認值為50000)。

  • --mutex-loops=N:在互斥鎖內(nèi)部執(zhí)行的空循環(huán)的數(shù)量(默認值為10000)。

7. OLTP測試

在Shell中運行以下命令,可以看到在線事務處理測試(oltp)的測試選項:

sysbench --test=oltp help

oltp的測試選項如下圖所示:

mysql中sysbench0.4.12數(shù)據(jù)庫性能測試

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,那么這個參數(shù)可用于指定需要調(diào)用的存儲過程的名稱。

  • --oltp-read-only=[on|off]:只生成“讀”查詢(不會修改數(shù)據(jù)庫)(默認值為off)。

  • --oltp-avoid-deadlocks=[on|off]:以遞增的順序生成更新關鍵字,這樣可以避免死鎖(默認值為off)。

  • --oltp-skip-trx=[on|off]:跳過BEGIN/COMMIT語句(默認值為off)。

  • --oltp-range-size=N:范圍查詢的范圍大?。J值為100)。

  • --oltp-point-selects=N:一個事務中的點選擇的數(shù)量(默認值為10)。

  • --oltp-use-in-statement=N:每次查詢時,在10個主鍵的查找中使用IN語句(默認值為0)。

  • --oltp-simple-ranges=N:一個事務中的簡單范圍查詢的數(shù)量(默認值為1)。

  • --oltp-sum-ranges=N:一個事務中的求和(SUM)范圍查詢的數(shù)量(默認值為1)

  • --oltp-order-ranges=N:一個事務中的排序(ORDER)范圍查詢的數(shù)量(默認值為1)。

  • --oltp-distinct-ranges=N:一個事務中的去重(DISTINCT)范圍查詢的數(shù)量(默認值為1)。

  • --oltp-index-updates=N:一個事務中的索引更新(UPDATE)查詢的數(shù)量(默認值為1)。

  • --oltp-non-index-updates=N:一個事務中的非索引更新(UPDATE)的數(shù)量(默認值為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:在連接至數(shù)據(jù)庫之后,進入睡眠的時間,以毫秒為單位(默認值為10000)。

  • --oltp-user-delay-min=N:在每次請求之后,進入睡眠的最小時間,以毫秒為單位(默認值為0)。

  • --oltp-user-delay-max=N:在每次請求之后,進入睡眠的最大時間,以毫秒為單位(默認值為0)。

  • --oltp-table-name=STRING:測試表的名稱(默認值為sbtest)。

  • --oltp-table-size=N:測試表中的記錄數(shù)量(默認值為10000)。

  • --oltp-dist-type=STRING:隨機數(shù)的分布方式,可選的值有uniform(均勻分布)、gaussian(高斯分布)、special(特殊分布)(默認值為special)。

  • --oltp-dist-iter=N:生成數(shù)字時需要使用的迭代次數(shù)(默認值為12)。

  • --oltp-dist-pct=N:被當作是“特殊值”的數(shù)值的百分比,只用于隨機數(shù)的特殊分布方式(默認值為1)。

  • --oltp-dist-res=N:需要使用的“特殊值”的百分比,只用于隨機數(shù)的特殊分布方式(默認值為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:測試表使用的分區(qū)的數(shù)量(默認值為0)。

  • --oltp-num-tables=N:測試表的數(shù)量(默認值為1)。

7.2 通用數(shù)據(jù)庫選項

  • --db-driver=STRING:指定需要使用的數(shù)據(jù)庫驅動(通過1.5節(jié)的help命令,可以看到可用的驅動列表)。

  • --db-ps-mode=STRING:如果選用的數(shù)據(jù)庫驅動支持預處理語句(Prepared Statement) API,那么sysbench就會在所有查詢中盡可能地使用服務端的預處理語句。否則,就會使用客戶端(或模擬端)的預處理語句。即使當PS API可用時,這個選項也允許強制使用模擬方式。可選的值有auto、disable(默認值為auto)。

7.3 內(nèi)建數(shù)據(jù)庫驅動

  • mysql:MySQL驅動程序。

注意:

由于本文只針對MySQL進行OLTP測試,此處的驅動列表只有MySQL的驅動程序。實際上,除了MySQL之外,sysbench還支持Oracle、PostgreSQL等數(shù)據(jù)庫。

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的數(shù)據(jù)庫名(默認值為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表能夠支持的最大行數(shù)(默認值為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個線程,創(chuàng)建的測試文件總大小為2GB,文件測試模式為隨機讀寫。

  • 在測試運行階段,使用20個線程,測試文件總大小為2GB,文件測試模式為隨機讀寫。

  • 在測試清除階段,使用20個線程,測試文件總大小為2GB,文件測試模式為隨機讀寫。

測試結果如下圖所示:

  • 在測試準備階段,由下圖可知,創(chuàng)建了128個測試文件,每個文件大小都為16MB,文件總大小為2GB,寫入速度為43.61MB/s:

mysql中sysbench0.4.12數(shù)據(jù)庫性能測試

  • 在測試運行階段,由下圖可知,隨機I/O請求的次數(shù)為10000次,讀寫操作的比例為1.50,使用fsync()同步內(nèi)存和硬盤的數(shù)據(jù),每隔100個請求同步一次:

mysql中sysbench0.4.12數(shù)據(jù)庫性能測試

  • 在測試清除階段,刪除所有測試文件:

mysql中sysbench0.4.12數(shù)據(jù)庫性能測試

2. CPU性能測試

在Shell中運行以下命令:

sysbench --test=cpu --cpu-max-prime=2000 run

上述命令表示:

  • 素數(shù)生成器的上限值為2000。

測試結果如下圖所示:

mysql中sysbench0.4.12數(shù)據(jù)庫性能測試

3. 內(nèi)存速度測試

在Shell中運行以下命令:

sysbench --test=memory --memory-block-size=8K --memory-total-size=1G run

上述命令表示:

  • 用于測試的內(nèi)存塊大小為8KB,用于測試內(nèi)存的總數(shù)據(jù)大小為1GB。

測試結果如下圖所示:

mysql中sysbench0.4.12數(shù)據(jù)庫性能測試

4. 線程子系統(tǒng)測試

在Shell中運行以下命令:

sysbench --test=threads --num-threads=500 --thread-yields=100 --thread-locks=4 run

上述命令表示:

  • 用于測試的線程數(shù)量為500個,每個請求的線程暫停次數(shù)為100次,每個線程具有4個鎖。

測試結果如下圖所示:

mysql中sysbench0.4.12數(shù)據(jù)庫性能測試

5. 互斥鎖性能測試

在Shell中運行以下命令:

sysbench --test=mutex --num-threads=100 --mutex-num=1000 --mutex-locks=100000 --mutex-loops=10000 run

上述命令表示:

  • 用于測試的線程數(shù)量為100個,互斥鎖數(shù)組的的大小為1000,每個線程執(zhí)行的互斥鎖次數(shù)為100000次,互斥鎖內(nèi)部執(zhí)行的空循環(huán)次數(shù)為10000次。

測試結果如下圖所示:

mysql中sysbench0.4.12數(shù)據(jù)庫性能測試

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的數(shù)據(jù)庫名為test,測試表的記錄總數(shù)為500000條,MySQL的用戶名為root,MySQL的登錄密碼為password。

  • 在測試運行階段,使用的線程數(shù)量為16個,使用的存儲引擎為InnoDB,MySQL服務器為本機,MySQL的數(shù)據(jù)庫名為test,測試表的記錄總數(shù)為500000條,MySQL的用戶名為root,MySQL的登錄密碼為password。

  • 在測試清除階段,使用的線程數(shù)量為16個,使用的存儲引擎為InnoDB,MySQL服務器為本機,MySQL的數(shù)據(jù)庫名為test,測試表的記錄總數(shù)為500000條,MySQL的用戶名為root,MySQL的登錄密碼為password。

測試結果如下圖所示:

  • 在測試準備階段,由下圖可知,創(chuàng)建了一個名為sbtest的測試表,這張表中有500000條記錄:

mysql中sysbench0.4.12數(shù)據(jù)庫性能測試

  • 在測試運行階段,由下圖可知,使用了16個線程,生成數(shù)據(jù)的方式采用特殊分布(12次迭代,在75%的情況下返回生成的1%的值),開始事務時使用BEGIN語句,主鍵采用自增長模式,OLTP測試的最大請求數(shù)量為10000次:

mysql中sysbench0.4.12數(shù)據(jù)庫性能測試

  • 在測試清除階段,清除測試表和測試數(shù)據(jù):

mysql中sysbench0.4.12數(shù)據(jù)庫性能測試

轉自:

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

看完上述內(nèi)容,你們對mysql中sysbench0.4.12數(shù)據(jù)庫性能測試有進一步的了解嗎?如果還想了解更多知識或者相關內(nèi)容,請關注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI