精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日本在线xxx| 国产精品我不卡| 侵犯稚嫩小箩莉h文系列小说| 国产精品视频首页| 亚洲国产视频一区| 日本成人黄色| www.久久伊人| 鲁大师影院一区二区三区| 日韩视频精品在线| 99久久人妻精品免费二区| 日本在线中文字幕一区二区三区| 中文字幕在线不卡视频| 国产乱子伦精品| 亚洲天堂手机在线| 99精品国产在热久久婷婷| 在线观看国产精品淫| 性感美女一区二区三区| 吞精囗交69激情欧美| 一区二区三区资源| 日韩欧美在线一区二区| 亚洲精品无遮挡| 蜜桃视频在线观看一区| 国产最新精品视频| 国产高清视频免费在线观看| 国产日韩三级| 欧美一级二级三级蜜桃| 日本一本二本在线观看| 日韩激情av| 国产精品色呦呦| 国产日韩一区二区| 99久久久国产精品无码免费| 日本三级视频在线播放| а√在线天堂官网| 欧美激情一区二区三区四区| 亚洲最大的免费| 日本一区二区三区精品| 欧美女人交a| 在线视频一区二区| 日本丰满少妇裸体自慰 | 久久国产一区二区三区| 狠狠人妻久久久久久综合蜜桃| 欧美.com| 7777精品伊人久久久大香线蕉的 | 久久久久久久黄色| 97精品在线| 一区二区三区国产视频| 国产黄色三级网站| 成人性生交大片免费看96| 欧美一级久久久久久久大片| 亚洲精品20p| 99riav视频一区二区| 日本丰满少妇一区二区三区| 日本成年人网址| 中文字幕 在线观看| 五月天激情综合| 怡红院av亚洲一区二区三区h| 色网在线观看| 亚洲综合久久av| 青青青在线视频播放| 波多野结依一区| 亚洲成人精品一区二区| 色欲色香天天天综合网www| 丰乳肥臀在线| 精品久久久久久亚洲精品| 777av视频| 日本免费一区二区六区| 欧美日韩中文字幕日韩欧美| 国产又黄又大又粗视频| 理论不卡电影大全神| 精品国产成人在线| 能看的毛片网站| 国产三级一区| 日韩一区二区精品葵司在线| 波多野结衣办公室双飞 | 视频一区视频二区视频三区高| 国产黄色片在线播放| 国产精品美女一区二区三区| 日韩视频在线观看视频| 青春草免费在线视频| 精品国产精品自拍| 亚洲少妇第一页| 亚洲欧美专区| 亚洲第一网站免费视频| 波多野结衣福利| 国产精品久久天天影视| 欧美高清不卡在线| 亚洲 欧美 成人| 青青国产91久久久久久| 91理论片午午论夜理片久久| 黄色aaa毛片| 久久久久国色av免费看影院| 亚洲人久久久| heyzo高清在线| 日本精品免费观看高清观看| 亚洲精品成人在线播放| 高清精品视频| 在线亚洲午夜片av大片| 欧美被狂躁喷白浆精品| 久久激情网站| 99精品欧美一区二区三区| 免费在线观看污视频| 亚洲欧洲制服丝袜| 四虎永久在线精品无码视频| 精品国产欧美| 亚洲欧美日韩精品| 国产女人被狂躁到高潮小说| 久久免费高清| 成人蜜桃视频| 69av在线| 欧美日韩视频免费播放| 日本77777| 免费视频亚洲| 欧美极品第一页| 一级片在线观看视频| a亚洲天堂av| 自拍视频一区二区三区| 中文日产幕无线码一区二区| 欧美一区二区人人喊爽| 美国美女黄色片| 国产精品丝袜xxxxxxx| 666精品在线| av男人的天堂在线| 欧美日韩亚洲成人| 国产成人av免费观看| 91欧美日韩| 国产成人+综合亚洲+天堂| 好吊视频一二三区| 亚洲日本成人在线观看| 鲁一鲁一鲁一鲁一av| 在线成人动漫av| 97婷婷大伊香蕉精品视频| 国产日韩一级片| 国产精品久久久久精k8| 老头吃奶性行交视频| 亚洲精品国产动漫| 午夜剧场成人观在线视频免费观看| 国产精品人人爽| 国产精品乱人伦中文| 天堂社区在线视频| 亚洲视频分类| 91精品国产99| 性xxxxbbbb| 欧美性生交xxxxx久久久| 无码任你躁久久久久久老妇| 韩国在线一区| 国产高清精品一区| h片在线观看| 亚洲精品久久久久久久久久久久| 国产极品在线播放| 99在线热播精品免费| 妞干网在线观看视频| 国产一级成人av| 668精品在线视频| 天堂在线一二区| 欧美日韩一区二区精品| 极品白嫩的小少妇| 亚洲国产清纯| 久久综合九色综合久99| 日韩pacopacomama| 国产小视频91| 91久久久久国产一区二区| 成人免费一区二区三区视频| 夜夜爽久久精品91| 黄页网站一区| 精品久久久久久综合日本| 丝袜老师在线| 一区二区在线免费视频| 一区二区日韩视频| 一区二区三区在线观看网站| 韩国黄色一级片| 国产欧美日韩亚洲一区二区三区| 欧美福利精品| 人人玩人人添人人澡欧美| 久久精品成人欧美大片古装| 精品人妻少妇AV无码专区| 亚洲国产精品久久人人爱蜜臀| 中文字幕精品久久久| 石原莉奈在线亚洲二区| 曰韩不卡视频| 粉嫩的18在线观看极品精品| 日本在线精品视频| 性开放的欧美大片| 日韩美女主播在线视频一区二区三区| 99视频在线看| 国产精品女同一区二区三区| 国产在线视频三区| 亚洲一级在线| 色撸撸在线观看| 日韩精选在线| 成人久久18免费网站图片| 丰满诱人av在线播放| 亚洲午夜未删减在线观看| 国产精品免费无遮挡| 黑人巨大精品欧美一区二区三区| 亚欧精品视频一区二区三区| 国产suv精品一区二区三区| 无码精品国产一区二区三区免费| 国产精品99久久精品| 久久99精品久久久久久水蜜桃| 成人在线观看免费播放| 欧美国产视频一区二区| 9191在线观看| 日韩av在线天堂网| 国产精品日韩无码| 欧美在线视频日韩| 亚洲国产精品午夜在线观看| 国产精品免费视频观看| 亚洲第九十七页| 国产成人精品免费| 午夜激情av在线| 亚洲一区网站| 日本五级黄色片| 日韩在线综合| 日本欧洲国产一区二区| jizzjizzjizz欧美| 91久久精品视频| 韩日精品一区| 人妖精品videosex性欧美| 色呦呦视频在线观看| zzijzzij亚洲日本成熟少妇| 九色视频在线播放| 亚洲国语精品自产拍在线观看| 国产乱码精品一区二三区蜜臂| 91精品福利视频| 久久中文字幕免费| 福利一区福利二区微拍刺激| 伊人国产在线观看| 亚洲永久精品国产| 亚洲成人生活片| 国产精品久久久久影院老司| 这里只有久久精品| 91香蕉视频污| 粉嫩av懂色av蜜臀av分享| 丁香五精品蜜臀久久久久99网站 | 日韩免费黄色片| 亚洲一区二区在线视频| 色婷婷在线视频观看| 国产精品高潮久久久久无| 日本精品在线观看视频| 国产色婷婷亚洲99精品小说| 日韩人妻无码一区二区三区| 99精品热视频| 久久久久国产精品无码免费看| 成人在线视频首页| 日韩精品视频一区二区| av不卡在线观看| 国产精品无码一区二区三| 成人久久久精品乱码一区二区三区| 免费黄视频在线观看| 国产精品一区在线观看你懂的| 午夜一区二区视频| 国产一区二区剧情av在线| 日本77777| 成人一区二区三区中文字幕| 成人区人妻精品一区二| aaa欧美色吧激情视频| 538国产视频| 国产日产欧美一区| 老司机精品免费视频| 亚洲欧美日韩电影| 久青草视频在线观看| 五月婷婷久久综合| 中文字幕在线播| 欧美日韩中文字幕一区| aa视频在线免费观看| 精品国产a毛片| 日本福利在线观看| 在线中文字幕日韩| av软件在线观看| 午夜精品久久久久久久99热浪潮 | 国产精品欧美久久久| 欧美成人毛片| 成人免费在线一区二区三区| 日韩有码一区| 色综合影院在线观看| 一本一本久久a久久综合精品| www.亚洲成人网| 免费在线日韩av| av在线网址导航| 国产精品夜夜爽| av网站免费在线播放| 中文字幕在线观看一区| 精品在线视频免费观看| 在线视频国内自拍亚洲视频| 国产情侣自拍小视频| 亚洲毛片在线观看.| 国产精品刘玥久久一区| 77777少妇光屁股久久一区| 国模私拍国内精品国内av| 成人动漫在线观看视频| 国产欧美日韩影院| 国产小视频免费| 日韩和欧美一区二区| 波多野结衣三级视频| 国产片一区二区| 免费一级黄色大片| 欧美午夜电影网| 四虎精品一区二区三区| 播播国产欧美激情| 在线天堂新版最新版在线8| 91亚洲午夜在线| 国产精品亚洲片在线播放| 人人妻人人澡人人爽欧美一区| 日韩电影在线观看一区| a级一a一级在线观看| 综合中文字幕亚洲| 天堂网视频在线| 精品国产一区二区精华| 免费在线看黄色| 日韩美女毛茸茸| 国偷自产av一区二区三区| 91免费网站视频| 老鸭窝一区二区久久精品| free性中国hd国语露脸| 亚洲已满18点击进入久久| 夜夜狠狠擅视频| 在线观看日韩专区| 成人福利av| 久久精品国产第一区二区三区最新章节 | 精品久久一区二区三区| 免费a级在线播放| 国产精品久久久久久久久借妻| 麻豆成人入口| 日韩伦理在线免费观看| 国产传媒一区在线| 亚洲欧美综合7777色婷婷| 色老综合老女人久久久| 天堂а√在线8种子蜜桃视频| 久国内精品在线| 成人国产精品久久| 亚洲综合网中心| 蜜桃视频一区二区| 日本欧美一区二区三区不卡视频| 粉嫩av一区二区三区免费野| 少妇av一区二区| 久久久亚洲影院| 成人午夜网址| www在线观看免费| 91网站最新网址| 九九热在线免费观看| 精品视频在线导航| 亚洲精品中文字幕| 欧美 日韩 国产在线| 性欧美xxxx大乳国产app| 中文字幕一区二区人妻电影丶| 亚洲国产成人av| 日韩中文字幕观看| 97在线视频精品| 亚洲丝袜啪啪| 亚洲激情在线观看视频| 国产精品三级av在线播放| 一区二区视频免费| 精品国偷自产在线| 久久国产精品美女| 成人在线免费观看视频网站| 粉嫩13p一区二区三区| 日产精品久久久久| 亚洲码在线观看| 日本成人一区二区| 热久久最新网址| fc2成人免费人成在线观看播放| 男女视频免费看| 国产亚洲欧洲在线| 成人污污www网站免费丝瓜| 特色特色大片在线| 不卡一区二区在线| 天天爽夜夜爽人人爽| 最新国产精品拍自在线播放| 国产精区一区二区| 性欧美大战久久久久久久| 久久久久久久久97黄色工厂| 在线观看国产小视频| 欧美精品一区三区| 欧美freesex8一10精品| 美女一区二区三区视频| 亚洲欧美日韩中文字幕一区二区三区| 亚洲黄色在线观看视频| 欧美最顶级丰满的aⅴ艳星| 日韩精品水蜜桃| 日本xxxx免费| 91精品福利在线| 日韩精品亚洲人成在线观看| 欧美日本韩国一区二区三区| 韩国精品一区二区| 五月婷婷激情网| 中文字幕亚洲激情| 国产乱人伦丫前精品视频| 日韩无套无码精品| 亚洲精选视频免费看| 三区在线视频| 91免费精品国偷自产在线| 中文精品在线| 久艹在线观看视频| 日韩精品视频在线播放| 3d动漫一区二区三区在线观看| 男人用嘴添女人下身免费视频| 国产精品卡一卡二卡三| 亚洲欧洲综合在线| 91情侣偷在线精品国产| 久久黄色网页|