十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
今天就跟大家聊聊有關(guān)MySQL中sysbench0.4.12數(shù)據(jù)庫性能測試,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
成都創(chuàng)新互聯(lián)長期為近1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為平邑企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站建設(shè),平邑網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
1. 常用選項(xiàng)
在Shell中運(yùn)行以下命令便可得到sysbench的常用選項(xiàng)信息:
sysbench --help
上述命令的輸出信息如下圖所示:
1.1 使用語法
使用sysbench時(shí),可以通過以下語法進(jìn)行基準(zhǔn)測試:
sysbench [通用選項(xiàng)]... --test=<測試名稱> [測試選項(xiàng)]... 命令
1.2 通用選項(xiàng)
--num-threads=N
:需要使用的線程總數(shù)(默認(rèn)值為1)。
--max-requests=N
:請求總數(shù)的上限值(默認(rèn)值為10000)。
--max-time=N
:總執(zhí)行時(shí)間的上限值,以秒為單位(默認(rèn)值為0,表示執(zhí)行時(shí)間無限)。
--forced-shutdown=STRING
:在–max-time之后,強(qiáng)制停止之前,需要等待的時(shí)間總量(默認(rèn)值為off)。
--thread-stack-size=SIZE
:每個(gè)線程的??臻g的大?。J(rèn)值為32KB)。
--init-rng=[on|off]
:是否初始化隨機(jī)數(shù)生成器(默認(rèn)值為off)。
--seed-rng=N
:隨機(jī)數(shù)生成器的種子,當(dāng)為0時(shí)忽略(默認(rèn)值為0)。
--tx-rate=N
:目標(biāo)事務(wù)速率(TPS)(默認(rèn)值為0)。
--tx-jitter=N
:目標(biāo)事務(wù)變化率,以毫秒為單位(默認(rèn)值為0)。
--report-interval=N
:指定一個(gè)間隔時(shí)間,sysbench便會(huì)定期地報(bào)告測試期間的中間統(tǒng)計(jì)結(jié)果,以秒為單位。若取值為0,則表示禁用中間報(bào)告功能(默認(rèn)值為0)。
--report-checkpoints=[LIST,...]
:在指定的時(shí)間點(diǎn),轉(zhuǎn)儲(chǔ)完整的統(tǒng)計(jì)數(shù)據(jù),并且復(fù)位所有的計(jì)數(shù)器。這個(gè)選項(xiàng)的參數(shù)是一個(gè)由逗號分隔的值,表示從測試開始到必須執(zhí)行報(bào)告檢查點(diǎn)時(shí)需要花費(fèi)的時(shí)間,以秒為單位。默認(rèn)禁用報(bào)告檢查點(diǎn)。
--test=STRING
:需要運(yùn)行的測試項(xiàng)。
--debug=[on|off]
:輸出更多的調(diào)試信息(默認(rèn)值為off)。
--validate=[on|off]
:在可能的情況下執(zhí)行有效性檢查。
--help=[on|off]
:輸出幫助信息,然后退出。
--version=[on|off]
:輸出版本信息,然后退出。
1.3 日志選項(xiàng)
--verbosity=N
:日志的詳細(xì)等級。若取值為5,則輸出調(diào)試日志;若取值為0,則只輸出重要信息(默認(rèn)值為4)。
--percentile=N
:計(jì)算查詢響應(yīng)時(shí)間的百分比等級(默認(rèn)值為95,表示sysbench會(huì)丟棄5%的最長的請求,然后再從剩余的請求中選擇一個(gè)最長的請求)。
1.4 內(nèi)建測試項(xiàng)
fileio
:文件I/O測試。
cpu
:CPU性能測試。
memory
:內(nèi)存速度測試。
threads
:線程子系統(tǒng)性能測試。
mutex
:互斥性能測試。
oltp
:OLTP(在線事務(wù)處理)測試。
1.5 命令
prepare
:為某些測試執(zhí)行一些準(zhǔn)備性的工作,例如:為fileio
測試在磁盤上創(chuàng)建必要的文件,為OLTP
測試填充測試數(shù)據(jù)庫,等等。
run
:運(yùn)行由--test
選項(xiàng)執(zhí)行的測試項(xiàng)。
cleanup
:在測試結(jié)束之后,刪除由測試產(chǎn)生的臨時(shí)數(shù)據(jù)和文件。
help
:顯示由--test
指定的測試項(xiàng)的幫助信息。
version
:輸出sysbench的版本信息。
2. 文件I/O測試
在Shell中運(yùn)行以下命令,可以看到文件I/O測試(fileio)的測試選項(xiàng):
sysbench --test=fileio help
fileio
的測試選項(xiàng)如下圖所示:
--file-num=N
:需要?jiǎng)?chuàng)建的文件數(shù)量(默認(rèn)為128個(gè)文件)。
--file-block-size=N
:在所有的IO操作中使用的數(shù)據(jù)塊的大?。J(rèn)值為16384)。
--file-total-size=SIZE
:需要?jiǎng)?chuàng)建的文件的總大?。J(rèn)值為2G)。
--file-test-mode=STRING
:測試模式,可選的值有seqwr(順序?qū)懀?、seqrewr(順序重寫)、seqrd(順序讀)、rndrd(隨機(jī)讀)、rndwr(隨機(jī)寫)、rndrw(隨機(jī)讀寫)。
--file-io-mode=STRING
:文件操作模式,可選的值有sync、async、mmap(默認(rèn)值為sync)。
--file-extra-flags=STRING
:在已打開文件上使用的額外標(biāo)志,可選的值有sync、dsync、direct。
--file-fsync-freq=N
:在發(fā)出這個(gè)參數(shù)指定數(shù)量的請求之后,執(zhí)行fsync(),將內(nèi)存中已修改的文件數(shù)據(jù)同步至存儲(chǔ)設(shè)備中。若取值為0,則表示不使用fsync()(默認(rèn)值為100)。
--file-fsync-all=[on|off]
:每次寫操作之后,執(zhí)行fsync()(默認(rèn)值為off)。
--file-fsync-end=[on|off]
:在測試結(jié)束時(shí),執(zhí)行fsync()(默認(rèn)值為on)。
--file-fsync-mode=STRING
:同步數(shù)據(jù)時(shí),使用哪種方法,可選的值有fsync、fdatasync(默認(rèn)值為fsync)。
--file-merged-requests=N
:如果可能,最多合并由這個(gè)參數(shù)指定數(shù)量的IO請求。若取值為0,則表示不會(huì)合并請求(默認(rèn)值為0)。
--file-rw-ratio=N
:進(jìn)行讀寫綜合測試時(shí),讀寫操作的比率(默認(rèn)值為1.5)。
3. CPU性能測試
在Shell中運(yùn)行以下命令,可以看到CPU性能測試(cpu)的測試選項(xiàng):
sysbench --test=cpu help
cpu
的測試選項(xiàng)如下圖所示:
--cpu-max-prime=N
:素?cái)?shù)生成器的上限值(默認(rèn)值為10000)。
4. 內(nèi)存速度測試
在Shell中運(yùn)行以下命令,可以看到內(nèi)存速度測試(memory)的測試選項(xiàng):
sysbench --test=memory help
memory
的測試選項(xiàng)如下圖所示:
--memory-block-size=SIZE
:測試使用的內(nèi)存塊的大?。J(rèn)值為1K)。
--memory-total-size=SIZE
:需要傳輸?shù)臄?shù)據(jù)總大小(默認(rèn)值為100G)。
--memory-scope=STRING
:內(nèi)存訪問范圍,可選的值有g(shù)lobal、local(默認(rèn)值為global)。
--memory-hugetlb=[on|off]
:從HugeTLB池中分配內(nèi)存(默認(rèn)值為off)。
--memory-oper=STRING
:內(nèi)存操作的類型,可選的值有read、write、none(默認(rèn)值為write)。
--memory-access-mode=STRING
:內(nèi)存訪問模式,可選的值有seq(順序)、rnd(隨機(jī))(默認(rèn)值為seq)。
5. 線程子系統(tǒng)測試
在Shell中運(yùn)行以下命令,可以看到線程子系統(tǒng)測試(threads)的測試選項(xiàng):
sysbench --test=threads help
threads
的測試選項(xiàng)如下圖所示:
--thread-yields=N
:每個(gè)請求的線程暫停次數(shù)(默認(rèn)值為1000)。
--thread-locks=N
:每個(gè)線程使用的鎖的數(shù)量(默認(rèn)值為8)。
6. 互斥鎖性能測試
在Shell中運(yùn)行以下命令,可以看到互斥鎖性能測試(mutex)的測試選項(xiàng):
sysbench --test=mutex help
mutex
的測試選項(xiàng)如下圖所示:
--mutex-num=N
:互斥鎖數(shù)組的總大小(默認(rèn)值為4096)。
--mutex-locks=N
:執(zhí)行每個(gè)線程時(shí)使用的互斥鎖的數(shù)量(默認(rèn)值為50000)。
--mutex-loops=N
:在互斥鎖內(nèi)部執(zhí)行的空循環(huán)的數(shù)量(默認(rèn)值為10000)。
7. OLTP測試
在Shell中運(yùn)行以下命令,可以看到在線事務(wù)處理測試(oltp)的測試選項(xiàng):
sysbench --test=oltp help
oltp
的測試選項(xiàng)如下圖所示:
7.1 OLTP選項(xiàng)
--oltp-test-mode=STRING
:可以使用的測試類型,可選的值有simple(簡單)、complex(高級事務(wù))、nontrx(無事務(wù))、sp(存儲(chǔ)過程)(默認(rèn)值為complex)。
--oltp-reconnect-mode=STRING
:重連模式,可選的值有session、transaction、query、random(默認(rèn)值為session)。
--oltp-sp-name=STRING
:那么--oltp-test-mode=sp
,那么這個(gè)參數(shù)可用于指定需要調(diào)用的存儲(chǔ)過程的名稱。
--oltp-read-only=[on|off]
:只生成“讀”查詢(不會(huì)修改數(shù)據(jù)庫)(默認(rèn)值為off)。
--oltp-avoid-deadlocks=[on|off]
:以遞增的順序生成更新關(guān)鍵字,這樣可以避免死鎖(默認(rèn)值為off)。
--oltp-skip-trx=[on|off]
:跳過BEGIN/COMMIT語句(默認(rèn)值為off)。
--oltp-range-size=N
:范圍查詢的范圍大小(默認(rèn)值為100)。
--oltp-point-selects=N
:一個(gè)事務(wù)中的點(diǎn)選擇的數(shù)量(默認(rèn)值為10)。
--oltp-use-in-statement=N
:每次查詢時(shí),在10個(gè)主鍵的查找中使用IN語句(默認(rèn)值為0)。
--oltp-simple-ranges=N
:一個(gè)事務(wù)中的簡單范圍查詢的數(shù)量(默認(rèn)值為1)。
--oltp-sum-ranges=N
:一個(gè)事務(wù)中的求和(SUM)范圍查詢的數(shù)量(默認(rèn)值為1)
--oltp-order-ranges=N
:一個(gè)事務(wù)中的排序(ORDER)范圍查詢的數(shù)量(默認(rèn)值為1)。
--oltp-distinct-ranges=N
:一個(gè)事務(wù)中的去重(DISTINCT)范圍查詢的數(shù)量(默認(rèn)值為1)。
--oltp-index-updates=N
:一個(gè)事務(wù)中的索引更新(UPDATE)查詢的數(shù)量(默認(rèn)值為1)。
--oltp-non-index-updates=N
:一個(gè)事務(wù)中的非索引更新(UPDATE)的數(shù)量(默認(rèn)值為1)。
--oltp-nontrx-mode=STRING
:非事務(wù)測試的模式,可選的值有select、update_key、update_nokey、insert、delete(默認(rèn)值為select)。
--oltp-auto-inc=[on|off]
:測試表的id列是否應(yīng)當(dāng)使用AUTO_INCREMENT(主鍵自增長)功能(默認(rèn)值為on)。
--oltp-connect-delay=N
:在連接至數(shù)據(jù)庫之后,進(jìn)入睡眠的時(shí)間,以毫秒為單位(默認(rèn)值為10000)。
--oltp-user-delay-min=N
:在每次請求之后,進(jìn)入睡眠的最小時(shí)間,以毫秒為單位(默認(rèn)值為0)。
--oltp-user-delay-max=N
:在每次請求之后,進(jìn)入睡眠的最大時(shí)間,以毫秒為單位(默認(rèn)值為0)。
--oltp-table-name=STRING
:測試表的名稱(默認(rèn)值為sbtest)。
--oltp-table-size=N
:測試表中的記錄數(shù)量(默認(rèn)值為10000)。
--oltp-dist-type=STRING
:隨機(jī)數(shù)的分布方式,可選的值有uniform(均勻分布)、gaussian(高斯分布)、special(特殊分布)(默認(rèn)值為special)。
--oltp-dist-iter=N
:生成數(shù)字時(shí)需要使用的迭代次數(shù)(默認(rèn)值為12)。
--oltp-dist-pct=N
:被當(dāng)作是“特殊值”的數(shù)值的百分比,只用于隨機(jī)數(shù)的特殊分布方式(默認(rèn)值為1)。
--oltp-dist-res=N
:需要使用的“特殊值”的百分比,只用于隨機(jī)數(shù)的特殊分布方式(默認(rèn)值為1)。
--oltp-point-select-mysql-handler=[on|off]
:當(dāng)進(jìn)行點(diǎn)選擇時(shí),使用MySQL HANDLER(默認(rèn)值為off)。
--oltp-point-select-all-cols=[on|off]
:當(dāng)進(jìn)行點(diǎn)選擇查詢時(shí),選擇所有的列(默認(rèn)值為off)。
--oltp-secondary=[on|off]
:使用二級索引,而不是主鍵(PRIMARY)索引(默認(rèn)值為off)。
--oltp-num-partitions=N
:測試表使用的分區(qū)的數(shù)量(默認(rèn)值為0)。
--oltp-num-tables=N
:測試表的數(shù)量(默認(rèn)值為1)。
7.2 通用數(shù)據(jù)庫選項(xiàng)
--db-driver=STRING
:指定需要使用的數(shù)據(jù)庫驅(qū)動(dòng)(通過1.5節(jié)的help
命令,可以看到可用的驅(qū)動(dòng)列表)。
--db-ps-mode=STRING
:如果選用的數(shù)據(jù)庫驅(qū)動(dòng)支持預(yù)處理語句(Prepared Statement) API,那么sysbench就會(huì)在所有查詢中盡可能地使用服務(wù)端的預(yù)處理語句。否則,就會(huì)使用客戶端(或模擬端)的預(yù)處理語句。即使當(dāng)PS API可用時(shí),這個(gè)選項(xiàng)也允許強(qiáng)制使用模擬方式??蛇x的值有auto、disable(默認(rèn)值為auto)。
7.3 內(nèi)建數(shù)據(jù)庫驅(qū)動(dòng)
mysql
:MySQL驅(qū)動(dòng)程序。
注意:
由于本文只針對MySQL進(jìn)行OLTP測試,此處的驅(qū)動(dòng)列表只有MySQL的驅(qū)動(dòng)程序。實(shí)際上,除了MySQL之外,sysbench還支持Oracle、PostgreSQL等數(shù)據(jù)庫。
7.4 MySQL選項(xiàng)
--mysql-host=[LIST,...]
:MySQL服務(wù)器的主機(jī)名或IP地址(默認(rèn)值為localhost)。
--mysql-port=N
:MySQL服務(wù)器的端口號(默認(rèn)值為3306)。
--mysql-socket=STRING
:MySQL的套接字文件。
--mysql-user=STRING
:MySQL的用戶名(默認(rèn)值為sbtest)。
--mysql-password=STRING
:MySQL的登錄密碼。
--mysql-db=STRING
:MySQL的數(shù)據(jù)庫名(默認(rèn)值為sbtest)。
--mysql-table-engine=STRING
:測試表使用的存儲(chǔ)引擎,可選的值有myisam、innodb、bdb、heap、ndbcluster、federated(默認(rèn)值為innodb)。
--mysql-engine-trx=STRING
:是否使用支持事務(wù)的存儲(chǔ)引擎,可選的值有yes、no、auto(默認(rèn)值為auto)。
--mysql-ssl=[on|off]
:若客戶端程序庫支持SSL連接,則使用(默認(rèn)值為off)。
--myisam-max-rows=N
:MyISAM表能夠支持的最大行數(shù)(默認(rèn)值為1000000)。
--mysql-create-options=STRING
:傳遞給CREATE TABLE
語句的額外選項(xiàng)。
三、sysbench使用示例
1. 文件I/O測試
在Shell中運(yùn)行以下命令:
# 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
上述命令表示:
在測試準(zhǔn)備階段,使用16個(gè)線程,創(chuàng)建的測試文件總大小為2GB,文件測試模式為隨機(jī)讀寫。
在測試運(yùn)行階段,使用20個(gè)線程,測試文件總大小為2GB,文件測試模式為隨機(jī)讀寫。
在測試清除階段,使用20個(gè)線程,測試文件總大小為2GB,文件測試模式為隨機(jī)讀寫。
測試結(jié)果如下圖所示:
在測試準(zhǔn)備階段,由下圖可知,創(chuàng)建了128個(gè)測試文件,每個(gè)文件大小都為16MB,文件總大小為2GB,寫入速度為43.61MB/s:
在測試運(yùn)行階段,由下圖可知,隨機(jī)I/O請求的次數(shù)為10000次,讀寫操作的比例為1.50,使用fsync()同步內(nèi)存和硬盤的數(shù)據(jù),每隔100個(gè)請求同步一次:
在測試清除階段,刪除所有測試文件:
2. CPU性能測試
在Shell中運(yùn)行以下命令:
sysbench --test=cpu --cpu-max-prime=2000 run
上述命令表示:
素?cái)?shù)生成器的上限值為2000。
測試結(jié)果如下圖所示:
3. 內(nèi)存速度測試
在Shell中運(yùn)行以下命令:
sysbench --test=memory --memory-block-size=8K --memory-total-size=1G run
上述命令表示:
用于測試的內(nèi)存塊大小為8KB,用于測試內(nèi)存的總數(shù)據(jù)大小為1GB。
測試結(jié)果如下圖所示:
4. 線程子系統(tǒng)測試
在Shell中運(yùn)行以下命令:
sysbench --test=threads --num-threads=500 --thread-yields=100 --thread-locks=4 run
上述命令表示:
用于測試的線程數(shù)量為500個(gè),每個(gè)請求的線程暫停次數(shù)為100次,每個(gè)線程具有4個(gè)鎖。
測試結(jié)果如下圖所示:
5. 互斥鎖性能測試
在Shell中運(yùn)行以下命令:
sysbench --test=mutex --num-threads=100 --mutex-num=1000 --mutex-locks=100000 --mutex-loops=10000 run
上述命令表示:
用于測試的線程數(shù)量為100個(gè),互斥鎖數(shù)組的的大小為1000,每個(gè)線程執(zhí)行的互斥鎖次數(shù)為100000次,互斥鎖內(nèi)部執(zhí)行的空循環(huán)次數(shù)為10000次。
測試結(jié)果如下圖所示:
6. OLTP測試
在Shell中運(yùn)行以下命令:
# 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
上述命令表示:
在測試準(zhǔn)備階段,使用的存儲(chǔ)引擎為InnoDB,MySQL服務(wù)器為本機(jī),MySQL的數(shù)據(jù)庫名為test,測試表的記錄總數(shù)為500000條,MySQL的用戶名為root,MySQL的登錄密碼為password。
在測試運(yùn)行階段,使用的線程數(shù)量為16個(gè),使用的存儲(chǔ)引擎為InnoDB,MySQL服務(wù)器為本機(jī),MySQL的數(shù)據(jù)庫名為test,測試表的記錄總數(shù)為500000條,MySQL的用戶名為root,MySQL的登錄密碼為password。
在測試清除階段,使用的線程數(shù)量為16個(gè),使用的存儲(chǔ)引擎為InnoDB,MySQL服務(wù)器為本機(jī),MySQL的數(shù)據(jù)庫名為test,測試表的記錄總數(shù)為500000條,MySQL的用戶名為root,MySQL的登錄密碼為password。
測試結(jié)果如下圖所示:
在測試準(zhǔn)備階段,由下圖可知,創(chuàng)建了一個(gè)名為sbtest的測試表,這張表中有500000條記錄:
在測試運(yùn)行階段,由下圖可知,使用了16個(gè)線程,生成數(shù)據(jù)的方式采用特殊分布(12次迭代,在75%的情況下返回生成的1%的值),開始事務(wù)時(shí)使用BEGIN語句,主鍵采用自增長模式,OLTP測試的最大請求數(shù)量為10000次:
在測試清除階段,清除測試表和測試數(shù)據(jù):
轉(zhuǎn)自:
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ù)庫性能測試有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。