国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

數(shù)據(jù)庫性能問題總結(jié)--屢次發(fā)生的Oracle謂詞越界

數(shù)據(jù)庫 Oracle
近期在客戶現(xiàn)場屢次遇到由于統(tǒng)計信息過舊,導致執(zhí)行計劃選錯引發(fā)的數(shù)據(jù)庫性能問題,今天做個總結(jié)。

 [[392208]]

本文轉(zhuǎn)載自微信公眾號「數(shù)據(jù)和云」,作者任艷杰。轉(zhuǎn)載本文請聯(lián)系數(shù)據(jù)和云公眾號。  

近期在客戶現(xiàn)場屢次遇到由于統(tǒng)計信息過舊,導致執(zhí)行計劃選錯引發(fā)的數(shù)據(jù)庫性能問題,今天做個總結(jié)。

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

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

測試驗證

下面做一組測試,從執(zhí)行計劃 cost 看謂詞越界的發(fā)生過程,先插入部分數(shù)據(jù):

  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 

不收集統(tǒng)計信息,此時統(tǒng)計列統(tǒng)計信息過舊,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 

查詢結(jié)果返回 2081 行結(jié)果集。

  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. 計算結(jié)果為: 
  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 

查看結(jié)果集發(fā)現(xiàn) dictionary 值為 1,這明顯是一個錯誤的執(zhí)行計劃,由于統(tǒng)計信息過舊,已經(jīng)低于謂詞條件區(qū)間(謂詞過界)導致 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 

重新收集統(tǒng)計信息再次查看執(zhí)行計劃。

  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 

此時統(tǒng)計信息 HIGH_VALUE 已經(jīng)和最初計算的值相等,Typ=2 Len=2: c3,b。再次查看執(zhí)行計劃,此時 CBO 已經(jīng)能夠產(chǎn)生了正確的執(zhí)行計劃了。

執(zhí)行計劃為:

  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 

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

預防方式

可對關(guān)鍵表實行按謂詞查詢條件分區(qū),即按天或者按月分區(qū)可規(guī)避此問題發(fā)生。

責任編輯:武曉燕 來源: 數(shù)據(jù)和云
相關(guān)推薦

2023-11-16 17:12:33

數(shù)據(jù)庫oracle

2010-05-04 17:08:24

Oracle數(shù)據(jù)庫

2010-06-17 12:59:07

Oracle

2010-04-13 10:32:40

Oracle數(shù)據(jù)庫編程

2010-04-20 10:41:49

Oracle數(shù)據(jù)庫

2011-04-12 10:09:33

Oracle數(shù)據(jù)庫關(guān)閉

2011-05-20 10:30:20

ORACLE數(shù)據(jù)庫性能優(yōu)化

2011-05-18 09:39:19

Oracle數(shù)據(jù)庫性能優(yōu)化

2009-02-01 13:33:13

Oracle數(shù)據(jù)庫配置

2010-11-15 16:13:24

Oracle數(shù)據(jù)庫性能

2010-05-07 17:39:02

Oracle數(shù)據(jù)庫性能

2010-05-10 15:50:39

Oracle數(shù)據(jù)庫性能

2011-03-28 15:44:45

惠普數(shù)據(jù)庫Oracle數(shù)據(jù)庫

2010-04-07 09:31:02

Oracle數(shù)據(jù)庫

2011-06-14 15:11:59

ORACLE

2011-09-02 10:06:51

OracleSqlLoad常用技巧

2010-04-09 15:08:17

Oracle 數(shù)據(jù)庫性

2010-12-10 10:17:21

關(guān)系型數(shù)據(jù)庫

2011-03-17 14:09:25

Oracle數(shù)據(jù)庫字符

2009-06-30 15:02:41

磁盤排序Oracle數(shù)據(jù)庫性能
點贊
收藏

51CTO技術(shù)棧公眾號

