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

Cursor共享哪些事,你知道哪些?

數據庫 Oracle
在Oracle數據庫中,也有類似的HINT,在數據庫產品沒有ACS功能或者關閉了ACS功能的 時候,這是一種十分有效的方法。繞開PLAN CACHE可以讓本身就無法共享執行計劃的SQL不要去干擾PLAN CACHE,可以更好的保護全局PLAN CACHE。

早些年搞Oracle的時候,最讓人頭疼的事情就是和共享池相關的,而共享池里遇到問題最多的事情大多數是和SQL編譯相關的,關于十多年前這方面的往事我最近總想寫一篇Oracle往事來給大家介紹一下。

Oracle共享池最初是為了全局共享SQL執行計劃而設計的,全局共享執行計劃可以最大限度的減少SQL解析,在高并發的系統中提升數據庫的整體并發能力,這對于二三十年前的計算機硬件來說至關重要。其實除了Oracle之外,那個時代發展起來的商用數據庫大多也支持全局SQL執行計劃共享,比如SQL SERVER 的Parameterized Query Plan Caching。

全局SQL PLAN共享并不是數據庫必須具備的功能,也不是所有的數據庫都支持全局SQL PLAN共享,MySQL、Postgresql等開源數據庫以及絕大多數國產數據庫都是會話級共享SQL PLAN的。會話級共享SQL PLAN可能沒有全局共享效果好,不過MySQL、PG這些數據庫在設計之初并沒有考慮在復雜業務場景下的超高并發執行問題,因此全局共享SQL PLAN并不是其涉及要點。采用會話級共享執行計劃減少了數據字典相關的鎖以及字典緩沖的閂鎖爭用,有效的降低了SQL解析器的復雜度,有助于數據庫更穩定的運行,特別是在數據字典不太發生變化的場景中。隨著現代硬件的快速發展,在大多數情況下,SQL解析所消耗的系統資源已經不成為主要的問題了,因此沒有使用全局SQL PLAN CACHE的開源數據庫在絕大多數高并發量執行的場景中也都能夠勝任。在我所遇到的運維案例中,反而是采用全局執行計劃共享的Oracle數據庫經常在負載不算太高的場景中,比如每秒幾萬次執行的場景中,因為硬解析過多而觸發了shared pool、Library cache 、cursor mutex等方面的爭用,引發了較為嚴重的性能問題。

不管如何,共享執行計劃(全局和會話級)確實有效的提高了數據庫在SQL解析方面的效率,從而可以更好的支撐高并發場景和一些數據字典經常發生變更的高并發場景。不同的數據庫共享SQL PLAN的實現方式差異很大,Oracle使用家傳的共享池,隨著Oracle數據庫的發展,共享池已經變成了一個極其極其復雜的全局共享數據結構,不僅僅用于SQL PLAN共享,其全局內存堆(KGH)管理的模式是統一的。其他數據庫一般使用相對簡單一點的SQL PLAN CACHE來實現執行計劃共享。    

實現執行計劃共享遇到的第一個問題是SQL使用非綁定變量的問題,最初的SQL共享完全是基于SQL文本的,其原理是對SQLTEXT做一個HASH函數,HASH值相同的SQL被認為是相同的,可以共享的。如果我們在SQL中直接使用常量值而沒有使用綁定變量,那么SQL是無法共享的。Oracle在早期想要共享cursor,必須強制開發人員在編程時使用綁定變量。但是開發人員的水平參差不齊,經常會忘記這個開發規范。于是Oracle通過cursor_sharing參數對SQL進行簽名處理。自動將相似的SQL進行歸并,從而讓SQL能夠最大限度的共享。哪怕寫程序是沒有使用綁定變量,SQL解析器會自動幫你完成這個工作。

通過cursor_sharing自動處理非綁定變量的SQL或者使用綁定變量一定是件好事情嗎?也不一定是這樣的,如果某條SQL只有一個最佳的SQL PLAN,這是沒有問題的。不過在現實中可能存在相同的SQL有多種最好的執行計劃的情況存在。比如下面這個例子。    

圖片圖片

