小編給大家分享一下Oracle如何通過注釋改變執(zhí)行計(jì)劃,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
Oracle 通過注釋改變執(zhí)行計(jì)劃
一:問題現(xiàn)象
T_XXX表同步延時(shí)1小時(shí),其它表同步速度正常;
主要慢在同步時(shí)的一個(gè)delete T_XXX語句上,單條執(zhí)行耗時(shí)12秒;
二:問題原因
T_XXX表存在唯一性索引,理論上速度很快;
查看T_XXX表存在delete行級觸發(fā)器,查看觸發(fā)器邏輯,發(fā)現(xiàn)觸發(fā)器內(nèi)一個(gè)update語句特別慢;
UPDATE CHENJCH.T_CHENJCH_RISK ..where RISK_ID ....
查看執(zhí)行計(jì)劃,update語句走全表掃描,速度很慢,通過hint強(qiáng)制走主鍵索引,速度特別快;
為什么執(zhí)行計(jì)劃不走主鍵?
查看T_CHENJCH_RISK表統(tǒng)計(jì)信息顯示表有0行數(shù)據(jù),但是實(shí)際上有200萬行數(shù)據(jù);
由于數(shù)據(jù)同步時(shí)T_CHENJCH_RISK表存在大量的delete/update/insert操作,上次收集統(tǒng)計(jì)信息時(shí)正好這個(gè)表里沒有數(shù)據(jù),但是經(jīng)過幾天的數(shù)據(jù)同步后,表里的數(shù)據(jù)量發(fā)生了很大變化,統(tǒng)計(jì)信息也不是實(shí)時(shí)進(jìn)行收集,最終導(dǎo)致生成較差的執(zhí)行計(jì)劃;
解決方案:
嘗試刪除T_CHENJCH_RISK表統(tǒng)計(jì)信息,讓數(shù)據(jù)庫通過動(dòng)態(tài)取樣實(shí)時(shí)的收據(jù)信息,但是執(zhí)行計(jì)劃沒有變,還是走全表掃描,速度沒有提高;
begin
dbms_stats.delete_table_stats(ownname => 'CHENJCH', tabname => 'T_CHENJCH_RISK');
end;
嘗試重新收集T_CHENJCH_RISK表統(tǒng)計(jì)信息,讓數(shù)據(jù)庫通過動(dòng)態(tài)取樣實(shí)時(shí)的收據(jù)信息,但是執(zhí)行計(jì)劃沒有變,還是走全表掃描,速度沒有提高;
begin
DBMS_STATS.GATHER_TABLE_STATS('CHENJCH',
'T_CHENJCH_RISK',
estimate_percent => 100,
method_opt => 'FOR ALL INDEXED COLUMNS',
degree => 6,
CASCADE => TRUE);
end;
為什么執(zhí)行計(jì)劃沒有變?
(數(shù)據(jù)庫版本Oracle 12.2.0.1.0)
因?yàn)镾QL語句存在綁定變量,SQL文本沒有變,導(dǎo)致執(zhí)行計(jì)劃也沒有發(fā)生變化;
通過對表T_CHENJCH_RISK添加和刪除注釋,可以讓數(shù)據(jù)庫重新生成執(zhí)行計(jì)劃;
comment on column CHENJCH.T_CHENJCH_RISK.RISK_ID is 'PK_T_CHENJCH_RISK';
comment on column CHENJCH.T_CHENJCH_RISK.RISK_ID is '';
查看新生成的執(zhí)行計(jì)劃,T_CHENJCH_RISK已經(jīng)開始走主鍵索引了,速度有明顯提升;
以上是“Oracle如何通過注釋改變執(zhí)行計(jì)劃”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!
新聞名稱:Oracle如何通過注釋改變執(zhí)行計(jì)劃-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://www.chinadenli.net/article36/dsohsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、響應(yīng)式網(wǎng)站、網(wǎng)站內(nèi)鏈、定制開發(fā)、營銷型網(wǎng)站建設(shè)、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容