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

下載本文檔

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

文檔簡介

1、使用Sysbench測試PostgreSQL/Oracle/MySQL,唐成2015.09.19,為什么使用Sysbench?,2,為什么使用Sysbench?,簡單性,實時顯示,支持多種數(shù)據(jù)庫,可擴展,03.簡單性,只有一個sysbench可執(zhí)行文件,簡單易用,04.實時顯示,可以象iostat等工具一樣每秒顯示一次結(jié)果,01.多種數(shù)據(jù)庫,02.可擴展,可以用lua腳本靈活寫不同的測試用例,少有的能同時支持PostgreSQL/MySQL/Oracle的測試工具,3,Sysbench的編譯,4,在PostgreSQL下的編譯,安裝依賴包 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下的編譯,安裝依賴包 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,運行Sysbench一般方法,Prepare命令 用于生成測試數(shù)據(jù) 命令行格式為sysbench prepare Run命令 運行測試的命令

4、 命令行格式為sysbench run Cleanup命令 清除測試數(shù)據(jù) 命令行格式為sysbench cleanup,Sysbench測試PG,準備測試數(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測試PG,運行測試,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測試Oracle,生成測試數(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,這個名稱是$OR

7、ACLE_HOME/network/admin/tnsnames.ora中配置的服務(wù)名,不是實例名稱,Sysbench測試Oracle,運行測試,./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,我對Sysbench做的一點改進,13,改進說明,在githua上放了三個工程 放了原先的源代碼 把lua腳本分離出來,這部分腳本針對PostgreSQL和Oracle有一些改進 放了在Redhat 6.X下編譯好的二進制可執(zhí)行文件 sysbench_pg:對應PostgreSQL的版本 sysbench_ora:對應Oracle的版本 sysbench_mysql:對應MySQL的版本,使用我的Sysbench,從githua上把我的sysbench拉下來 git clone git clone mkdir

9、 sysbench cd sysbench cp ./sysbench_bin/* . cp -r ./sysbench_lua/lua .,使用我的Sysbench,在githua上放了三個工程 git clone git clone mkdir sysbench cd sysbench cp ./sysbench_bin/bin/* . cp -r ./sysbench_lua/lua .,使用我的Sysbench,因為命令較長,寫一個測試腳本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,準備測試數(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,開始測試數(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,測試結(jié)果,lua腳本的修改說明,腳本關(guān)系說明 oltp.lua腳本使用dofile包含了common.lua dofile(pathtest . common.lua) common.lua腳本主要負責生成測試數(shù)據(jù)

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

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

16、,但使用綁定變量也有一些問題,問題描述見下一頁,lua腳本的其它改進,Oracle中直接使用Sysbech提供的綁定變量函數(shù)db_prepare的問題 直接報錯,不能正常運行 原因是代碼有BUG,但可以繞過去。 解決方法是另加一個無用的字符串類型的綁定變量 具體代碼見下一頁:,lua腳本的其它改進,Sysbech測試Oracle繞過綁定變量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,增加了一個無用的綁定變量:y,其它一些問題的解決,在某此機器上sysb

溫馨提示

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

評論

0/150

提交評論