當Object_id為20的時候,記錄數有419萬行數據,因此全表掃描是比較合理的執行計劃。

圖片圖片

而當Object_id=21的時候,返回數據只有16行,因此此時使用索引范圍掃描是比較合理的執行計劃。而如果我們使用綁定變量,select object_name from t1 where object_id=:p,這樣兩種情況如果共享執行計劃,那就明顯是不合理的。    

這種情況下如果共享執行計劃,那么可能會出現十分怪異的情況。比如說同一條SQL有時候走索引,有時候走全表掃描。有時候突然就會大量SQL不走索引全部走執行計劃了。甚至出現同一條SQL在不同RAC節點上,一個節點是走索引的,另一個節點上死活不走索引。其實明白了SQL共享與SQL解析的原理就很清楚了。在解析帶有綁定變量或者通過cursor_sharing進行共享的SQL的時候,會進行綁定變量的窺探,編譯時帶入的參數就決定了執行計劃最終走不走索引。而下一回同一條可共享的SQL執行的時候,就不會再去窺探參數了,因此就會導致不必要的SQL執行計劃錯誤。

為了解決這個問題,Oracle推出了Adaptive Cursor Sharing(ACS)。在ACS技術的加持下如果存在數據偏斜,ACS 能夠識別不同的綁定變量值具有不同的選擇性,從而選擇最為合理的執行計劃。

當帶有綁定變量的 SQL 語句首次被解析時,優化器會窺探綁定變量的值,并根據謂詞的選擇性生成一個執行計劃,同時把該游標標記為 bind-sensitive(綁定敏感的)。當同樣的 SQL 語句再次被執行時,優化器會比較當前綁定變量的值和之前的值,如果發現選擇性有顯著差異,優化器可能會創建一個新的子游標和執行計劃,同時把該游標標記為 bind-aware(綁定感知的)。當同樣的 SQL 語句再次被執行時,優化器會根據綁定變量的值的選擇性范圍,匹配最合適的子游標和執行計劃,從而避免使用不適合的執行計劃。

目前Oracle ACS可以在絕大多數場合下解決cursor共享的問題,不過ACS也存在一定的負面作用。比如會增加每次SQL執行的開銷,同時會讓一個CURSOR產生過多的不共享的執行計劃,從而影響這個CURSOR的執行效率,增加MUTEX爭用,嚴重時會引發系統性能問題。因此在某些應用場景中,用戶會選擇關閉ACS功能。

看到這里可能大多數朋友都會覺得我今天還是在炒Oracle ACS的冷飯,如果能看到這里的朋友,今天算是來對了。前面的近兩千字的鋪墊,只是為了讓人更好地理解今天我想帶給大家的一些干貨。    

今天要帶給大家的第一點干貨是和Oracle ACS相關的。雖然很多數據庫不支持全局SQL PLAN CACHE,不過一般都支持會話級SQL PLAN CACHE。當某條SQL執行多次的時候,就不會再對這條SQL做解析,而直接復用緩沖中的執行計劃了。那么與ORACLE 類似的問題出現了,如果數據是不均衡的,有些時候要走索引,有些時候需要走全表掃描怎么辦?這種情況下,就會出現類似Oracle出現過的奇怪現象,某條SQL,有時候執行效率高,有時候執行效率低,而且我們無法控制。遇到這種情況,有時候可能就是因為SQL PLAN CACHE緩沖的執行計劃不一定適合某個場景的SQL。

有些用過Oracle的朋友可能會想到解決這個問題的辦法,那就不使用綁定變量,讓SQL PLAN無法共享。其實這個辦法在某些開源或者國產數據庫中并不一定有效。比如PG數據庫,默認就會對SQL進行簽名,自動轉換成綁定變量格式,就像Oracle數據庫里設置了cursor_sharing=FORCE。而且這些數據庫往往有不支持類似Oracle ACS的功能,因此使用非綁定變量來解決這個問題是無效的。

