Oracle性能測(cè)試以及各個(gè)參數(shù)配置
以下是有關(guān)開發(fā)人員常用的用戶壓力模擬Oracle性能測(cè)試的經(jīng)驗(yàn):
1)壓力測(cè)試過程中發(fā)現(xiàn)一些SQL腳本執(zhí)行非常慢,進(jìn)行了優(yōu)化.
2)最好并發(fā)測(cè)試,否則服務(wù)基本上沒有什么壓力.
3)先從100用戶開始,再慢慢向上加,直到CPU的承載達(dá)到90%以上.查看系統(tǒng)的性能情況,包括TPS,響應(yīng)時(shí)間,和內(nèi)存等.
還包括Oracle服務(wù)器的I/O流量和交易數(shù)。這個(gè)方案是參考了淘寶的機(jī)房性能測(cè)試方案,下面是性能測(cè)試的具體步驟:
Oracle性能測(cè)試主要是模擬大量的sql語(yǔ)句操作,來對(duì)數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行加壓。在測(cè)試前,需要準(zhǔn)備以下要模擬的sql語(yǔ)句,測(cè)試腳本,并將測(cè)試控制機(jī)、測(cè)試加壓機(jī)、被測(cè)數(shù)據(jù)庫(kù)服務(wù)器準(zhǔn)備妥當(dāng)。
腳本協(xié)議選擇oracle(2-Tier),將所有要模擬的sql語(yǔ)句放在一個(gè)sql文件內(nèi),使用sql-plus來操作數(shù)據(jù)庫(kù)載入,使用 loadrunner來錄制。錄制好之后就是修改腳本了,首先在vdf.h文件中定義變量(static void FAR * OraBind1;),定義參數(shù)(
static LRD_VAR_DESC UID =
{LRD_VAR_DESC_EYECAT, 1, 10, LRD_DBTYPE_ORACLE, {1, 1, 0},
DT_SF_STRIPPED_SPACES};)。
為什么要在這里定義而不直接只用參數(shù)化呢?因?yàn)槟菢訒?huì)對(duì)加壓機(jī)造成很大的壓力,不利于測(cè)試。這里需要根據(jù)你的腳本來變化,你在腳本中使用了多少變量,多少參數(shù),那么你就在要這里定義多少。接下來修改腳本的,將一次性的登陸登出放在init和end中,使用lrd_assign和 lrd_ora8_bind_placeholder命令替代參數(shù),如
lrd_ora8_stmt(OraStm6, "SELECT COUNT(*) as counter FROM ***** WHERE ***_id="
":U and ( status = 0 or "
"status is null)", 1, 0, 0);
lrd_assign(&UID , "{UID}", "", 0, 0);
lrd_ora8_bind_placeholder(OraStm6, &OraBind1, "U", &UID , 0, 0, 0);
這樣,腳本就差不多大功告成了。編譯一下,沒有問題就通過了^o^
將以上Oracle性能測(cè)試的腳本放在控制機(jī)上,就可以開始加壓了,注意的是,被測(cè)數(shù)據(jù)庫(kù)服務(wù)器的各個(gè)參數(shù)配置要記錄下來,以便修改參數(shù)調(diào)優(yōu)時(shí)能分析清晰。記錄下數(shù)據(jù)庫(kù)的iops,time,tps和響應(yīng)時(shí)間,結(jié)果匯總出報(bào)告。
【編輯推薦】