日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle 并行用索引,分区索引并行导致的性能问题

發布時間:2025/3/12 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 并行用索引,分区索引并行导致的性能问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題現象;生產環境報ORA-17144=statement handle not executed

然后我把sql抓出來手工運行一遍執行計劃如下:----------------------------------------------------------

Plan?hash?value:?644608605

-------------------------------------------------------------------------------------------------------------------------------

|?Id??|?Operation??????|?Name??????|?Rows??|?Bytes?|?Cost?(%CPU)|?Time?????|?Pstart|?Pstop?|

-------------------------------------------------------------------------------------------------------------------------------

|???0?|?SELECT?STATEMENT??????|???????|?????1?|????75?|???120K(1)|?00:24:10?|???????|???????|

|???1?|??SORT?AGGREGATE???????|???????|?????1?|????75?|????|??????|???????|???????|

|???2?|???NESTED?LOOPS??????|???????|?58896?|??4313K|???120K(1)|?00:24:10?|???????|???????|

|???3?|????NESTED?LOOPS???????|???????|?58896?|??4313K|???120K(1)|?00:24:10?|???????|???????|

|???4?|?????PARTITION?RANGE?SINGLE??????|???????|?58896?|??2300K|??2984(1)|?00:00:36?|????12?|????12?|

|???5?|??????TABLE?ACCESS?BY?LOCAL?INDEX?ROWID|?t1???|?58896?|??2300K|??2984(1)|?00:00:36?|????12?|????12?|

|*??6?|???????INDEX?RANGE?SCAN??????|?idx_1?|?58896?|???????|??2984(1)|?00:00:36?|????12?|????12?|

|*??7?|?????INDEX?UNIQUE?SCAN??????|?t2_UNIQUE1???|?????1?|???????|?????1(0)|?00:00:01?|???????|???????|

|*??8?|????TABLE?ACCESS?BY?GLOBAL?INDEX?ROWID?|?t2??????|?????1?|????35?|?????2(0)|?00:00:01?|?ROWID?|?ROWID?|

-------------------------------------------------------------------------------------------------------------------------------

這個執行計劃非常正常,400ms返回結果,于是我抓了出問題時的awr,發現這個sql跑了2分鐘,于是我猜測執行計劃和當前運行的執行計劃不一致,然后sql_id 抓取了當時運行的執行計劃如下

SQL>?set?pages?200?lines?200;

SELECT?*

FROM?TABLE(dbms_xplan.display_cursor(sql_id??????????=>?'1hqcmrpa790c3',

cursor_child_no?=>?0,

4?????????????????????????????????????????format??????????=>?'ALL?ALLSTATS?LAST?NOTE?ADVANCED?-projection'));

PLAN_TABLE_OUTPUT

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

SQL_IDcku6z254k95z5,?child?number?0

-------------------------------------

select?coalesce(sum(u.money),0)?from?t1?uleft

join?t2?r?on?u.orderform_flow_no?=?r.serialnumber?????WHERE

u.create_time?>=?to_date(:1,'yyyy-mm-dd?hh24:mi:ss')???and

u.create_time?

r.service_id?=?'unicomhb'????and?r.status?=?2

Plan?hash?value:?28991375

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

|?Id??|?Operation???|?Name???|?E-Rows?|E-Bytes|?Cost?(%CPU)|?E-Time???|?Pstart|?Pstop?|?TQ??|IN-OUT|?PQ?Distrib?|??OMem?|??1Mem?|?Used-Mem?|?Used-Tmp|

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

|???0?|?SELECT?STATEMENT???|???|????|????|100K(100)|????|????|????|?????|????|????|?|?|????|??????|

|???1?|??SORT?AGGREGATE????|???|??1?|?75?|?|????|????|????|?????|????|????|?|?|????|??????|

|*??2?|???PX?COORDINATOR???|???|????|????|?|????|????|????|?????|????|????|?|?|????|??????|

|???3?|????PX?SEND?QC?(RANDOM)???|?:TQ10002???|??1?|?75?|?|????|????|????|??Q1,02?|?P->S?|?QC?(RAND)??|?|?|????|??????|

|???4?|?????SORT?AGGREGATE???|???|??1?|?75?|?|????|????|????|??Q1,02?|?PCWP?|????|?|?|????|??????|

|*??5?|??????FILTER???|???|????|????|?|????|????|????|??Q1,02?|?PCWC?|????|?|?|????|??????|

|*??6?|???????HASH?JOIN????|???|??87509?|??6409K|100K??(1)|?00:20:12?|????|????|??Q1,02?|?PCWP?|????|??1740K|??1638K|?2076K?(0)|??????|

|???7?|????????PX?RECEIVE???|???|??87509?|??3418K|127???(0)|?00:00:02?|????|????|??Q1,02?|?PCWP?|????|?|?|????|??????|

|???8?|?PX?SEND?HASH???|?:TQ10001???|??87509?|??3418K|127???(0)|?00:00:02?|????|????|??Q1,01?|?P->P?|?HASH??|?|?|????|??????|

|???9?|??PX?PARTITION?RANGE?ITERATOR???|???|??87509?|??3418K|127???(0)|?00:00:02?|KEY?|KEY?|??Q1,01?|?PCWC?|????|?|?|????|??????|

|??10?|???TABLE?ACCESS?BY?LOCAL?INDEX?ROWID|?t1???|??87509?|??3418K|127???(0)|?00:00:02?|KEY?|KEY?|??Q1,01?|?PCWP?|????|?|?|????|??????|

|*?11?|????INDEX?RANGE?SCAN???|?idx_1?|??87509?|????|127???(0)|?00:00:02?|KEY?|KEY?|??Q1,01?|?PCWP?|????|?|?|????|??????|

|??12?|????????BUFFER?SORT???|???|????|????|?|????|????|????|??Q1,02?|?PCWC?|????|???126M|??3809K|???97M?(0)|??113K|

|??13?|?PX?RECEIVE???|???|???9157K|305M|100K??(1)|?00:20:10?|????|????|??Q1,02?|?PCWP?|????|?|?|????|??????|

|??14?|??PX?SEND?HASH???|?:TQ10000???|???9157K|305M|100K??(1)|?00:20:10?|????|????|?????|?S->P?|?HASH??|?|?|????|??????|

|??15?|???PARTITION?RANGE?ALL???|???|???9157K|305M|100K??(1)|?00:20:10?|??1?|?19?|?????|????|????|?|?|????|??????|

|*?16?|????TABLE?ACCESS?FULL???|?t2???|???9157K|305M|100K??(1)|?00:20:10?|??1?|?19?|?????|????|????|?|?|????|??????|

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

果不其然,上面全是并行掃描,這里也不用糾結這個并行為什么會導致ora-17144錯誤,然后我立馬想到用sql profile 將執行計劃固定住,但是絕對不太合理,至于為什么并行還要找到問題說在,

于是我查詢了表和該表索引的并行度,發現分區index上開啟了并行,問題找到了,通過

alter index index_name noparallel關閉了并行后,業務恢復正常。

總結

以上是生活随笔為你收集整理的oracle 并行用索引,分区索引并行导致的性能问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。