精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

從此愛上SQL Monitor!記一次反常理的鑒權查詢優化

數據庫
該案例的優化過程甚為曲折,幾近山窮水盡半途而廢。在為幾個exists弄得焦頭爛額一籌莫展之際,幸得SQL Monitor之助,方能撥開云霧,終見青天。從explain plan中,我們能得知Oracle優化器的意圖,而通過SQL Monitor,我們能獲取到運行時的很多信息,比如本案例中涉及到的“實際返回行數”、“執行次數”。

[[211727]]

一、案例

好天氣,壞SQL

金秋10月,如同陽春三月般,是一個令人難以忘懷與期待的季節。而在這個美好的季節了,我拿到了一個不怎么令人愉悅的SQL。

優化小組的測試MM給我發了封關于性能問題的郵件,在郵件里面,問題描述是這樣的:權限配置越少,性能越差,當配置了全部(2萬)du的權限時,只需要2s,當只配置了120個DU的權限時,需要半小時以上。

看到這個描述,我心里也咯噔了一下:這是違背了常理的。一般來說,只有越大越慢,現在反而是越小越慢。

按照習慣,我還是想先見識見識這個一反常理的SQL,看看到底是何方神圣。我找開發人員拿到了SQL,打開代碼如下:     

                                 

從體量上看,這個SQL并不大,總共才130多行。這在I項目組中是比較常見的。而從體型上看,似乎不怎么協調:尾巴太大。在WHERE條件子句,拖著5個EXISTS條件,并且都是OR的關系。這已經很不尋常了,會不會就是問題中描述的問題所在呢?

我向開發人員咨詢了這5個EXISTS子查詢的業務功能,得到的信息是:

1、這5個EXISTS子查詢的功能是鑒權,即權限鑒別;

2、不同EXISTS子查詢代表不同類型的權限集合;

3、鑒權的對象粒度是DU,即每個EXISTS子查詢與EXISTS子查詢的關聯字段都是LINE.DU_ID

從SQL自身看,找不到明顯的“破綻”,我就嘗試著看看執行計劃,在SQL DEV中按下了F5,顯示的執行計劃如下:

執行計劃比較長,我們可以只看exists部分,發現基本上都是索引掃描,cost值也非常低,也就是說執行計劃中也看不出問題。那問題到底出在哪里呢?

笨方法,好效果

當時就在想:是單個exists慢?還是5個放在一起慢呢?

為了弄清楚這個原因,我就逐個注釋掉EXISTS,并觀察注釋后的性能。雖然這個辦法有些笨拙,甚至很多人都不齒于該方法,但有些時候這確實也是定位問題的有效的手段和途徑。

通過反復注釋加測試,詭異的現象出現了:

1、5個exists條件單獨作用時,沒有性能問題;

2、***個和第三個exists條件聯合作用時,也沒有性能問題;

3、第三個、第四個和第五個exists條件聯合作用時,性能問題就凸顯了。

由此看來,問題越來越復雜了。Oracle在執行這條SQL時到底發生了什么呢?千頭萬緒理還亂,一籌莫展想不通。萬般無奈之下,只能祭出必殺神器:SQL Monitor。

神器不出,莫與爭鋒

在拿到SQL Monitor的結果后,似乎一切都明朗起來了,SQL Monitor的截圖如下(由于當時的原始數據丟失,以下僅給出模擬數據):

因為已經明確了是在exists子查詢存在性能問題,我就重點關注了EXISTS的Monitor信息,希望能從中發現有價值的信息與啟示。

在對比了5個exists的執行計劃后,“執行次數”引起了我的注意:5個EXISTS的執行次數及實際行數竟然不一樣!

(1)這組數字之間也有著巧妙的聯系:***個的執行次數為20000,及恰好是總的DU數量,第二個的執行次數等于***個的執行次數-***個實際行數,即滿足如下算法:

其中f(n)為第n個exists的執行次數,e(n)為第n個exists的實際返回行數,并且n>1。