久久免费福利视频| 精品91免费| 丁香花电影在线观看完整版| ...中文天堂在线一区| 99中文字幕在线观看| 性感少妇一区| 国产欧美日韩综合一区在线观看 | 动漫一区二区| 日韩欧美大尺度| 美乳在线观看| 国产精品毛片大码女人| 一区二区传媒有限公司| 丁香婷婷综合色啪| 日韩精品视频在线观看视频| 国产精品一区二区不卡| 成人午夜视频在线观看免费| 久久久久久电影| 四虎av网址| 亚洲电影激情视频网站| 日韩亚洲视频在线观看| 色八戒一区二区三区| 亚洲欧美视频一区二区| 欧美亚洲精品一区| www视频在线看| 亚洲精品成人久久电影| yy6080久久伦理一区二区| 免费av一区二区| 亚洲精品国产精品粉嫩| 国产在线精品一区免费香蕉| 一区二区三区毛片免费| 欧美午夜精品久久久久免费视| 丝袜a∨在线一区二区三区不卡| 亚洲人成网站在线播放2019| 国产高清不卡二三区| 欧美成人免费在线观看视频| 中文字幕久久午夜不卡| 玖玖在线免费视频| 欧美一区二区精品| 日本中文字幕一区二区| 97视频在线播放| 91精品国产视频| 亚洲精品成人久久久998| 不卡av免费在线观看| 国产成免费视频| 欧美丰满嫩嫩电影| 小明成人免费视频一区| 欧美一乱一性一交一视频| 欧美日一区二区三区在线观看国产免| 日本一区不卡| 国产欧美综合色| 高清av在线| 中文字幕日韩专区| 日本成人小视频| 亚洲第一导航| 中文字幕一区二区三区蜜月| 五月香视频在线观看| 久久久91精品| 欧美深夜福利| 131美女爱做视频| 狠狠色噜噜狠狠狠狠97| 久久sese| 国产一区二区在线播放| 久久爱www久久做| 91人人网站| 亚洲精品电影久久久| 久9久9色综合| 亚洲一区二区在| 亚洲国产日韩av| 成人视屏在线观看| 91传媒视频免费| 久久人人爽人人爽| 成年人网站在线| 日本精品免费观看| 国产一区二区三区免费| 在线三级av| 色噜噜狠狠色综合网图区| 欧美a级一区| 国产理论在线播放| 亚洲电影免费观看高清完整版在线 | 日韩成人影视| 欧美成人国产va精品日本一级| 欧美久久成人| 男人插女人下面免费视频| 在线不卡中文字幕| 成人av资源网址| 日本女人高潮视频| 色综合天天性综合| 国产精品xxxav免费视频| 久久免费视频2| 欧美午夜精品久久久久久孕妇| 国产成人一二片| 九一免费在线观看| 欧美高清激情brazzers| 精品国产一区二区三区av片| 国产最新免费视频| 亚洲国产精品专区久久| 欧美激情综合| 粉嫩欧美一区二区三区| 欧美激情视频在线免费观看 欧美视频免费一 | 亚洲美女自拍视频| 国产精品草草| 男女午夜视频在线观看| 欧美大胆在线视频| 国产精品一区专区| 91亚洲天堂| 99国产超薄肉色丝袜交足的后果| 国产精品久久三区| 久久电影天堂| 在线观看17c| 日韩成人激情视频| 日本欧美韩国一区三区| 成年视频在线观看| 久久久福利视频| 欧美日韩中文字幕一区| 久久久久蜜桃| 一区二区三区高清在线视频| 国产精品日韩专区| 亚洲大片免费看| 成人在线免费小视频| 美乳在线观看| 国产精品直播网红| 日韩欧美黄色动漫| 亚洲午夜91| av香蕉成人| 图片区小说区区亚洲五月| 日韩欧美一区二区免费| 日韩av一区二区在线影视| 黄色网址视频在线观看| 蜜桃成人免费视频| 欧美一级淫片007| 日本免费新一区视频| 国产美女高潮在线观看| 佐佐木明希av| 色综久久综合桃花网| 91网站黄www| 国产美女撒尿一区二区| 免费福利片在线观看| 欧美资源在线观看| 婷婷国产在线综合| 黑人一区二区| 一色桃子av在线| 艳色歌舞团一区二区三区| 一本大道亚洲视频| 国产午夜精品理论片a级大结局| 91麻豆精品国产91久久久久推荐资源| 久久撸在线视频| 国产精品日韩欧美大师| 欧美偷拍一区二区| 久久电影国产免费久久电影 | 精品久久久久久最新网址| 手机精品视频在线观看| 欧美大电影免费观看| 久久无码高潮喷水| 欧美制服第一页| 欧美日韩视频在线第一区 | 国产精品传媒入口麻豆| 成人久久电影| caoporn免费在线视频| 国产精品久久久影院| 欧美激情伊人电影 | 日韩二区在线观看| 欧美7777| 免费羞羞视频| 国产精品乱码| 亚洲精品国精品久久99热一| xf在线a精品一区二区视频网站| 国产真实有声精品录音| 国产精品va在线观看视色| 无码人妻丰满熟妇区96| 成人黄色免费片| 亚洲欧美日韩视频一区| 一区二区三区在线观看动漫| 亚洲欧美日韩国产一区| 欧美激情啪啪| 久色视频在线| 波多野结衣家庭教师在线播放| 成人免费视频a| 在线精品高清中文字幕| 亚洲第一主播视频| 国产又黄又大久久| 欧美偷拍自拍| 欧美成人精品一区二区男人小说| 国产免费专区| 中文字幕乱码一区二区三区| 日韩美女毛茸茸| 亚洲美女在线视频| 香蕉成人啪国产精品视频综合网| 国产一区激情在线| 香蕉综合视频| www欧美在线观看| 五月天婷婷在线视频| 窝窝九色成人影院| 国产高清精品软男同| 国产精品最新在线观看| 亚洲欧美三级在线| 天天做天天摸天天爽国产一区| 国产激情视频一区二区三区欧美| 久久久久久久久久久9不雅视频| 99er精品视频| 日韩另类在线|