使用Sysbench測(cè)試PostgreSQL、Oracle、MySQL.pptx_第1頁(yè)
使用Sysbench測(cè)試PostgreSQL、Oracle、MySQL.pptx_第2頁(yè)
使用Sysbench測(cè)試PostgreSQL、Oracle、MySQL.pptx_第3頁(yè)
使用Sysbench測(cè)試PostgreSQL、Oracle、MySQL.pptx_第4頁(yè)
使用Sysbench測(cè)試PostgreSQL、Oracle、MySQL.pptx_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、使用Sysbench測(cè)試PostgreSQL/Oracle/MySQL,唐成2015.09.19,為什么使用Sysbench?,2,為什么使用Sysbench?,簡(jiǎn)單性,實(shí)時(shí)顯示,支持多種數(shù)據(jù)庫(kù),可擴(kuò)展,03.簡(jiǎn)單性,只有一個(gè)sysbench可執(zhí)行文件,簡(jiǎn)單易用,04.實(shí)時(shí)顯示,可以象iostat等工具一樣每秒顯示一次結(jié)果,01.多種數(shù)據(jù)庫(kù),02.可擴(kuò)展,可以用lua腳本靈活寫(xiě)不同的測(cè)試用例,少有的能同時(shí)支持PostgreSQL/MySQL/Oracle的測(cè)試工具,3,Sysbench的編譯,4,在PostgreSQL下的編譯,安裝依賴(lài)包 yum install automake yum in

2、stall libtool.x86_64 編譯命令,./autogen.sh ./configure -without-mysql -without-drizzle -with-pgsql -with-pgsql-includes=/usr/local/pgsql/include -with-pgsql-libs=/usr/local/pgsql/lib make PGSQL_LIBS=-L/usr/local/pgsql/lib -lpq PGSQL_CFLAGS=-I/usr/local/pgsql/include”,在Oracle下的編譯,安裝依賴(lài)包 yum install automa

3、ke yum install libtool.x86_64 編譯命令,./autogen.sh ./configure -with-oracle -without-mysql -without-drizzle make ORA_LIBS=-L$ORACLE_HOME/lib -lclntsh ORA_CFLAGS=-I$ORACLE_HOME/rdbms/demo -I$ORACLE_HOME/rdbms/public,Sysbench的基本使用方法,7,運(yùn)行Sysbench一般方法,Prepare命令 用于生成測(cè)試數(shù)據(jù) 命令行格式為sysbench prepare Run命令 運(yùn)行測(cè)試的命令

4、 命令行格式為sysbench run Cleanup命令 清除測(cè)試數(shù)據(jù) 命令行格式為sysbench cleanup,Sysbench測(cè)試PG,準(zhǔn)備測(cè)試數(shù)據(jù)的命令,sysbench -test=sysbench_lua/oltp_pg.lua -db-driver=pgsql -pgsql-host=127.0.0.1 -pgsql-port=5432 -pgsql-user=osdba -pgsql-password=sysbench -pgsql-db=testdb -oltp-tables-count=10 -oltp-table-size=10000000 prepare,Sysbe

5、nch測(cè)試PG,運(yùn)行測(cè)試,sysbench -test=sysbench_lua/oltp_pg.lua -db-driver=pgsql -pgsql-host=127.0.0.1 -pgsql-port=5432 -pgsql-user=osdba -pgsql-password=sysbench -pgsql-db=testdb -oltp-tables-count=10 -oltp-table-size=10000000 -num-threads=32 -max-requests=100000000 -max-time=300 -report-interval=1 run,Sysben

6、ch測(cè)試Oracle,生成測(cè)試數(shù)據(jù),./sysbench -test=tests/db/oltp.lua -db-driver=oracle -oltp-table-name=sysbench -oltp-table-size=10000000 -oltp-tables-count=10 -oracle-db=testdb -oracle-user=sysbench -oracle-password=sysbench -max-time=300 -max-requests=100000000 -num-threads=32 -report-interval=1 prepare,這個(gè)名稱(chēng)是$OR

7、ACLE_HOME/network/admin/tnsnames.ora中配置的服務(wù)名,不是實(shí)例名稱(chēng),Sysbench測(cè)試Oracle,運(yùn)行測(cè)試,./sysbench -test=tests/db/oltp.lua -db-driver=oracle -oltp-table-name=sysbench -oltp-table-size=10000000 -oltp-tables-count=10 -oracle-db=testdb -oracle-user=sysbench -oracle-password=sysbench -max-time=300 -max-requests=100000

8、000 -num-threads=32 -report-interval=1 run,我對(duì)Sysbench做的一點(diǎn)改進(jìn),13,改進(jìn)說(shuō)明,在githua上放了三個(gè)工程 放了原先的源代碼 把lua腳本分離出來(lái),這部分腳本針對(duì)PostgreSQL和Oracle有一些改進(jìn) 放了在Redhat 6.X下編譯好的二進(jìn)制可執(zhí)行文件 sysbench_pg:對(duì)應(yīng)PostgreSQL的版本 sysbench_ora:對(duì)應(yīng)Oracle的版本 sysbench_mysql:對(duì)應(yīng)MySQL的版本,使用我的Sysbench,從githua上把我的sysbench拉下來(lái) git clone git clone mkdir