(2)***個和第二個exists的實際返回行數的和是120,恰恰是郵件中提及的權限配置數量;而第三個19880加上120正好等于2萬,又恰恰是全部DU數。難道這一切僅僅是巧合而已?還是另有隱情呢?

基于以上兩點信息,我豁然開朗恍然大悟,個中緣由了然于胸。我們可以大致推斷出Oracle的執行原理如下圖所示:

按照上面的流程與算法,就很容易理解上述那組數字了。同樣的,也明白了為何權限配置越少的時候性能越差,配置越多的時候性能反而越好。

為了更好地理解,這里可以舉兩個極端的例子。如果有沒有配置任何權限,那么每個DU都需要遍歷5個exists子查詢,就意味著總共要執行10萬次(2萬DU,每個DU執行5次)exists子查詢。反過來,如果我們將2萬DU都配置了權限,而且是***類權限(即***個exists的權限),那么每個DU只需要執行***個exists,后面4個exists子查詢不需要執行。因此只需要執行2萬次。2萬次與10萬次的差別(另外還需要考慮不同exists之間本身性能也是有差異的),對性能的影響還是非常明顯的。

撥開云霧不等于立見天日

籠罩在詭異性能問題上的云霧終于被揭開了,但我卻絲毫沒有欣喜之感。問題的原因雖然已經“大白于天下”,但解決方案讓我一籌莫展。

一開始,我嘗試著基于現有SQL通過SQL Hint干預執行計劃,但是性能毫無起色。我又嘗試著改寫這個SQL,將OR EXISTS子查詢改寫成LEFT JOIN,性能問題卻變本加厲。我還嘗試著創建基于該SQL的特定索引,仍舊無濟于事。

回歸本源,方得圓滿

多次嘗試無果,在萬般無奈之下,我又回到了問題的本原。

這個SQL,在本場景中,除了***個exists子查詢執行了100次,第二個exists子查詢執行了20次,其它四個exists子查詢執行的19880*4次都是沒有意義的。既然沒有意義,那是否可以省略掉呢?我很為自己這個天馬行空不著邊際的想法振奮。

因為就如開始測試時,將后面三個exists注釋掉后,性能非常好。也就是說如果能成功避開無用的EXISTS子查詢,也是可以達到性能優化之目標的。

但很顯然,Oracle在執行SQL前,是無法識別哪些EXISTS子查詢是必須執行的?哪些EXISTS子查詢是無須執行的?難道自己的這個想法就這樣夭折了嗎?

不見兔子不撒鷹

我繼續著自己天馬行空的想法。

既然Oracle在執行SQL的時候未卜先知,那么我們在寫這個SQL時,是否可以先卜上一卦,如果某類權限沒有配置,就不在SQL中拼湊對應的EXISTS子查詢。這樣,本案例SQL就會只剩下兩個EXISTS子查詢了。性能也自然能得到滿足。

以上想法僅僅是我一廂情愿的理想主義,其在實際應用中是否可行還是未知之數:這個SQL在Java代碼中是固定的還是拼湊的?某類權限是否配置的判斷是否復雜?是否也會存在性能問題?如此等等,不寒而栗。但就如小馬過河,不去嘗試又怎么知道是否真實可行呢?

于是,我帶著這個不太正經的方案與開發人員溝通。開發人員的表現讓人喜憂參半。喜的是,他并不反對這個方案,如果真的能解決性能問題,他也是樂于接受該方案;憂的是,這段5個exists子查詢的SQL并不是他控制的。原來該案例的SQL所在的系統模塊是任務管理,而5個EXISTS子查詢是鑒權功能,隸屬于權限模塊。這些EXISTS子查詢都是由權限模塊來開發和維護的。用任務管理模塊開發人員的話說就是“這5個EXISTS是通過調用權限模塊的服務獲取的,如果權限模塊給我們3個EXISTS,我們就拼湊三個EXISTS子查詢,如果他們不給我們EXISTS,我就不拼湊EXISTS子查詢。”

于是,我帶著這個方案又去“游說”權限模塊的開發人員。

