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

數據庫性能問題總結--屢次發生的Oracle謂詞越界

數據庫 Oracle
近期在客戶現場屢次遇到由于統計信息過舊,導致執行計劃選錯引發的數據庫性能問題,今天做個總結。

 [[392208]]

本文轉載自微信公眾號「數據和云」,作者任艷杰。轉載本文請聯系數據和云公眾號。  

近期在客戶現場屢次遇到由于統計信息過舊,導致執行計劃選錯引發的數據庫性能問題,今天做個總結。

謂詞越界常見發生在 where 謂詞是時間字段的情況,總的來說統計信息記錄的是一個過舊的時間,而 SQL 傳入的時間是一個最新的時間范圍(往往是 <time time1<c<time2)由于統計信息不全,按照 CBO 計算出來的結果集就很小,在多表關聯的情況下,CBO 就會選擇認為的最優的關聯方式,而實際執行時發現不是那么回事,有大量結果集需要掃描,就會爆發 SQL 性能問題。

謂詞越界就是 select 的謂詞的條件不在統計信息 low_value 和 high_value 之間,在實際選擇結果集要大于 CBO 記錄的結果集數量,即實際的 selectivity 偏大,這種情況下 CBO 評估出來的 selectivity 會出現嚴重的偏差,導致 CBO 選錯執行計劃。

測試驗證

下面做一組測試,從執行計劃 cost 看謂詞越界的發生過程,先插入部分數據:

  1. DECLARE 
  2. INT
  3. BEGIN 
  4. i := 78179; 
  5. WHILE(i < 100000) 
  6. LOOP 
  7. i := i + 1; 
  8. INSERT INTO test_obj(object_id) VALUES(i); 
  9. COMMIT
  10. END LOOP; 
  11. END

查看此時的 num_rows:

  1. TEST@PROD1> select count(*) from test_obj; 
  2.   COUNT(*) 
  3. ---------- 
  4.      94283 
  5. TEST@PROD1> select max(object_ID),dump(max(object_id),16) from test_obj; 
  6.   
  7. MAX(OBJECT_ID) DUMP(MAX(OBJECT_ID),16) 
  8. -------------- ---------------------------------------- 
  9.         100000 Typ=2 Len=2: c3,b     
  10. TEST@PROD1> select min(object_ID),dump(min(object_id),16) from test_obj; 
  11.   
  12. MIN(OBJECT_ID   )               DUMP(MIN(OBJECT_ID),16) 
  13. ------------------------------ ---------------------------------------- 
  14.       2                          Typ=2 Len=2: c1,3        --C103 

不收集統計信息,此時統計列統計信息過舊,HIGH_VALUE 依然是原來的值 78179。

  1. TEST@PROD1> select  low_value ,high_value,num_distinct,num_nulls from  DBA_TAB_COL_STATISTICS where table_name='TEST_OBJ' and owner='TEST'
  2.   
  3.                                                                   Distinct     Number 
  4. LOW_VALUE                      HIGH_VALUE                           Values      Nulls 
  5. ------------------------------ ------------------------------ ------------ ---------- 
  6. C103                           C3085250                             72,462(原值)  0 

查詢結果返回 2081 行結果集。

  1. TEST@PROD1> select count(*) from test_obj where object_id between 78200 and 81000; 
  2.   COUNT(*) 
  3. ---------- 
  4.       2801 
  5. 計算公式為: 
  6. selectivity=((VAL2 - VAL1) / (HIGH_VALUE - LOW_VALUE)+2 / NUM_DISTINCT) * null_adjust 
  7. null_adjust=(NUM_ROES - NUM_NULLS) / NUM_ROES 
  8.  
  9. 計算結果為: 
  10. TEST@PROD1>  select round(((81000-78200)/(100000-2)+2/94283)*(94283-0)/94283*94283) from dual;  
  11.   
  12. ROUND(((81000-78200)/(100000-2)+2/94283)*(94283-0)/94283*94283) 
  13. --------------------------------------------------------------- 
  14.                                                            2642 

