中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于oracle 11g acs的一點總結:

發布時間:2020-08-09 05:17:56 來源:ITPUB博客 閱讀:287 作者:kunlunzhiying 欄目:關系型數據庫

今天談談下面這幾個參數對數據庫性能和穩定性的影響:

cursor_sharing:游標共享

_optim_peek_user_binds:綁定變量窺視

_optimizer_adaptive_cursor_sharing:自適應游標共享(簡稱ACS),一般還包括另外兩個_optimizer_extended_cursor_sharing和_optimizer_extended_cursor_sharing_rel 參數)


_optim_peek_user_binds和ACS:

在10g,因為沒有ACS,一般建議客戶關閉綁定變量窺視功能的情況多一些。

在11g,很多客戶還是將綁定變量窺視和ACS都關閉了,原因有的是數據庫從1g升級而來,升級后沒有改,還有就是因為ACS早期版本有一些bug。其實這是兩個很好的參數,可以在代碼寫的不是太好的情況下,也能獲得比較好的性能。雖然ACS可能還有一些小bug沒有解決(有的bug是在很特殊的情況下才會觸發),到了11204版本應該都不是大問題了。老虎劉建議還是都開啟比較好。


最重要的參數還在下面,如果做到了下面這兩點,上面兩個參數就顯得不是那么重要了:


首先,cursor_sharing這個參數對系統性能和穩定性都非常重要,可惜經常被忽略,建議使用該參數的默認值:

    即 cursor_sharing=EXACT  (而不是FORCE或similar)

    這要求應該使用綁定變量的地方,必須使用綁定變量。這個對于OLTP系統來說是鐵律,不容置疑,cursor_sharing=FORCE通常就是為了解決該使用綁定變量而沒有使用綁定變量的情況。前年在網上看到一個廣為流傳的某水果公司的AWR報告,居然設置 cursor_sharing= FORCE ,令人感嘆啊。


其次,還有一個重要的補充條件:

不該使用綁定變量的地方,不用綁定變量:對那些唯一值較少的字段,特別是數據分布不均的情況,不建議使用綁定變量。如type、status等字段,我們建議使用常量:where type=1 and status=2。

這種情況如果使用了綁定變量,就是綁定變量窺視和ACS發揮作用的時候。



如果cursor_sharing=FORCE;或者cursor_sharing=EXACT,但是在數據分布不均的字段上也使用了綁定變量(兩者基本上是等同的,雖然后一種略好于前一種情況),那么就要考慮“綁定變量窺視”和“自適應游標”兩個參數的影響了。


看下面幾種情況:

1、關閉“綁定變量窺視”(默認是開啟):

ACS同時失效,這時系統的穩定性好(不會因為綁定變量的不同,發生執行計劃改變),但是整體性能會下降:因為不能窺視綁定變量,只能按照字段是數據分布均勻的情況來計算,在能否使用索引,返回行源的估值上,都會出現較大的偏差,有時可能會配合使用hint來提高SQL性能。


2、如果開啟了“綁定變量窺視”而不開啟ACS(默認是開啟):

那么系統就會極不穩定:比如硬解析窺視到一個綁定變量適合全表掃描的執行計劃,不管接下來的綁定變量是否能使用索引,都會一直全表掃描下去,直到下次硬解析時再次窺視綁定變量才可能重新生成新的執行計劃。


3、如果開啟“綁定變量窺視”,同時開啟ACS:

這種情況在解決了一部分穩定性的同時,兼顧了性能。也是11g新增的ACS比10g沒有ACS進步的地方:執行計劃不再從一而終,而是會根據綁定變量的不同,不是很及時的做出調整:比如第一次窺視到的綁定變量適合全表掃描,那么第二次即使使用的綁定變量適合走索引,也還是會使用全表掃描的執行計劃,下一次再次執行就會糾正為使用索引的執行計劃(具體請參考ACS的實現原理)。


綁定變量窺視和ACS這兩個參數是與直方圖信息緊密聯系在一起的,關閉直方圖收集,也就相當于關閉了綁定變量窺視和ACS,即使開啟了這兩個參數。


直方圖能較為準確的反映數據分布不均字段的數據分布情況,一般使用默認選項(auto),某些特殊情況可以補充或去掉某些字段的直方圖信息。一些客戶在數據庫級關閉收集直方圖的做法是不建議的。



