交流(1)-- 執行計劃錯誤問題
前幾天參加了一個專案的資料庫技術交流,就提出的問題提供一些思路:
1、執行計劃錯誤問題
2、分割槽表統計分析耗時太長
一、執行計劃錯誤問題
執行計劃錯誤問題,通常我們可以觀察cardinality值的誤差情況,在語句中加
gather_plan_statistics hint ,具體的例子可以參看前面記錄《oracle 10g如何使用
dbms_xplan分析執行計劃》。
cardinality值是基於統計分析產生的評估值,語句加gather_plan_statistics,使
我們能評估出SQL語句實際輸出的行數與評估輸出的行數的差異情況,當我們發現
兩者值差異較大的時候,需要考慮可能以下的原因造成該差異:
1、表沒有統計,或者統計資訊是stale
2、表的資料分佈不均勻,CBO的模型是所有rows平均分配到distinct value上。
3、where 後面的判斷col1 = A and col2=B,col1和col2之間有個包含關係,比
如:省='福建‘ and 分支機構=’廈門‘,CBO並不知道兩者是包含關係,所有計
算selectivity=selectivity(col1)*selectivity(col2),實際的selectivity=
selectivity(col2),造成計算出來的cardinality值偏差。在11g中引入了
擴充套件統計解決該問題。
4、多個列關聯後引起的問題,如3例子,where a.省=b.省 and a.分支機構= b.
分支機構。
5、where function = 'xxx',這個是老生常談的問題了
6、一些複雜的預測,如>=、<=、!=等表示式,該解決方法只能採用動態取樣方
式解決。
擴充套件統計方法可以參看11g的隨機手冊,命令方式如下:
1、設定收集column group 為300秒
exec dbms_stats.seed_col_usage(null, null, 300)
2、生成column使用報告
select dbms_stats.report_col_usage(USER, 'table_name') from dual;
3、對錶進行擴充套件統計
exec dbms_stats.create_extended_stats(USER, 'table_name');
動態取樣:
10g中,optimizer_dynamic_sample預設為2,可以根據實際設定。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/354732/viewspace-683423/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 執行計劃-1:獲取執行計劃
- 檢視執行計劃出現ORA-22992錯誤
- PbootCMS錯誤提示:執行SQL發生錯誤!錯誤:no such column: def1bootSQL
- PbootCMS執行SQL發生錯誤!錯誤:no such column: def1bootSQL
- SQL執行計劃異常引起的效能問題SQL
- SQL執行計劃異常 引起的效能問題SQL
- flink1.14.0在yarn上執行報錯--類載入錯誤--問題Yarn
- [20210114]toad檢視真實執行計劃問題.txt
- Android編譯通過,執行編譯錯誤問題總結Android編譯
- 執行錯誤集
- [20210926]並行執行計劃疑問.txt並行
- SQL優化案例-從執行計劃定位SQL問題(三)SQL優化
- Oracle優化案例-從執行計劃定位SQL問題(三)Oracle優化SQL
- SQL最佳化案例-從執行計劃定位SQL問題(三)SQL
- [20240313]toad gather_plan_statistics執行計劃相關問題.txt
- [20210205]toad檢視真實執行計劃問題3.txt
- 解決 PBootCMS 中因資料庫名稱錯誤導致的“執行 SQL 發生錯誤!錯誤:no such table: ay_config”問題boot資料庫SQL
- 分析執行計劃優化SQLORACLE的執行計劃(轉)優化SQLOracle
- steam確認錯誤執行此操作時出現問題怎麼解決
- 關於 SAP ABAP SYSTEM_SHM_OPEN_CHANGE_LOCK 執行時錯誤的問題
- MySQL執行計劃MySql
- SYBASE執行計劃
- MySQL 執行計劃MySql
- MySql中SUM函式計算錯誤問題MySql函式
- 【執行計劃】Oracle獲取執行計劃的幾種方法Oracle
- 執行SQL發生錯誤!錯誤:disk I/O errorSQLError
- Windows計劃任務出現0x1錯誤結果Windows
- 教你如何解決win10執行msi提示錯誤程式碼2502的問題Win10
- 執行 valet 提示 sudo 問題和 undefined function Valet\collect () 錯誤的解決辦法UndefinedFunction
- 銷售定價例程906計算錯誤問題
- PbootCMS 執行SQL發生錯誤!錯誤: no such table:ay_configbootSQL
- MySQL執行計劃解析MySql
- mysql explain 執行計劃MySqlAI
- explain執行計劃分析AI
- mysql執行計劃explainMySqlAI
- oracle 固定執行計劃Oracle
- Oracle sql執行計劃OracleSQL
- 執行計劃執行步驟原則
- 【PG執行計劃】Postgresql資料庫執行計劃統計資訊簡述SQL資料庫