查看結果集發現 dictionary 值為 1,這明顯是一個錯誤的執行計劃,由于統計信息過舊,已經低于謂詞條件區間(謂詞過界)導致 CBO 低估了查詢成本。

  1. TEST@PROD1>  select count(*) from test_obj where object_id between 78200 and 81000; 
  2.   
  3. Execution Plan 
  4. ---------------------------------------------------------- 
  5. Plan hash value: 2217143630 
  6.   
  7. ------------------------------------------------------------------------------- 
  8. | Id  | Operation          | Name     | Rows  | Bytes | Cost (%CPU)| Time     | 
  9. ------------------------------------------------------------------------------- 
  10. |   0 | SELECT STATEMENT   |          |     1 |     5 |   289   (1)| 00:00:04 | 
  11. |   1 |  SORT AGGREGATE    |          |     1 |     5 |            |          | 
  12. |*  2 |   TABLE ACCESS FULL| TEST_OBJ |     1 |     5 |   289   (1)| 00:00:04 | 
  13. ------------------------------------------------------------------------------- 
  14.   
  15. Predicate Information (identified by operation id): 
  16. --------------------------------------------------- 
  17.   
  18.    2 - filter("OBJECT_ID">=78200 AND "OBJECT_ID"<=81000) 
  19.   
  20.   
  21. Statistics 
  22. ---------------------------------------------------------- 
  23.           1  recursive calls 
  24.           0  db block gets 
  25.        1117  consistent gets 
  26.           0  physical reads 
  27.           0  redo size 
  28.         423  bytes sent via SQL*Net to client 
  29.         419  bytes received via SQL*Net from client 
  30.           2  SQL*Net roundtrips to/from client 
  31.           0  sorts (memory) 
  32.           0  sorts (disk) 
  33.           1  rows processed 

重新收集統計信息再次查看執行計劃。

  1. TEST@PROD1> exec dbms_stats.gather_table_stats('test','test_obj'); 
  2. TEST@PROD1> select  low_value ,high_value,num_distinct,num_nulls from  DBA_TAB_COL_STATISTICS where table_name='TEST_OBJ' and owner='TEST'
  3.   
  4.                                               Distinct     Number 
  5. LOW_VALUE            HIGH_VALUE                 Values      Nulls 
  6. -------------------- -------------------- ------------ ---------- 
  7. C103                 C30B                       94,283          0 

此時統計信息 HIGH_VALUE 已經和最初計算的值相等,Typ=2 Len=2: c3,b。再次查看執行計劃,此時 CBO 已經能夠產生了正確的執行計劃了。

執行計劃為:

  1. TEST@PROD1> select count(*) from test_obj where object_id between 78200 and 81000; 
  2.   
  3. Execution Plan 
  4. ---------------------------------------------------------- 
  5. Plan hash value: 2217143630 
  6.   
  7. ------------------------------------------------------------------------------- 
  8. | Id  | Operation          | Name     | Rows  | Bytes | Cost (%CPU)| Time     | 
  9. ------------------------------------------------------------------------------- 
  10. |   0 | SELECT STATEMENT   |          |     1 |     5 |   314   (1)| 00:00:04 | 
  11. |   1 |  SORT AGGREGATE    |          |     1 |     5 |            |          | 
  12. |*  2 |   TABLE ACCESS FULL| TEST_OBJ |  2642 | 13210 |   314   (1)| 00:00:04 | 
  13. ------------------------------------------------------------------------------- 
  14.   
  15. Predicate Information (identified by operation id): 
  16. --------------------------------------------------- 
  17.   
  18.    2 - filter("OBJECT_ID">=78200 AND "OBJECT_ID"<=81000) 
  19.   
  20.   
  21. Statistics 
  22. ---------------------------------------------------------- 
  23.           0  recursive calls 
  24.           0  db block gets 
  25.        1117  consistent gets 
  26.           0  physical reads 
  27.           0  redo size 
  28.         423  bytes sent via SQL*Net to client 
  29.         419  bytes received via SQL*Net from client 
  30.           2  SQL*Net roundtrips to/from client 
  31.           0  sorts (memory) 
  32.           0  sorts (disk) 
  33.           1  rows processed 

謂詞越界主要發生在大表,按照 Oracle 統計信息收集機制,表的數據變化量達到 10% 以上才會進行統計信息收集,大表不常收集統計信息就容易爆發謂詞越界。

預防方式

可對關鍵表實行按謂詞查詢條件分區,即按天或者按月分區可規避此問題發生。

責任編輯:武曉燕 來源: 數據和云
相關推薦

2023-11-16 17:12:33

數據庫oracle

2010-05-04 17:08:24

Oracle數據庫

2010-06-17 12:59:07

Oracle

2010-04-13 10:32:40

Oracle數據庫編程

2010-04-20 10:41:49

Oracle數據庫

2011-04-12 10:09:33

Oracle數據庫關閉