當我找到權限模塊的開發人員時,我們并沒有直接拖出我的方案,而是把性能問題表述了一邊。意想不到的是,這位開發人員很是淡定,好像這一切早就知道了;卻也滿臉的無奈,他說:“這個性能問題還是暴露出來了,沒有辦法,當初權限這塊的設置就是這么復雜,我們也不想如此復雜。”

見時機成熟,我就把我的方案全盤托出。沒想到,這位開發人員聽完后,兩眼大放異彩,一臉容光煥發,說到:“這很好,非常不錯,我現在就按照你的方案改寫。這不單單是你的這個SQL有問題,其它所有涉及到鑒權的SQL都會有這個問題。”

接下來,一切都水到渠成了。

二、心得

從此愛上SQL Monitor

該案例的優化過程甚為曲折,幾近山窮水盡半途而廢。在為幾個exists弄得焦頭爛額一籌莫展之際,幸得SQL Monitor之助,方能撥開云霧,終見青天。從explain plan中,我們能得知Oracle優化器的意圖,而通過SQL Monitor,我們能獲取到運行時的很多信息,比如本案例中涉及到的“實際返回行數”、“執行次數”。這一些對我們定位問題及原因分析非常有用。

感謝SQL Monitor!

頭疼醫頭,腳疼醫腳

該案例對應的BUG單很快被關閉,但作為優化方案的設計者,我非常清楚這個方案的局限性和漏洞。沒錯,針對該案例,“不見兔子不撒鷹”式的方案的確能***,但也僅僅是適用于該案例的業務場景。該方案還存在一個致命的缺陷:隨著配置的權限類型越多,其對整個SQL的性能影響越大。我們將權限配置對SQL的性能影響設為P,則P的計算公式為:

由公式可見,當N=0時,是沒有影響的,而當N=5時,影響是***的。

 

事后,我將這種隱患口頭上與組長交流過,但組長也是無奈:“我也認真研究過I項目的權限機制,發現存在一定的不合理的地方,要不然也不至于寫出如此復雜的鑒權語句。但是,目前來看,不可能將權限機制推倒重來。先就這樣子吧。” 

責任編輯:龐桂玉 來源: DBAplus社群
相關推薦

2020-02-10 10:15:31

技術研發指標

2021-07-30 07:28:16

SQL優化日志

2011-02-22 09:29:23

jQueryJavaScript

2011-09-27 10:35:44

2021-10-14 10:53:20

數據庫查詢超時

2021-01-08 13:52:15

Consul微服務服務注冊中心

2015-03-18 13:18:45

MySQLSQL優化

2019-09-27 17:24:26

數據庫優化sql

2021-11-11 16:14:04

Kubernetes

2020-08-10 11:00:02

Python優化代碼

2013-01-17 10:31:13

JavaScriptWeb開發firebug

2021-05-13 08:51:20

GC問題排查

2019-03-15 16:20:45

MySQL死鎖排查命令

2013-04-01 10:27:37

程序員失業

2021-12-20 10:15:16

zip密碼命令網絡安全

2023-06-07 07:31:04

PC端app脫殼技巧

2022-03-02 09:01:07

CPU使用率優化

2023-04-06 07:53:56

Redis連接問題K8s

2017-07-07 16:07:41

2014-08-11 09:31:52

點贊
收藏

51CTO技術棧公眾號