總結:

最佳實踐:

cursor_sharing=EXACT + 合理使用綁定變量(合理就是:類似ID、account_no等唯一值等于或接近表行數的字段,必須使用綁定變量;而type、status等唯一值少且數分別不均的字段,不使用綁定變量)。

綁定變量窺視和ACS保持默認開啟狀態。



特殊情況:

1、字段唯一值有一定的數量(介于少與多之間),比如1000個,如果數據分布均勻,則可以使用綁定變量。如果字段分布不均,則把占比多的幾個值,使用常量,其他值使用綁定變量。

2、字段唯一值少,還有經常互相轉變的情況,比如常見的工單處理表:沒有處理的狀態是0,處理后的狀態是1,夜間統計信息收集后,由于字段值的不穩定,統計信息經常不能反映表的實時數據分布情況,這種情況談是否使用綁定變量已沒有意義,涉及這類表的SQL,可以關閉字段上的直方圖收集,再配合rownum和hint 來提高SQL效率和穩定性,必要時還可以使用dynamic_sampling(動態采樣)來輔助優化器做出正確的執行計劃


最差組合:

cursor_sharing=FORCE

_optim_peek_user_binds=TRUE(開啟綁定變量窺視)

_optimizer_adaptive_cursor_sharing=FALSE(關閉ACS,還有其他兩個參數也要一起設置)

執行計劃不穩定的同時還會帶來低性能。

使用ACS的前提條件:
1.綁定變量使用變量窺視;
2.綁定變量的列上使用直方圖;


關閉acs步驟:


我們先來看看跟ACS相關的三個隱藏參數,是用來控制是否啟用ACS
col ksppinm for a30
col ksppstvl for a20
col ksppdesc for a35
SELECT   ksppinm, ksppstvl, ksppdesc
FROM   x$ksppi x, x$ksppcv y
WHERE   x.indx = y.indx AND  ksppinm = '_optimizer_adaptive_cursor_sharing';
KSPPINM                        KSPPSTVL             KSPPDESC
------------------------------ -------------------- -----------------------------------
_optimizer_adaptive_cursor_sha TRUE                 optimizer adaptive cursor sharing
ring


SELECT   ksppinm, ksppstvl, ksppdesc
FROM   x$ksppi x, x$ksppcv y
WHERE   x.indx = y.indx AND  ksppinm = '_optimizer_extended_cursor_sharing';
KSPPINM                        KSPPSTVL             KSPPDESC
------------------------------ -------------------- -----------------------------------
_optimizer_extended_cursor_sha UDO                  optimizer extended cursor sharing
ring


SELECT   ksppinm, ksppstvl, ksppdesc
FROM   x$ksppi x, x$ksppcv y
WHERE   x.indx = y.indx AND  ksppinm = '_optimizer_extended_cursor_sharing_rel';
KSPPINM                        KSPPSTVL             KSPPDESC
------------------------------ -------------------- -----------------------------------
_optimizer_extended_cursor_sha SIMPLE               optimizer extended cursor sharing f
ring_rel
所以如果我們要關閉ACS,使用如下的命令
alter system set "_optimizer_extended_cursor_sharing_rel"=none;
alter system set "_optimizer_extended_cursor_sharing"=none;
alter system set "_optimizer_adaptive_cursor_sharing"=false;



參考:
http://mp.weixin.qq.com/s?__biz=MzIzMTQ3OTE4Mw==&mid=2247483871&idx=1&sn=06a86ac02f4f63e339979588308ea386&scene=1&srcid=09140h8P90bBFNlYiDgaEojG#rd


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

寻乌县| 东源县| 西平县| 平江县| 龙州县| 邵阳县| 靖宇县| 云阳县| 连云港市| 西畴县| 那坡县| 常州市| 乐业县| 新源县| 安图县| 夏津县| 万源市| 岳池县| 江油市| 罗江县| 巫溪县| 汉寿县| 宣汉县| 中山市| 嵊泗县| 砀山县| 碌曲县| 长寿区| 蓝山县| 通州区| 英超| 佛冈县| 灌南县| 绵竹市| 当雄县| 夏邑县| 东台市| 石渠县| 新乡市| 长宁县| 华宁县|