9、 sysbench cd sysbench cp ./sysbench_bin/* . cp -r ./sysbench_lua/lua .,使用我的Sysbench,在githua上放了三個(gè)工程 git clone git clone mkdir sysbench cd sysbench cp ./sysbench_bin/bin/* . cp -r ./sysbench_lua/lua .,使用我的Sysbench,因?yàn)槊钶^長(zhǎng),寫(xiě)一個(gè)測(cè)試腳本test.sh:,#!/bin/bash ./sysbench_pg -test=lua/oltp.lua -db-driver=pgsql -pg

10、sql-host=127.0.0.1 -pgsql-port=5432 -pgsql-user=postgres -pgsql-password=sysbench -pgsql-db=postgres -oltp-tables-count=1 -oltp-table-size=100000 -num-threads=32 -max-requests=100000000 -max-time=300 -report-interval=1 $*,使用我的Sysbench,準(zhǔn)備測(cè)試數(shù)據(jù),postgrespg01 sysbench$ ./test.sh prepare sysbench 0.5: mul

11、ti-threaded system evaluation benchmark Creating table sbtest1. Inserting 100000 records into sbtest1,使用我的Sysbench,開(kāi)始測(cè)試數(shù)據(jù),postgrespg01 sysbench$ ./test.sh run sysbench 0.5: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 32 Report intermediate r

12、esults every 1 second(s) Random number generator seed is 0 and will be ignored Threads started! 1s threads: 32, tps: 179.45, reads/s: 2864.73, writes/s: 756.65, response time: 296.61ms (95%) 2s threads: 32, tps: 290.98, reads/s: 4080.77, writes/s: 1167.93, response time: 149.80ms (95%) 3s threads: 3

13、2, tps: 303.67, reads/s: 4248.45, writes/s: 1223.69, response time: 152.02ms (95%) 4s threads: 32, tps: 319.15, reads/s: 4481.10, writes/s: 1274.60, response time: 131.83ms (95%),使用我的Sysbench,測(cè)試結(jié)果,lua腳本的修改說(shuō)明,腳本關(guān)系說(shuō)明 oltp.lua腳本使用dofile包含了common.lua dofile(pathtest . common.lua) common.lua腳本主要負(fù)責(zé)生成測(cè)試數(shù)據(jù)

14、主要修改 common.lua:原來(lái)的腳本沒(méi)有支持Oracle數(shù)據(jù)庫(kù) oltp.lua:原來(lái)的腳本PostgreSQL下不能正確運(yùn)行測(cè)試,lua腳本的修改說(shuō)明,update_index.lua=update_index_with_commit.lua 原先的腳本中每次操作沒(méi)有commit語(yǔ)句,這樣在測(cè)試的輸出中tps值為零。,tps全是零,lua腳本的修改說(shuō)明,直接使用sysbench的接口db_prepare函數(shù)時(shí)不能正確運(yùn)行 問(wèn)題原因: sysbench中代碼有問(wèn)題 解決辦法: PREPARE testplan (text, int) AS UPDATE sysbench1 SET c=$

15、1 WHERE id=$2; EXECUTE testplan(xxxx,1);,lua腳本的其它改進(jìn),update_index.lua = update_index_ora.lua 原先的腳本測(cè)試Oracle時(shí),Sysbench本身會(huì)占用大量的CPU,導(dǎo)致數(shù)據(jù)庫(kù)本身的壓力上不去。 原因是Sysbench中原先的drv_oracle.c代碼中訪問(wèn)Oracle的部分不夠優(yōu)化,每次執(zhí)行時(shí)都會(huì)調(diào)用rc = OCIHandleAlloc(ora_env,.)和OCIHandleFree(stmt, OCI_HTYPE_STMT);而多線程下這兩個(gè)函數(shù)的調(diào)用會(huì)導(dǎo)致了強(qiáng)烈的鎖競(jìng)爭(zhēng)。 解決辦法:使用綁定變量

16、,但使用綁定變量也有一些問(wèn)題,問(wèn)題描述見(jiàn)下一頁(yè),lua腳本的其它改進(jìn),Oracle中直接使用Sysbech提供的綁定變量函數(shù)db_prepare的問(wèn)題 直接報(bào)錯(cuò),不能正常運(yùn)行 原因是代碼有BUG,但可以繞過(guò)去。 解決方法是另加一個(gè)無(wú)用的字符串類(lèi)型的綁定變量 具體代碼見(jiàn)下一頁(yè):,lua腳本的其它改進(jìn),Sysbech測(cè)試Oracle繞過(guò)綁定變量bug的方法:,function thread_init(thread_id) local table_name set_vars() table_name = sbtest. (thread_id+1) stmt = db_prepare(UPDATE .

17、 table_name . SET k=k+1 WHERE id=to_number(:x) and a = :y) params = params1 = 444 params2 = a db_bind_param(stmt, params) end function event(thread_id) local table_name params1 = string.format(%d, sb_rand(1, oltp_table_size) params2 = a db_execute(stmt) db_query(COMMIT) end,增加了一個(gè)無(wú)用的綁定變量:y,其它一些問(wèn)題的解決,在某此機(jī)器上sysb

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論