在性能調(diào)優(yōu)工作中,首要的事情是找出性能瓶頸。而針對(duì)數(shù)據(jù)庫(kù)應(yīng)用,由于商用數(shù)據(jù)庫(kù)對(duì)上層應(yīng)用來(lái)說(shuō)是個(gè)黑盒,所以往往需要借助數(shù)據(jù)庫(kù)的一些接口或工具來(lái)了解數(shù)據(jù)庫(kù)的具體行為,并結(jié)合相關(guān)知識(shí)和業(yè)務(wù)進(jìn)行調(diào)測(cè)。
簡(jiǎn)單來(lái)說(shuō),數(shù)據(jù)庫(kù)在執(zhí)行一個(gè)查詢之前,會(huì)為該查詢生成一個(gè)最優(yōu)(至少它這樣認(rèn)為)的查詢計(jì)劃(Query Plan),然后再根據(jù)計(jì)劃的指示來(lái)執(zhí)行實(shí)際的操作和處理。如果能了解到查詢計(jì)劃,也就能知道一個(gè)查詢真正是怎樣執(zhí)行下來(lái)的、時(shí)間都耗在哪里、有哪些影響因素等。
第一步:創(chuàng)建報(bào)告目錄
在正常運(yùn)行的時(shí)候,查詢計(jì)劃是不會(huì)顯式生成的,但經(jīng)過(guò)后面步驟的配置后,可以指示IQ將每次查詢的計(jì)劃顯式生成為文件供開(kāi)發(fā)人員查閱,所以需要預(yù)先為其創(chuàng)建一個(gè)目錄,如:
mkdir /export/home/zyx/ganjd
其中目錄可以隨意制定,但為了多個(gè)開(kāi)發(fā)人員共用服務(wù)器的時(shí)候不互相影響,應(yīng)該各自創(chuàng)建自己的目錄。該目錄應(yīng)該對(duì)運(yùn)行IQ服務(wù)器所使用的帳號(hào)有讀寫(xiě)權(quán)限,最簡(jiǎn)單就是直接將該目錄chmod為777就可以了。
第二步:配置鏈接選項(xiàng)
就是通過(guò)修改數(shù)據(jù)庫(kù)的配置項(xiàng),讓IQ在執(zhí)行查詢的時(shí)候生成查詢計(jì)劃的報(bào)告。一般可以直接在鏈接了IQ的客戶端程序(如Aqua Data Studio或Interactive SQL)上使用下面的語(yǔ)句配置即可:
SET TEMPORARY OPTION QUERY_PLAN_AS_HTML_DIRECTORY ='/export/home/zyx/ganjd';
SET TEMPORARY OPTION QUERY_PLAN = ON;
SET TEMPORARY OPTION QUERY_DETAIL = ON;
SET TEMPORARY OPTION QUERY_TIMING = ON;
SET TEMPORARY OPTION QUERY_PLAN_AFTER_RUN = ON;
SET TEMPORARY OPTION QUERY_PLAN_AS_HTML = ON;
SET TEMPORARY OPTION INDEX_ADVISOR = ON;
SET TEMPORARY OPTION NOEXEC = ON;
需要注意的是,雖然在語(yǔ)法上上述SET OPTION中的TEMPORARY不是必須的, 但建議加上,用于指定該選項(xiàng)的修改只對(duì)當(dāng)前鏈接有效,并且在鏈接斷開(kāi)后自動(dòng)恢復(fù)。這樣就可以避免多個(gè)開(kāi)發(fā)人員共用服務(wù)器的時(shí)候的沖突。
作者“lzz7658823”