2011-05-20 10:30:20

ORACLE數據庫性能優化

2011-05-18 09:39:19

Oracle數據庫性能優化

2009-02-01 13:33:13

Oracle數據庫配置

2010-05-07 17:39:02

Oracle數據庫性能

2010-11-15 16:13:24

Oracle數據庫性能

2010-05-10 15:50:39

Oracle數據庫性能

2011-03-28 15:44:45

惠普數據庫Oracle數據庫

2011-06-14 15:11:59

ORACLE

2011-09-02 10:06:51

OracleSqlLoad常用技巧

2010-04-07 09:31:02

Oracle數據庫

2010-04-09 15:08:17

Oracle 數據庫性

2010-12-10 10:17:21

關系型數據庫

2011-03-17 14:09:25

Oracle數據庫字符

2010-04-16 10:18:10

Import性能
點贊
收藏

51CTO技術棧公眾號

日本天堂在线| 日韩高清dvd碟片| 在线亚洲人成| 欧美国产精品一区二区| 国产原创欧美精品| 国产一级视频在线| 精品国产网站| 欧美成人a视频| 国产裸体舞一区二区三区| 青青草原播放器| 欧美 亚洲 另类 激情 另类| 天天精品视频| 国产网站欧美日韩免费精品在线观看 | 日本www在线播放| 激情视频在线观看| 久久亚洲捆绑美女| 91美女福利视频高清| 中文字幕精品三级久久久| 国产精品99久久精品| 亚洲精品电影在线观看| 国产精品中文久久久久久| 日韩影片中文字幕| 亚洲午夜一区二区三区| 欧美爱爱视频网站| 免费在线观看污视频| 成人午夜又粗又硬又大| 成人做爰www免费看视频网站| 无码人妻精品一区二区三区蜜桃91 | 一区二区三区国产在线观看| 男女性杂交内射妇女bbwxz| 欧美高清你懂的| 色婷婷综合久久久中文一区二区| 91网站在线观看免费| 免费黄网站在线播放| 国产清纯美女被跳蛋高潮一区二区久久w | 99热99精品| 91精品天堂| 国产又色又爽又黄又免费| 快she精品国产999| 国产91对白在线播放| 国产亚洲成人精品| 你懂的成人av| 久久综合伊人77777尤物| 一级肉体全黄裸片| 国产欧美日韩视频在线| 欧美国产日本| 亚洲精品一区二区三区香蕉| 国产性生活一级片| 亚洲精品成a人ⅴ香蕉片| 欧美性色黄大片| 不要播放器的av网站| 亚洲精华液一区二区三区| 午夜精品久久久久| 欧美午夜性视频| 波多野在线观看| 亚洲丶国产丶欧美一区二区三区| 大陆极品少妇内射aaaaaa| 黄色成人影院| 一区二区三区欧美激情| 黄色污污在线观看| www在线免费观看视频| 伊人色综合久久天天人手人婷| 人人妻人人澡人人爽精品欧美一区| 精品51国产黑色丝袜高跟鞋| 亚洲三级在线看| 日韩在线视频在线| 精品极品在线| 图片区小说区区亚洲影院| 国产老熟妇精品观看| 精品国产免费人成网站| 在线免费观看日本一区| 免费看涩涩视频| 精品国产一级| 亚洲第一av网| 色噜噜日韩精品欧美一区二区| 欧美一站二站| 欧美美女操人视频| 日本少妇性生活| 裸体素人女欧美日韩| 国产精品普通话| 国产偷人妻精品一区二区在线| 国产1区2区3区精品美女| 久久久人人爽| 伊人在线视频| 亚洲mv在线观看| 白嫩少妇丰满一区二区| 欧美91在线|欧美| 精品美女在线播放| 成人精品999| 色戒汤唯在线观看| 亚洲一区观看| 91成人在线播放| 这里只有精品6| 成人高清伦理免费影院在线观看| 日本免费高清一区| 成人直播在线| 欧美三级免费观看| 日本一二三区在线| 日韩高清一级| 久久久www成人免费精品| 久久综合激情网| 青娱乐精品视频在线| 成人影片在线播放| 国产高清免费av在线| 亚洲精品国产无天堂网2021 | 日本成人在线电影网| 97在线电影| 国产二区在线播放| 亚洲国产人成综合网站| 在线看的黄色网址| 亚洲精品亚洲人成在线观看| 欧美精品一二区| 高潮毛片又色又爽免费 | www.超碰97| 影音先锋日韩精品| 国产精品2018| 日本波多野结衣在线| 国产精品成人免费在线| 国产中文字幕免费观看| 亚洲不卡在线| 日韩亚洲成人av在线| 日韩精品久久久久久免费| 国产成人在线影院 | 国产艳妇疯狂做爰视频| 成人综合久久| 日本精品视频在线| 日韩一级片免费| 亚洲伊人伊色伊影伊综合网| 在线不卡一区二区三区| 国产欧美日韩在线观看视频| 国内揄拍国内精品少妇国语| 精品国产亚洲av麻豆| 国产精品久久久久久久第一福利| www.亚洲天堂| 国产人妻精品一区二区三区不卡| 日韩国产欧美视频| 麻豆av一区二区| 国产在线天堂www网在线观看| 欧美一区二区三区小说| 国产精品视频在| 久久久久.com| 欧美一区二区三区电影在线观看 | 日韩在线观看| 国产成人免费av| 视频国产一区二区三区| 婷婷综合另类小说色区| 日本黄色免费观看| 国产精品毛片在线看| 韩国精品一区二区三区六区色诱| 国产丝袜视频在线播放| 亚洲国产成人精品久久| 久久免费公开视频| 成+人+亚洲+综合天堂| 欧洲精品一区二区三区久久| 澳门成人av| 97婷婷涩涩精品一区| 亚洲第一视频在线| 亚洲444eee在线观看| 日韩无码精品一区二区| 国产亚洲一级| 日韩亚洲视频| 久久天天久久| 欧美激情国产精品| 亚洲欧洲精品视频| 色先锋资源久久综合| www久久久久久久| 久久国产婷婷国产香蕉| 路边理发店露脸熟妇泻火| 亚洲精品一二三**| 91国内免费在线视频| 三级在线播放| 亚洲黄色免费看| 一区二区亚洲视频| 亚洲福利影片在线| 国产精品777777| 国产网站一区二区| 亚洲最大综合网| 亚洲精品在线观看91| 成人午夜影院在线观看| 亚洲人成午夜免电影费观看| 欧美少妇激情| 久久精品一区四区| 天堂中文视频在线| 希岛爱理av一区二区三区| 91中文字精品一区二区| 日韩脚交footjobhdboots| 亚洲一区999| av免费观看网址| 精品国产老师黑色丝袜高跟鞋| 亚洲第一成人网站| 国产乱码精品1区2区3区| 日本人体一区二区| 色婷婷色综合| 国产一区免费在线观看| 色猫猫成人app| 欧美激情一级精品国产| 蜜桃成人在线视频| 欧美一二三四区在线| 久久一区二区三区视频| 1024国产精品| 欧美 日本 国产| 国产一区三区三区| 国产福利视频在线播放| 中文字幕一区二区av| 欧美日韩在线观看一区| 精品国产一区二| 国产精品久久久久久av下载红粉| 日本乱理伦在线| 这里只有精品久久| 天堂国产一区二区三区| 欧美老年两性高潮| 欧美日韩一级黄色片| 亚洲一区二区三区在线播放| 青青青视频在线播放| 北岛玲一区二区三区四区| 色乱码一区二区三区在线| 最新日韩av| 国产成人精品免费看在线播放| 一区二区小说| 国产区二精品视| 免费精品一区| 国产精品久久久久久久久久三级| heyzo一区| 久久国产精品免费视频| av网在线观看| 亚洲天堂成人在线视频| 欧美综合视频在线| 日韩一级免费观看| 91精品国产综合久| 在线视频你懂得一区| 日韩欧美一级视频| 亚洲一级二级在线| 免看一级a毛片一片成人不卡| 亚洲国内欧美| 亚洲精品久久久久中文字幕欢迎你| 久久久精品福利| 精品女同一区二区三区在线播放| 久久免费公开视频| 亚洲男人的天堂在线aⅴ视频 | 国产午夜精品理论片a级大结局| 亚洲日本久久久| 大陆成人av片| 日韩精品xxx| 国产剧情av麻豆香蕉精品| 国产女同无遮挡互慰高潮91| 久久黄色级2电影| 日韩av自拍偷拍| 精品一区中文字幕| 亚洲男人天堂av在线| 久久成人av少妇免费| 午夜国产福利在线观看| 国产一区二区三区精品欧美日韩一区二区三区 | 国产原创精品视频| zzjj国产精品一区二区| 成年视频在线观看| 欧美精品国产精品日韩精品| 欧美78videosex性欧美| 97视频在线观看亚洲| 精品国产免费人成网站| 国产精品第七影院| 日韩精品一页| 97av自拍| 日韩在线你懂的| 日本一区视频在线观看| 欧美在线电影| 中国老女人av| 影音先锋国产精品| 日本一区二区黄色| 免费高清不卡av| www.超碰97.com| 国产成人av电影在线| 插我舔内射18免费视频| 91免费国产在线| avhd101老司机| **网站欧美大片在线观看| 免费视频一二三区| 欧美三级免费观看| 一级特黄录像免费看| 国产福利91精品一区二区三区| 高清视频一区| 天天操综合520| 三区精品视频观看| 亚洲国产精品久久久久蝴蝶传媒| 欧美国产视频一区| 乱码第一页成人| 色男人天堂av| 久久综合给合久久狠狠狠97色69| 精品亚洲aⅴ无码一区二区三区| 亚洲天堂2016| 国产精品久免费的黄网站| 欧美精品在线观看播放| 污视频网站免费观看| 色阁综合伊人av| 国产社区精品视频| 成人免费视频网址| 少妇高潮一区二区三区| 中文字幕中文字幕在线中一区高清| 亚洲激情av| 看看黄色一级片| 99久久精品国产导航| 任你操精品视频| 精品av在线播放| 国产丝袜视频在线观看| 亚洲欧美中文日韩v在线观看| 国产黄网站在线观看| 欧美制服第一页| 亚洲精品18| 亚洲精品一区二| av成人天堂| 久久黄色一级视频| 欧美激情一区二区三区不卡| 国产精品第72页| 欧美日韩aaaaaa| 欧美女子与性| 国自产精品手机在线观看视频| 亚洲精品69| 亚洲精品一卡二卡三卡四卡| 亚洲欧美日韩国产综合精品二区 | 精品国内自产拍在线观看| 自拍偷拍欧美视频| 国产伦精品一区二区三区视频免费| 欧美国产一级| 天天操天天摸天天爽| 99精品久久久久久| 日本少妇毛茸茸高潮| 欧美一级片免费看| 久做在线视频免费观看| 国产成人精品av在线| 香蕉久久夜色精品国产更新时间| 国产精品国产三级国产专区51| 国内精品自线一区二区三区视频| 免费黄色在线网址| 在线欧美日韩精品| 九九九伊在人线综合| 538国产精品一区二区免费视频| 91精品入口| 日韩一级免费看| 国产麻豆91精品| 岛国毛片在线观看| 69堂成人精品免费视频| 蜜桃视频在线观看www社区| 国产日产精品一区| 国产一区二区播放| 91.成人天堂一区| 国产在线激情| 亚洲www视频| 一区二区三区网站| 樱花草www在线| 亚洲精品欧美专区| 99久久精品免费看国产交换| 久久综合色88| av成人app永久免费| 拔插拔插海外华人免费| 9久草视频在线视频精品| 在线观看黄网站| 国产网站欧美日韩免费精品在线观看 | 综合欧美亚洲日本| 国产男男gay体育生白袜| 久久久精品一区| 久久久久毛片免费观看| 日韩精品久久一区二区| 成人中文字幕电影| 日本道在线观看| 亚洲天天在线日亚洲洲精| 亚洲高清黄色| 桥本有菜av在线| 国产老肥熟一区二区三区| 国产无套在线观看| 国产视频久久网| 免费视频观看成人| 日本人妻伦在线中文字幕| www.日韩大片| 日韩综合在线观看| 久久精品亚洲精品| 国产欧美自拍一区| 欧美自拍小视频| 一区二区成人在线| 日本护士...精品国| 国产精品一区二区性色av| 欧美日韩岛国| 中文字幕一区二区人妻在线不卡| 欧美三级电影精品| 欧洲在线视频| 日韩精品在在线一区二区中文| 国内欧美视频一区二区| 国产精品suv一区二区三区| 一区二区亚洲欧洲国产日韩| 欧美中文高清| 国产l精品国产亚洲区久久| 中文字幕亚洲综合久久菠萝蜜| 精品欧美一区二区精品少妇| 日韩美女在线看| 欧美在线日韩| 公肉吊粗大爽色翁浪妇视频| 欧美大片一区二区| 国产精品亲子伦av一区二区三区 | 美女网站视频在线| 欧洲一区二区在线观看| 国产精品一区久久久久| 日日摸天天添天天添破|