我們該如何解決這個問題呢?其實在Oracle占主導地位的時代,這個問題就已經有解了。如果我們關閉了ACS功能,但是確實存在某些場景中同樣的SQL帶入不同的參數時,需要有不同的執行計劃,該如何處理呢。遇到這種情況,我們就只能通過在SQL語句上加上注釋(/* PLAN B */),強制性的讓優化器把這條SQL區分為兩條不同的SQL。實際上,當Oracle還沒有推出ACS功能的時候,我們就是這樣在cursor_sharing=FORCE的數據庫里糾正錯誤的執行計劃的,這個方法對于MySQL、PG和一些國產數據庫依然有效。

今天的第二點干貨是關于分布式數據庫的,與集中式數據庫不同的是,分布式數據庫上的 硬解析的成本要高得多,因此在分布式數據庫中,盡可能要實現SQL PLAN CACHE。因此在分布式數據庫上,因為SQL PLAN CACHE引起的SQL PLAN CACHE中的執行計劃不適配的問題依然是存在的,并且在一些高負載的場景中,往往因為此類問題引發分布式集群范圍的性能問題。這種情況下,如果你能夠很快發現問題,并且將某個不合理的執行計劃從SQL PLAN CACHE中清除掉,很快就能解決數據庫集群的性能問題。    

周五的時候,張瑞遠先生就和我討論過一個在OB上遇到的SQL PLAN CACHE引發的執行計劃問題。經過分析發現OB默認的CURSOR_SHARING是FORCE,也就是說默認情況下,OB會自動對SQL進行簽名,將沒有使用綁定變量的SQL轉化為使用綁定變量的格式。如果訪問的數據存在較為嚴重的列傾斜現象,那么就會遇到SQL PLAN CACHE中的執行計劃不適用的問題。經過和OB的朋友一起討論,對OB中解決這個問題初步有了一個方案。首先在Oracle上使用 的PLAN B方案依然適用。如果某條SQL根據綁定變量不同,有少量的幾種情況可以明確區分,那么PLAN B方案是可行的。如果數據傾斜問題比較復雜,不能簡單的分類,那么在OB中可以通過HINT或者outlines,將這條SQL設置為不適用PLAN CACHE來規避這個問題。

在Oracle數據庫中,也有類似的HINT,在數據庫產品沒有ACS功能或者關閉了ACS功能的 時候,這是一種十分有效的方法。繞開PLAN CACHE可以讓本身就無法共享執行計劃的SQL不要去干擾PLAN CACHE,可以更好的保護全局PLAN CACHE。

沒想到今天寫著寫著就寫多了,數據庫的問題,每個小問題其實都夠復雜的,攤開了講,三五千字根本說不清楚,不過不要緊,花上幾年時間,一個個研究清楚,你也就成了高手了。

責任編輯:武曉燕 來源: 白鱔的洞穴
相關推薦

2024-02-21 07:24:21

微服務單體架構MVC

2021-09-15 10:17:53

開源基金會Apache 軟件基金開源社區

2022-07-05 08:34:22

虛擬機JavaJVM

2013-02-01 17:36:35

App開發者用戶體驗

2019-05-07 08:58:53

Python代碼Web

2016-07-22 17:55:07

云計算

2020-05-28 16:54:51

自動駕駛谷歌華為

2023-04-26 10:06:08

RocketMQ屬性Consumer

2024-11-26 14:29:48

2023-10-16 23:12:02

Redis數據結構

2023-10-28 09:00:03

進程系統服務

2016-01-04 11:03:53

手柄vr輸入設備

2019-10-22 22:38:42

技術物聯網藍牙

2023-11-07 07:16:14

云計算AWS谷歌

2021-12-22 09:25:14

小程序函數Python

2022-06-30 13:41:44

SQL 語句group by

2021-03-11 07:26:52

垃圾回收器單線程

2015-07-27 17:54:49

Windows 10升級

2010-04-16 14:51:05

網絡流量

2024-02-19 08:01:59

服務微服務授權
點贊
收藏

51CTO技術棧公眾號

