親愛滴伙伴們,本萎磚家又來了。這次咱說說SQL加了并行hint,但并行卻跑不起來的小案例。這事兒的起因是應(yīng)用側(cè)一哥們兒反饋一個(gè)存儲過程平時(shí)只要1個(gè)小時(shí)就可以跑完,這次跑了4個(gè)多小時(shí)還望不到頭兒,找過來需要友情協(xié)助。
干運(yùn)維的都是苦命孩子,大家能互相幫襯的就互相幫襯點(diǎn)兒,你說要是找我借個(gè)十塊八塊錢的話,我也幫不上忙。這手到擒來的活兒,還是義不容辭的擼起袖子,開始排查問題原因。
根據(jù)這哥們兒提供過來的sql文本,在庫里找到了對應(yīng)的會話及正在運(yùn)行的SQL。查看session相關(guān)屬性信息,確定與跟之前運(yùn)行的時(shí)間相差很大(看來這大兄弟也是實(shí)在人,硬是多扛了3個(gè)多小時(shí)才喊痛)??吹竭@個(gè)差別第一反應(yīng)是執(zhí)行計(jì)劃的相關(guān)原因?qū)е?,核?shí)執(zhí)行計(jì)劃后,果然和懷疑的一樣,執(zhí)行計(jì)劃一直在變。
既然執(zhí)行計(jì)劃總是在變,那咱就看看這2個(gè)執(zhí)行計(jì)劃的區(qū)別在哪兒?
執(zhí)行計(jì)劃顯示SQL是一個(gè)insert....select....語句,SQL中有/*+APPEND ENABLE_PARALLEL_DMLPARALLEL("a",8)+*/開啟PDML并行的hint,其中低效的執(zhí)行計(jì)劃顯示DML并行無效(PDMLdisabled because object is not decorated with parallelclause)。
我們繼續(xù)分析執(zhí)行計(jì)劃發(fā)現(xiàn)高效執(zhí)行計(jì)劃在預(yù)插入數(shù)據(jù)的目標(biāo)表insert及其索引維護(hù)動(dòng)作均開啟了并行,但低效執(zhí)行計(jì)劃沒有。
問題點(diǎn)出現(xiàn)了:
為啥ENABLE_PARALLEL_DML的hint有時(shí)候起作用,有時(shí)候就失效了呢?
PDMLdisabled because object is not decorated with parallel clause?
為啥會報(bào)對象沒有用parallel子句修飾?難道是hint寫錯(cuò)了?
順著這個(gè)思路繼續(xù)查看sql書寫規(guī)范,果然有發(fā)現(xiàn),別名上多了雙引。
去掉雙引號測試一切回歸正常:
其實(shí),這里有一個(gè)更穩(wěn)妥的老司機(jī)的做法可以防止hint寫錯(cuò)影響并行的開啟,使用會話級別打開并行:
altersession force parallel query parallel 16;
altersession force parallel dml parallel 16;
該方式就算hint寫錯(cuò)了也沒關(guān)系,照樣會走并行。
總結(jié):
從這個(gè)例子我們可以看到一個(gè)小小的雙引號竟然可以導(dǎo)致parallel hint間隙性失效,真是應(yīng)了那句老話兒,一粒老鼠屎壞了一鍋湯。所以說工作中規(guī)范很重要。好了,本次分享到此結(jié)束,咱下回分享再見。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/130215.html
摘要:正是存在問題,促使我們考慮引入數(shù)據(jù)庫審核平臺。的確,與很多互聯(lián)網(wǎng)公司相比,數(shù)據(jù)庫數(shù)十套的估摸并不是太大但與互聯(lián)網(wǎng)類公司不同,類似宜信這類金融類公司對數(shù)據(jù)庫的依賴性更大,大量的應(yīng)用是重?cái)?shù)據(jù)庫類的,且其使用復(fù)雜程度也遠(yuǎn)比互聯(lián)網(wǎng)類的復(fù)雜。 作者:韓鋒 出處:DBAplus社群分享 Themis開源地址:https://github.com/CreditEaseDBA 拓展閱讀:宜信開源|數(shù)...
摘要:新晉技術(shù)專家下面是墨天輪部分新晉的技術(shù)專家。大家可以點(diǎn)擊往期閱讀墨天輪技術(shù)專家邀請函了解詳情,申請成為我們的技術(shù)專家,加入專家團(tuán)隊(duì),與我們一起創(chuàng)建一個(gè)開放互助的數(shù)據(jù)庫技術(shù)社區(qū)。新關(guān)聯(lián)公眾號墨天輪是一個(gè)開放互助的數(shù)據(jù)庫技術(shù)社區(qū)。 引言 近期我們在DBASK小程序增加了數(shù)據(jù)庫 MongoDB、Redis、 Elasticsearch、DB2、Weblogic 等新的的專題欄目和一些新的技術(shù)...
閱讀 1356·2023-01-11 13:20
閱讀 1707·2023-01-11 13:20
閱讀 1215·2023-01-11 13:20
閱讀 1906·2023-01-11 13:20
閱讀 4165·2023-01-11 13:20
閱讀 2757·2023-01-11 13:20
閱讀 1402·2023-01-11 13:20
閱讀 3671·2023-01-11 13:20