在线观看日韩一区| 99re热这里只有精品视频| 久久久久北条麻妃免费看| 无人码人妻一区二区三区免费| 都市激情久久综合| 国产午夜精品一区二区| 亚洲aaa激情| 视频一区二区三区四区五区| 午夜影院欧美| 日韩激情视频在线播放| 鲁一鲁一鲁一鲁一av| 菠萝蜜视频在线观看www入口| 国产亚洲成av人在线观看导航| 亚洲淫片在线视频| 亚洲视频 欧美视频| 影音先锋成人在线电影| 亚洲视频在线观看视频| 日本美女视频网站| 91成人app| 欧美丝袜美女中出在线| 日产精品久久久久久久蜜臀| 日本免费中文字幕在线| 91在线porny国产在线看| 亚洲综合国产精品| 中文字幕免费播放| 亚洲欧美久久久| 欧美黑人国产人伦爽爽爽| 貂蝉被到爽流白浆在线观看| 亚洲免费观看高清完整版在线观| 欧美一激情一区二区三区| 91日韩视频在线观看| 麻豆理论在线观看| 亚洲午夜久久久久中文字幕久| 中国成人亚色综合网站| 久久电影中文字幕| 99re热这里只有精品免费视频| 不卡一区二区三区视频| 国产精品呻吟久久| 精品中文字幕一区二区小辣椒 | www在线观看免费视频| xxxxxhd亚洲人hd| 日韩免费性生活视频播放| 不用播放器的免费av| 天天综合网站| 在线观看亚洲专区| 亚洲老女人av| 电影亚洲一区| 欧美午夜免费电影| 牛夜精品久久久久久久| 韩国精品主播一区二区在线观看| 欧美性猛交xxxx免费看漫画| 热99这里只有精品| 中文字幕影音在线| 欧美视频在线看| 农村妇女精品一二区| 免费成人直播| 欧美三级视频在线| 不卡中文字幕在线观看| 亚洲日日夜夜| 日韩欧美电影一区| 永久免费未满蜜桃| 亚洲国产欧美日韩在线观看第一区| 精品捆绑美女sm三区| 欧类av怡春院| 国产精品一区2区3区| 在线视频亚洲欧美| 成年人一级黄色片| 日韩一级不卡| 日韩av电影中文字幕| 中文字幕人妻一区二区三区视频| 美女诱惑一区二区| 91青青草免费观看| 欧美一区二区三区黄片| 久久嫩草精品久久久精品一| 亚洲v欧美v另类v综合v日韩v| 夜级特黄日本大片_在线| 日韩毛片一二三区| www..com日韩| 日韩三区免费| 欧美一区二区三区电影| 欧美一区二区免费在线观看| 波多野结衣一区| 草民午夜欧美限制a级福利片| www.天天色| 久久亚洲二区| 亚洲最大的成人网| 天堂在线中文| 国产欧美一区二区精品性色| 日韩中文在线字幕| 午夜久久中文| 欧美一级二级三级乱码| 亚洲av无码国产精品麻豆天美 | 国产日韩欧美精品在线观看| 户外露出一区二区三区| 日韩欧美中文字幕一区| 日韩av在线看免费观看| 欧美777四色影| 国产不卡在线观看| 午夜精品久久久久久久99| 日本一区二区三区国色天香 | 丁香婷婷在线| 亚洲午夜在线视频| 亚洲一级免费在线观看| 欧美日韩一区二区三区四区不卡 | 欧美精品亚洲精品| 天使と恶魔の榨精在线播放| 色狠狠桃花综合| 蜜臀视频在线观看| 久久裸体网站| 日产精品99久久久久久| 国产成人精品a视频| 国产拍欧美日韩视频二区| 少妇大叫太大太粗太爽了a片小说| 欧美日韩不卡| 亚洲第一偷拍网| 日本午夜在线观看| 日本色综合中文字幕| 快播亚洲色图| 98色花堂精品视频在线观看| 678五月天丁香亚洲综合网| 色无极影院亚洲| 亚洲毛片一区| 97久久夜色精品国产九色| 在线a人片免费观看视频| 一本色道综合亚洲| 中文字幕在线播放一区| 国内精品嫩模av私拍在线观看| 国产精品色午夜在线观看| 国产小视频在线| 福利一区福利二区微拍刺激| 亚洲一区和二区| 自拍偷拍欧美| 亚洲综合精品伊人久久| av网站免费在线观看| 欧美裸体一区二区三区| 精品伦精品一区二区三区视频密桃| 久久精品123| 久久66热这里只有精品| 性国裸体高清亚洲| 国产视频精品va久久久久久| www.日本精品| 91一区在线观看| 国产精品国产亚洲精品看不卡| 国产精品白浆| 97精品一区二区三区| 欧美一级性视频| 污片在线观看一区二区| 欧美成人三级伦在线观看| 亚洲午夜精品久久久久久app| 99c视频在线| 欧美激情成人动漫| 亚洲国产私拍精品国模在线观看| 精品无码人妻一区二区三区品| 国产成人av影院| av无码久久久久久不卡网站| 超碰97成人| 欧美激情在线狂野欧美精品| 亚洲精品成人区在线观看| 亚洲国产日韩精品| av鲁丝一区鲁丝二区鲁丝三区| 国产亚洲亚洲| 日韩美女一区| 色999韩欧美国产综合俺来也| 久久五月情影视| 亚洲国产综合网| 天天av天天翘天天综合网| 国产特级黄色录像| 激情久久久久久久久久久久久久久久| 中文字幕色呦呦| 日韩a级大片| 国产精品久久久久7777婷婷| 成人在线网址| 亚洲国产日韩精品在线| 久草热在线观看| 综合久久国产九一剧情麻豆| 国产伦精品一区二区三区88av| 国产精品久久777777毛茸茸| 色综合666| 97色婷婷成人综合在线观看| 欧美日本三区| 精品久久久久久电影| 91av视频导航| 日av在线播放| 欧美美女喷水视频| 伊人国产在线观看| 国产视频亚洲色图| 亚洲一区二区偷拍| 国产日韩欧美三级| 中文字幕色一区二区 | 国产成人精品一区二区三区福利 | wwwxxx在线观看| 日韩亚洲欧美高清| 男人日女人网站| 亚洲女同一区二区| 黄色正能量网站| 狠狠色丁香久久婷婷综| 成年人网站免费视频| 久久久久午夜电影| 美乳视频一区二区| 日韩成人18| 日韩男女性生活视频| 18在线观看的| 中文字幕9999| 天堂中文在线视频| 日韩欧美激情四射| 中文字幕无线码一区| 狠狠色狠狠色综合日日五| 国产在线免费av| 久久综合九色综合97婷婷女人| 特黄特黄一级片| 日韩极品在线观看| 青青青免费在线| 欧美国产另类| 一区二区三区视频| 国产精品一区二区av交换| 国产精品久久久久久久小唯西川| 久久青草视频| 国产精品99久久久久久人| 9765激情中文在线| 久久久久久一区二区三区| 黄色一级片在线观看| 亚洲午夜久久久影院| 五月天婷婷激情网| 欧美精品一区二区三| 精品人妻一区二区三区含羞草| 欧美亚洲综合在线| 无码人妻熟妇av又粗又大| 午夜电影一区二区三区| 妺妺窝人体色www聚色窝仙踪 | 久久午夜免费视频| 一区二区三区国产| 538任你躁在线精品视频网站| 国产精品久久久久久久久搜平片| 性欧美13一14内谢| 久久这里只有精品6| 午夜av免费看| 99久久99久久精品免费观看| 丰满少妇xbxb毛片日本| 国产精品白丝jk黑袜喷水| 日韩欧美中文视频| 精品一区二区三区免费播放 | 亚洲伦理一区二区| 国产视频999| 四虎精品一区二区免费 | 乱亲女h秽乱长久久久| 成人三级视频在线观看一区二区| 日韩在线观看中文字幕| 91久久国产自产拍夜夜嗨| 无人区乱码一区二区三区| 91手机在线视频| 91成人噜噜噜在线播放| 高清不卡一区二区三区| 国产精品白浆| 老牛影视免费一区二区| 国产欧美日韩精品一区二区免费 | aⅴ色国产欧美| 国产二区视频在线播放| 麻豆精品网站| 亚洲污视频在线观看| 久久精品国产一区二区| 成人黄色一级大片| 国产福利一区二区三区视频在线 | 狠狠人妻久久久久久综合麻豆| 欧美成人官网二区| 人妻精品一区一区三区蜜桃91| 亚洲福利视频二区| 青青草手机在线| 在线日韩第一页| www.久久ai| 97视频免费观看| 三级成人黄色影院| 成人性生交xxxxx网站| 91国内精品| 欧美日韩精品免费观看视一区二区| 欧美精品羞羞答答| 黄色污污在线观看| 国产亚洲精品v| 岛国毛片在线播放| 懂色av一区二区三区免费看| 三级电影在线看| 国产精品国产三级国产有无不卡 | 欧美视频在线免费看| 伊人22222| 精品久久久久久久久久久久久久久| 天堂在线免费av| 久久精品久久久久久| av午夜在线观看| 国产精品视频xxx| 北条麻妃在线一区二区免费播放| 日韩av一区二区三区在线| 亚洲国产日韩欧美在线| 日韩在线视频在线观看| 久久国产麻豆精品| 精品国产人妻一区二区三区| 中日韩av电影| xxxxxx国产| 欧美人与禽zozo性伦| 日韩在线一区二区三区四区| www国产精品视频| 黄色激情在线播放| 91观看网站| 欧美日韩精品在线一区| 东北少妇不带套对白| 麻豆久久一区二区| 黄色正能量网站| 亚洲一区免费视频| 国产又粗又猛又黄又爽| 日韩精品视频在线播放| 亚洲电影视频在线| 国产精品日韩欧美大师| 欧美性生活一级片| 男人日女人的bb| 日本亚洲免费观看| 亚洲精品女人久久久| 夜夜揉揉日日人人青青一国产精品| 波多野结衣高清视频| 亚洲精品狠狠操| 在线中文字幕-区二区三区四区 | 中文字幕永久在线观看| 日韩理论片久久| 欧美寡妇性猛交xxx免费| 91免费在线视频网站| 欧美三级三级| 丰满少妇被猛烈进入高清播放| 国产成人欧美日韩在线电影| 中文字幕资源站| 欧美日韩一卡二卡三卡 | 妺妺窝人体色www在线小说| 国产高清视频一区| 国产精品视频一区二区三| 欧美日韩不卡视频| av大全在线免费看| 国产精品久久久久久av福利软件 | 日本视频免费观看| 精品亚洲aⅴ在线观看| 蜜桃视频动漫在线播放| 国产伦一区二区三区色一情| 国产一区二区三区四区老人| 91日韩精品视频| 一色屋精品亚洲香蕉网站| 亚洲字幕av一区二区三区四区| 在线成人激情黄色| 91av一区| 一区二区三区不卡在线| 激情综合色播五月| 极品魔鬼身材女神啪啪精品| 91精品国产日韩91久久久久久| 麻豆视频在线| 91人成网站www| 国内揄拍国内精品久久| 91成人在线观看喷潮蘑菇| 一区二区欧美在线观看| 亚洲黄色在线观看视频| 国模精品视频一区二区| 欧美三级电影在线| 久久久久久久久久福利| 国产欧美日韩综合| 中文字幕一区2区3区| 久久精品久久精品亚洲人| 亚洲电影一区| 欧美精品久久久久久久免费| 久久一区二区三区四区| 波多野结衣一区二区在线| 中文字幕在线看视频国产欧美| 精品176极品一区| 欧美 亚洲 视频| www.成人网.com| 青青草视频在线观看免费| 色777狠狠综合秋免鲁丝| 精品国产亚洲一区二区三区在线| 激情六月天婷婷| 2021国产精品久久精品| 美女黄页在线观看| 欧美情侣性视频| 免费短视频成人日韩| 99热一区二区| 性久久久久久久久久久久| 免费国产在线视频| 成人网欧美在线视频| 国内久久精品| 欧美老女人性生活视频| 欧美大片在线观看一区| 超碰在线资源| 亚洲高清在线播放| 成人三级在线视频| www.亚洲激情| 欧美激情乱人伦一区| 国产精品一国产精品| 黄页网站在线看| 色婷婷av一区二区三区软件| 国产在线观看a| 欧美一区二区影视| 国产精品一卡二卡在线观看| 日批视频免费在线观看| 久99九色视频在线观看| 清纯唯美综合亚洲| 怡红院一区二区| 在线播放中文一区| 久九九久频精品短视频| 国内少妇毛片视频|