美女精品一区最新中文字幕一区二区三区| 国产1区在线| 国产欧美午夜| 在线观看欧美日韩| 九一精品久久久| 成人免费高清观看| 久久久www成人免费毛片麻豆| 国产精品手机播放| 波多野结衣亚洲色图| 日韩福利视频一区| 69精品人人人人| 国产二级片在线观看| 黄色电影免费在线看| 国产在线国偷精品免费看| 亚州欧美日韩中文视频| 国产视频不卡在线| 大桥未久女教师av一区二区| 欧美午夜影院一区| 成人在线国产视频| 1024国产在线| 91玉足脚交白嫩脚丫在线播放| 国产精品日韩在线一区| 日韩少妇裸体做爰视频| 图片区亚洲欧美小说区| 亚洲欧美日韩一区二区在线| 手机精品视频在线| 无人区在线高清完整免费版 一区二| 最新国产の精品合集bt伙计| 免费观看成人在线| 亚洲va久久久噜噜噜无码久久| 老司机久久99久久精品播放免费| 久久99精品久久久久久青青91| 亚洲一级片在线播放| 日韩母乳在线| 精品久久久久久综合日本欧美| 8x8x最新地址| www.成人影院| 午夜精品福利视频网站| 日本高清视频免费在线观看| 最新97超碰在线| 国产女人水真多18毛片18精品视频| 国产一区二区三区奇米久涩| 国内精品久久久久久久久久| 久久国产欧美日韩精品| 国产z一区二区三区| 在线观看免费国产视频| 亚洲精品黄色| 97色在线视频观看| 一区二区三区免费高清视频| 中文无码久久精品| 日韩视频免费大全中文字幕| 夫妇露脸对白88av| 欧美日韩高清| 亚洲色图国产精品| 免费看黄色的视频| 蜜臀av免费一区二区三区| 亚洲精品美女久久| 污污内射在线观看一区二区少妇| 97青娱国产盛宴精品视频| 欧美一级片在线看| 国产精品igao网网址不卡| 国产精品视频首页| 欧美精品日韩精品| 日本一本在线视频| 一区二区三区免费在线看| 日韩区在线观看| www.美色吧.com| 欧美jizz19性欧美| 亚洲男人天堂视频| 国产三级短视频| 99精品全国免费观看视频软件| 精品国产一区二区在线| 国产真实乱在线更新| 欧美1级日本1级| 欧美高清在线播放| 国产成人愉拍精品久久| 奶水喷射视频一区| 国产精品爽爽爽| 91精品国产乱码久久| 国产精品系列在线观看| 国产精品一区二区免费| 天堂在线中文资源| 国产日韩欧美综合在线| 亚洲视频sss| 欧美理论片在线播放| 午夜精品久久久久久| 欧美性猛交久久久乱大交小说 | 亚洲色图38p| 久久人人视频| 欧美成人一区二区三区在线观看| 在线黄色免费网站| 禁果av一区二区三区| 久久久国产精品亚洲一区| 国产真实夫妇交换视频| 日韩电影免费在线看| 91原创国产| 欧美孕妇孕交| 一区二区三区在线看| 久久9精品区-无套内射无码| 国产成人免费av一区二区午夜| 亚洲第一色在线| 成年人看的免费视频| 在线看片成人| 国产精品丝袜久久久久久不卡| 午夜精品小视频| 国产午夜亚洲精品理论片色戒| 日韩人妻精品一区二区三区| 亚洲美女久久精品| 91精品国产乱码| 一区二区黄色片| 欧美激情1区| 国产精品国产亚洲伊人久久 | 亚洲天堂资源| 欧美一区二区美女| 日本少妇xxxxx| 亚洲理论在线| 97netav| 国产天堂在线| 亚洲成在线观看| 天天综合成人网| 免费成人网www| 午夜精品久久久久久久久久久久| 在线观看毛片视频| 久久精品亚洲乱码伦伦中文| av 日韩 人妻 黑人 综合 无码| 偷拍中文亚洲欧美动漫| 亚洲丁香久久久| 美女福利视频在线观看| 蜜臀久久99精品久久久画质超高清 | 色偷偷偷亚洲综合网另类| 日本高清www免费视频| 国产精品 日产精品 欧美精品| 亚洲国产精品一区在线观看不卡 | 亚洲国产成人av好男人在线观看| 午夜国产一区二区三区| 天堂99x99es久久精品免费| 久久久免费观看| www.久久伊人| 亚洲摸摸操操av| 欧美视频亚洲图片| 我不卡神马影院| 成人xvideos免费视频| 成人精品福利| 欧美视频在线一区| 午夜精产品一区二区在线观看的| 国产一区91| 韩国成人一区| 日本三级一区| 精品亚洲va在线va天堂资源站| 国产一级特黄a高潮片| 国产一区二区在线免费观看| 一区二区在线不卡| 性欧美video另类hd尤物| 在线日韩第一页| 中文天堂在线播放| 国产精品福利一区| 在线能看的av网站| 一个色综合网| 91免费看网站| 丁香花高清在线观看完整版| 日韩精品专区在线| 日本少妇xxxx动漫| 91浏览器在线视频| 免费男同深夜夜行网站| 不卡一区2区| 成人a级免费视频| 日韩伦理电影网站| 亚洲电影免费观看高清| 老熟妇仑乱一区二区av| 国产午夜亚洲精品理论片色戒| 亚洲老女人av| 亚洲经典一区| 国产一区二区不卡视频在线观看| 午夜欧美激情| 在线播放日韩专区| a毛片在线免费观看| 亚洲成人1区2区| 国产色视频一区二区三区qq号| 日本va欧美va精品发布| 超碰成人在线免费观看| 亚洲一区二区三区中文字幕在线观看 | 欧美三级韩国三级日本一级| 成人欧美一区二区三区黑人一 | 免费看裸体网站| 国内成+人亚洲+欧美+综合在线| 成人免费性视频| 少妇精品久久久一区二区| 国产精品影片在线观看| 特级毛片在线| 亚洲视频在线视频| 国产精品伦一区二区三区| 亚洲sss视频在线视频| 男人舔女人下部高潮全视频| 国内成人精品2018免费看| 亚洲 高清 成人 动漫| 日韩电影一区| 国产区日韩欧美| 欧美成人一二区| 97高清免费视频| 欧美jizz18性欧美| 日韩精品免费看| 最近中文字幕在线免费观看| 一区二区三区视频在线观看| 性猛交娇小69hd| 高清国产一区二区| 538任你躁在线精品免费| 亚洲大胆在线| 国产精品夜夜夜爽张柏芝| 偷拍自拍亚洲色图| 91日韩久久| 日韩国产91| 国产ts一区二区| 久草在线资源站资源站| 色噜噜亚洲精品中文字幕| 天堂在线视频免费观看| 日韩一二三区视频| 最近中文字幕在线免费观看| 欧美日韩国产激情| wwwav国产| 国产精品日产欧美久久久久| 青青草视频播放| 国产91精品免费| 爽爽爽在线观看| 日韩国产在线观看| 黄www在线观看| 在线日韩电影| 国产精彩视频一区二区| 91精品综合| 在线观看精品视频| 欧洲激情视频| 日本一区二区三区四区高清视频 | 高清在线成人网| caoporm在线视频| 秋霞电影网一区二区| 无码人妻丰满熟妇区毛片| 99精品国产一区二区青青牛奶| 久久久99精品视频| 亚洲精品一区二区妖精| 亚洲一一在线| 日韩理论在线| 亚洲一区二区不卡视频| 狠狠做六月爱婷婷综合aⅴ| 蜜桃久久影院| 亚洲黄页网站| 欧美福利一区二区三区| 亚洲视频分类| 蜜桃传媒一区二区| 久久综合欧美| 任我爽在线视频精品一| 夜夜春成人影院| 日本福利一区二区三区| 亚洲视频分类| 五月天色一区| 99re66热这里只有精品8| 在线视频精品一区| 亚洲人体av| 日韩精品综合在线| 日韩亚洲精品在线| 国产成人无码精品久久久性色| 免费日韩av| 国产wwwxx| 国模大尺度一区二区三区| 古装做爰无遮挡三级聊斋艳谭| 国产精品99久久久| 国产免费一区二区三区最新6| 99精品1区2区| 先锋影音av在线| 亚洲人xxxx| 国产无码精品久久久| 欧美日韩一区二区三区| 99re热视频| 欧美一区二区三区四区五区 | 99久久综合色| 丰满少妇一区二区| 国产精品网站在线观看| 成年人av电影| 欧美日韩国产色视频| 中文字幕 人妻熟女| 欧美高清hd18日本| 欧美熟女一区二区| 一本一本久久a久久精品牛牛影视| 免费高清完整在线观看| 久久久免费观看视频| 日本一区二区三区视频在线| 亚洲free性xxxx护士hd| 狼人精品一区二区三区在线| 亚欧洲精品在线视频免费观看| 亚洲字幕久久| 欧美日韩国产精品激情在线播放| 日韩一区欧美二区| 日本人妻一区二区三区| 久久久久久免费毛片精品| wwwav国产| 91久久精品网| 亚洲精品人妻无码| 伊人精品在线观看| 欧美精品videossex少妇| 国产成人一区二区| 亚洲精品黑牛一区二区三区| 日韩欧美精品一区二区| 在线不卡欧美| 8x8x成人免费视频| 久久夜色精品国产噜噜av | 色综合夜色一区| japanese国产| 在线精品国产成人综合| 日韩电影免费看| 91gao视频| 精品日产免费二区日产免费二区| 日本国产中文字幕| 蜜桃视频在线观看一区| 欧美一区二区三区成人精品| 亚洲精品乱码久久久久久| www五月天com| 亚洲国产精品人久久电影| 国产鲁鲁视频在线观看特色| 国产精品观看在线亚洲人成网| 精品国产18久久久久久洗澡| 韩国黄色一级大片| 日av在线不卡| 精品无码国产污污污免费网站| 亚洲午夜成aⅴ人片| 国产日韩精品suv| 中文字幕亚洲欧美日韩2019| 成人av观看| 久久爱av电影| 亚洲人成高清| 午夜免费福利影院| 一区二区三区在线视频播放| 国产精品爽爽久久| 日韩中文字幕在线| 国产激情欧美| 亚洲激情一区二区| 男男成人高潮片免费网站| aaaaa级少妇高潮大片免费看| 亚洲h在线观看| 高h震动喷水双性1v1| 欧美精品videosex牲欧美| 欧美1区2区3| 欧美日韩中文字幕在线播放| 黑人精品欧美一区二区蜜桃| 亚洲区一区二区三| 欧美美女bb生活片| 毛片av在线| 91免费视频国产| 欧美大片专区| 亚洲熟妇一区二区| 亚洲午夜久久久久中文字幕久| 亚洲不卡免费视频| 国内偷自视频区视频综合 | 国产一区二区毛片| 成年人午夜剧场| 7777精品伊人久久久大香线蕉完整版 | 91免费精品国自产拍在线不卡| 日本一区二区网站| 日韩www在线| 日产精品一区| 在线丝袜欧美日韩制服| 极品少妇一区二区| 久久99久久98精品免观看软件| 亚洲第一视频网站| 国产美女高潮在线观看| 欧美日韩一区二区三区免费| 日韩精品电影在线观看| 天堂网av2018| 日韩三级av在线播放| 国产99在线观看| 蜜桃视频日韩| 久久99深爱久久99精品| 免费日韩在线视频| 日韩精品极品视频| 成人在线免费| 99久久免费观看| 91免费视频观看| 在线观看亚洲国产| 欧美大荫蒂xxx| 天天躁日日躁成人字幕aⅴ| 激情五月亚洲色图| 亚洲激情图片qvod| 亚洲人在线观看视频| 国产精品一区二区三区毛片淫片| 欧美精品偷拍| 国精产品一区二区三区| 欧美精品在线观看一区二区| 国产丝袜视频在线播放| 日本免费高清不卡| 国产毛片精品视频| 九九热在线免费观看| 日韩在线观看免费高清| 精品丝袜久久| 超碰人人草人人| 亚洲va在线va天堂| 欧美私人网站| 久久99欧美| 国产精一品亚洲二区在线视频| 成人精品免费在线观看| 久久精品国产免费观看| 九九在线精品| 亚州av综合色区无码一区| 欧美日韩视频专区在线播放|