久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Oracle如何通過注釋改變執(zhí)行計劃

138次閱讀
沒有評論

共計 1259 個字符,預(yù)計需要花費 4 分鐘才能閱讀完成。

丸趣 TV 小編給大家分享一下 Oracle 如何通過注釋改變執(zhí)行計劃,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Oracle 通過注釋改變執(zhí)行計劃

一:問題現(xiàn)象

T_XXX 表同步延時 1 小時,其它表同步速度正常;

主要慢在同步時的一個 delete T_XXX 語句上,單條執(zhí)行耗時 12 秒;

 

二:問題原因

T_XXX 表存在唯一性索引,理論上速度很快;

查看 T_XXX 表存在 delete 行級觸發(fā)器,查看觸發(fā)器邏輯,發(fā)現(xiàn)觸發(fā)器內(nèi)一個 update 語句特別慢;

UPDATE CHENJCH.T_CHENJCH_RISK ..where  RISK_ID ….

查看執(zhí)行計劃,update 語句走全表掃描,速度很慢,通過 hint 強制走主鍵索引,速度特別快;

為什么執(zhí)行計劃不走主鍵?

查看 T_CHENJCH_RISK 表統(tǒng)計信息顯示表有 0 行數(shù)據(jù),但是實際上有 200 萬行數(shù)據(jù);

由于數(shù)據(jù)同步時 T_CHENJCH_RISK 表存在大量的 delete/update/insert 操作,上次收集統(tǒng)計信息時正好這個表里沒有數(shù)據(jù),但是經(jīng)過幾天的數(shù)據(jù)同步后,表里的數(shù)據(jù)量發(fā)生了很大變化,統(tǒng)計信息也不是實時進行收集,最終導(dǎo)致生成較差的執(zhí)行計劃;

解決方案:

嘗試刪除 T_CHENJCH_RISK 表統(tǒng)計信息,讓數(shù)據(jù)庫通過動態(tài)取樣實時的收據(jù)信息,但是執(zhí)行計劃沒有變,還是走全表掃描,速度沒有提高;

begin

 dbms_stats.delete_table_stats(ownname = CHENJCH , tabname = T_CHENJCH_RISK

end;

嘗試重新收集 T_CHENJCH_RISK 表統(tǒng)計信息,讓數(shù)據(jù)庫通過動態(tài)取樣實時的收據(jù)信息,但是執(zhí)行計劃沒有變,還是走全表掃描,速度沒有提高;

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í)行計劃沒有變?

(數(shù)據(jù)庫版本 Oracle 12.2.0.1.0)

因為 SQL 語句存在綁定變量,SQL 文本沒有變,導(dǎo)致執(zhí)行計劃也沒有發(fā)生變化;

通過對表 T_CHENJCH_RISK 添加和刪除注釋,可以讓數(shù)據(jù)庫重新生成執(zhí)行計劃;

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í)行計劃,T_CHENJCH_RISK 已經(jīng)開始走主鍵索引了,速度有明顯提升;

以上是“Oracle 如何通過注釋改變執(zhí)行計劃”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-24發(fā)表,共計1259字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 建阳市| 汾西县| 忻州市| 延寿县| 苍梧县| 招远市| 嘉兴市| 阆中市| 沈阳市| 博客| 宝坻区| 霞浦县| 阜阳市| 裕民县| 汶川县| 乌海市| 开原市| 通许县| 蓬溪县| 淮北市| 咸阳市| 离岛区| 明溪县| 江达县| 百色市| 波密县| 集安市| 涪陵区| 渝北区| 沅陵县| 苗栗市| 榕江县| 沧源| 北流市| 荥阳市| 辽源市| 溆浦县| 本溪| 高唐县| 曲松县| 长白|