文章詳情頁
[Oracle]利用開源工具實現自己的TPC-C
瀏覽:8日期:2023-11-15 16:22:28
[Oracle] How to Use Open Source Tools to Implement Your Own TPC-C 作者:Fenng 日期:Mar 14 2004 (v0.13)站點:Http://www.dbanotes.net本文簡介 介紹如何利用開源工具實現Oracle數據庫環境中的TPC-C.對DBA、開發人員、BI實施者有一定的參考價值. 引言描述設想一下這樣一種情況: 您正在負責公司的一個OLTP類型的數據庫項目,面臨數據庫服務器選型的問題:如何選擇硬件才能滿足產品環境的業務要求? 這個事情是“拍腦袋” 能決定的嗎?不可否認,硬件選型是一門藝術,選擇合適的硬件,能給公司節省大筆的費用,選擇不能滿足業務需求的服務器產品,不但花了冤枉錢,還會對將來的業務產生影響。可能大家首先會想到參考服務器的TPC-C的信息。提到TPC-C,可能很多人對此都感到既熟悉又生疏,因為經常聽人說起,但是具體的問下去,能說清楚的又沒有多少人,而且,從大家口中得到的還不盡相同。那么什么是TPC/TPC-C這些都代表什么意思呢?什么是TPC?TPC(Transaction Processing Performance Council,事務處理性能委員會)是一個非盈利性的組織,其官方站點在http://www.tpc.org。其宗旨是為了制定商務應用基準程序(Benchmark)的標準規范,提供性能和價格度量,并治理測試結果的發布。在業界極其具有權威性。TPC的基準程序的標準規范(Standard Specification)是對公共開放的,可以在官方站點上得到,但是TPC卻不提供基準程序的代碼。任何軟硬件廠商或其它測試者可以根據標準規范,最優地構建自己待測的系統。為保證測試結果的客觀性,被測試者(通常是廠家)必須提交給TPC一套完整的報告(Full Disclosure Report),包括被測系統的具體配置、分類價格和包含五年維護費用在內的總價格。該報告必須由TPC授權的審核員核實(TPC本身并不做審計)。什么是tpmC?先說一下TPC-C,TPC-C是聯機事務處理(on-line transaction processing , OLTP)的基準程序。TPC-C模擬一個批發商的貨物治理環境。TPC-C使用三種性能和價格度量,其中性能由TPC-C吞吐率衡量,單位是tpmC。tpm是transactions per minute的簡稱;C指TPC中的C基準程序。它的定義是每分鐘內系統處理的新訂單個數。了解了這些內容,您可能會想:我們公司的PC服務器完全是自己攢出來的,如何進行TPC-C的衡量的?也去參考TPC官方站點上的信息?不要忘了,TPC.org 上公布的測試結果都是各大廠商根據自己的系統進行了充分優化之后的出來的結果。打個比方,TPC公布的數值就好比嶄新的法拉利跑車經過專業技師們的精心檢查保養,然后在專用跑道上跑出來的速度值,而我們的情況可能是法拉利(甚至是夏利)要在鄉村土路上行駛,可比性大打折扣。有的朋友會想:那我們可以根據自己的情況,拿一個秒表在“鄉村土路”上測試一下看看呀。這樣的意義也是顯而易見的,對我們的實際的環境不是更具有參考價值?不錯,這也正是本文的目的:讓我們利用開源(Open Source)工具來實現自己的針對Oracle數據庫的TPC-C。Hammerora—The Open Source Oracle Load Test Tool首先介紹一下Hammerora。從創作者對這個工具的標題描述可以看出,Hammerora是一款Oracle數據庫負載測試工具。該工具可以在Oracle 8i、9i和10g等版本上使用。當前可以用在Linux/Unix和Windows上.初步實現了跨平臺.Hammerora 完全用TCL/TK寫就,以GPL版權形式發布。作者是Steve Shaw。該項目的主頁在:http://sourceforge.net/projects/hammerora/ 。圖1: Hammerora的LogoHammerora的設計原理是解析Oracle的Trace文件,并把它們轉化為Oratcl程序,然后在Oracle數據庫中用多個用戶并發的對用戶的事務進行“回放”。我們知道,Oracle的Trace文件能夠翔實的記錄用戶對數據庫的操作。這樣Hammerora能夠保證對用戶環境的真實模擬。Hammerora最初是用以學習的目的:期望是模擬數據庫的一定數量的用戶。這樣一個小的基于家庭的學習開發系統就能夠比較接近產品環境。這個工具已經成長為一個Oracle數據庫做壓力測試--從小的數據庫到大的基于RAC的集群。TCL語言已經用來提供高性能的和Oracle數據庫的OCI集成,而無需重新編譯生成的程序。每個生成的程序具有嚴格的TCL/Oratcl兼容性,并且可以在Hammerora的命令行Shell下運行。TCL的強大功能和靈活性意味著潛在的功能是無窮盡的。TCL線程包用來實現對Oracle數據庫的多個并發連接。Hammerora包含Oracle存儲過程和TCL驅動腳本用來運行TPC-C基準程序。 但是,我們先要構建一個同TPC-C規范相符的數據庫。這樣,我們需要用到Orabm。OrabmOrabm是Geoff Ingram (High-Performance Oracle: Proven Methods forAchieving Optimum Performance and Availability一書的作者)構建的一個程序包,包含了一套SQL腳本和幾個命令行程序。Orabm數據裝載程序(Orabmload)構建了一組遵從TPC-C標準的數據用以測試。Orabm的程序包和源代碼可以從它的主頁面http://www.linxcel.co.uk/orabm/ 得到。Orabm的運行機制Orabm的運行機制在Geoff Ingram有明確的說明,這里翻譯如下:Orabm 通過在每個用戶指定的并發數據庫會話(session)中運行用戶執行數量的數據庫事務來進行工作.事務通過ORABM模式下的ORABM_SERVERSIDE_STRESS存儲過程運行.對每個并發會話來說,ORABM_SERVERSIDE_STRESS 運行在orabm命令行下指定的事務數,并返回該會話在采樣間隔完成時的TPS值.要確保所有并發會話都是在采樣間隔期間處理事務,TPS值僅包括事務的中間的80%,也即:初始的10%和最后的10%將忽略掉.更具體信息可以參考http://www.linxcel.co.uk/orabm/的內容.安裝步驟1 安裝Oracle OCI 庫對Oracle 9i 來說,假如沒有安裝該組件的話,可能要重新運行runInstall,在Oracle 9i Client prodUCts樹中選擇'Oracle Call Interfaces' . 對Oracle 10g來說,Oracle 10 OCI 庫應該是默認安裝的.2 安裝TCLcd /usr/local/src/tcl8.4.5/unixrm -f config.cache./configure --enable-threads --enable-sharedmake cleanmakemake install3 安裝TKcd /usr/local/src/tk8.4.5/unixrm -f config.cache./configure --with-tcl=../../tcl8.4.5/unix --enable-threads --enable-sharedmake cleanmake make install4 安裝TCL Threadscd /usr/local/src/thread2.5.2/unixrm -f config.cachesh ../configure --enable-threads --enable-sharedmake cleanmakemake install5 安裝Oratcl對10g來說,要編輯配置文件,在1728 行四周, FOUND_ORACLE=0 那一行的下面添加如下部分內容:echo 'checking for Oracle 10.0 style toplevel (libclient10.a)' 1>&6echo 'configure:1730: checking for Oracle 10.0 style toplevel (libclient10.a)' >&5for f in $oracle_Directory $oratest1 $oratest2 $oratest3 $oracle4 /opt/oracle /u/oracle /usr/oracle /usr/local/oracle ; do echo '$ac_t''looking for lib/libclient10.a in $f' 1>&6 if test -r '$f/lib/libclient10.a' ; then ORA='$f/lib' ORACLE_HOME=$f echo '$ac_t''setting ORA to $ORA' 1>&6 testver=10 ORA_MAJOR_VERSION=10 ORA_MINOR_VERSION=0 FOUND_ORACLE=1 break fidoneeXPort ORACLE_HOME=your_oracle_home_directorycd /usr/local/src/oratcl-4-1-branch/unix rm -f config.cachesh ../configure --with-tcl=../../tcl8.4.5/unix --with-oracle-directory=$ORACLE_HOME --with-oracle-version=9 ( or 10 or 8! ) --enable-threads --enable-shared注:紅色部分為針對不同的數據庫版本需要做的調整.vi Makefile – 把所有的 -rpath 改做 -Wl,-rpath,make cleanmakemake installsqlplus orabm/orabm @delivery_sp.sql;;;sqlplus orabm/orabm @new_order_sp.sql;. sqlplus orabm/orabm @ostat_sp.sql; sqlplus orabm/orabm @payment_sp.sql; sqlplus orabm/orabm @slev_sp.sql步驟操作命令1創建 ORABM用戶(用TOOLS做默認表空間, TEMP 表空間為臨時表空間)sqlplus system/pwd @orabm_user2創建表sqlplus system/pwd @orabm_tab3裝載數據$orabmload Warehouses 14創建索引sqlplus system/pwd @orabm_ind5分析表和索引sqlplus system/pwd @orabm_analyze6創建壓力測試PL/SQL 過程sqlplus system/pwd @orabm_serverside_stress7把表和索引數據緩沖到SGAsqlplus system/pwd @orabm_cache把tpc-c.tcl腳本載入Hammerora中(remember to change the file filter from *.trc to *.tcl to see TCL files),在該tpc-c.tcl中查找connect字符串,調整為你的數據庫用戶連接信息。 并調整虛擬用戶信息。測試運行 運行Hammerora,創建需要的用戶數, 來模擬TPC-C 基準程序(注重調整好執行Hammerora程序的環境變量,最好直接用Oracle用戶來執行). 下圖為筆者筆記本電腦上得到的數據[機器性能查了一點兒 :) ] :圖2: Hammerora測試結果示例參考信息http://hammerora.sourceforge.net/ Hammerora的主頁.當前的軟件版本是1.15.http://www.linxcel.co.uk/orabm/ Geoff Ingram維護的個人站點.該站點上還有一個很有趣的工具orastress.用來進行Oracle數據庫壓力測試.http://www.tpc.org TPC官方站點.http://www.cnoug.org/viewthread.PHP?tid=63技術高手RudolfLu很早以前就曾對orabm這個工具做過介紹.http://www.dbanotes.net/Oracle/Install-Oracle10g-RHEL3.htm Installing Oracle 10g on RHEL AS 3 Step-by-Step 本文作者Fenng,某美資公司DBA,業余時間混跡于各數據庫相關的技術論壇且樂此不疲。目前關注如何利用ORACLE數據庫有效地構建企業應用。對Oracle tuning、troubleshooting有一點研究。個人技術站點: http://www.dbanotes.net/。可以通過電子郵件 [email protected] 聯系到他。原文出處http://www.dbanotes.net/Oracle/Use_OpenSourceTool_implement_YourOwn_TPC-C.htm回首頁 All Articles (by Fenng) are licensed under a Creative Commons License.I would welcome any feedback. Please send questions, comments or corrections to [email protected]
排行榜
