Oracle學習系列—資料庫優化—Collect Statistics
收集統計資訊,收集分割槽物件的全域性資訊,調整你的統計資訊.
但是,以下情況下,你必須使用ANALYZE語句,而不是DBMS_STATS來收集統計資訊(這些資訊與CBO優化無關):
n To use the VALIDATE or LIST CHAINED ROWS clauses
n To collect information on freelist blocks
Table 3–1 Statistics Gathering Procedures in the DBMS_STATS Package Procedure Collects
GATHER_INDEX_STATS Index statistics
GATHER_TABLE_STATS Table, column, and index statistics
GATHER_SCHEMA_STATS Statistics for all objects in a schema
GATHER_DATABASE_STATS Statistics for all objects in a database
GATHER_SYSTEM_STATS CPU and I/O statistics for the system
收集系統統計資訊
系統統計資訊能夠確保優化器考慮系統I/O和CPU的效能和利用率.對於每一個候選執行計劃,優化器進行I/O和CPU成本的評估.瞭解系統如何在平衡I/O和CPU成本中選擇最佳計劃是非常重要的.
系統I/O依賴於許多因素,不是一個常量.通過系統統計資訊,資料庫管理員能夠獲取通常狀態下的系統壓力.例如系統應用能夠在白天處理OLTP事務,同時在晚上執行OLAP報表.系統管理員收集這兩種狀態下的資訊,需要的時候,啟用OLTP或者OLAP統計資訊.這能夠保證優化器根據系統資源計劃產生相應的成本.
Oracle產生系統統計資訊時,主要分析一段時間內的系統活動情況..和表索引欄位統計不同,系統統計資訊更新時Oracle不會使的已經解析的SQL語句無效,新的SQL語句將根據新的統計資訊進行解析.
DBMS_STATS.GATHER_SYSTEM_STATS可以根據使用者自定義的方式收集系統資訊.
DBMS_STATS.SET_SYSTEM_STATS能夠指定系統統計引數.
execute dbms_stats.create_stat_table(ownname => 'WBQ',stattab => 'MYSTATS');
Gather statistics during the day. Gathering ends after 720 minutes and is stored in the mystats table:
BEGIN
DBMS_STATS.GATHER_SYSTEM_STATS(
gathering_mode => 'interval',
interval => 720,
stattab => 'mystats',
statid => 'OLTP');
END;
/
Verifying Table Statistics
To verify that the table statistics are available, query the data dictionary view DBA_TABLES, using a statement like the one in Example 3–3:
Example 3–3 Verifying Table Statistics
SQL> SELECT TABLE_NAME, NUM_ROWS, BLOCKS, AVG_ROW_LEN,
TO_CHAR(LAST_ANALYZED, ’MM/DD/YYYY HH24:MI:SS’)
FROM DBA_TABLES
WHERE TABLE_NAME IN (’SO_LINES_ALL’,’SO_HEADERS_ALL’,'SO_LAST_ALL');
Verifying Index Statistics
To verify that index statistics are available and decide which are the best indexes to use in an application, query the data dictionary view DBA_INDEXES, using a statement like the one in Example 3–4:
Example 3–4 Verifying Index Statistics
SQL> SELECT INDEX_NAME "NAME", NUM_ROWS, DISTINCT_KEYS "DISTINCT",
LEAF_BLOCKS, CLUSTERING_FACTOR "CF", BLEVEL "LEVEL",
AVG_LEAF_BLOCKS_PER_KEY "ALFBPKEY"
FROM DBA_INDEXES
WHERE OWNER = 'SH'
ORDER BY INDEX_NAME;
Optimizer Index Determination Criteria
The optimizer uses the following criteria when determining which index to use:
n Number of rows in the index (cardinality).
n Number of distinct keys. These define the selectivity of the index.
n Level or height of the index. This indicates how deeply the data probe must search in order to find the data.
n Number of leaf blocks in the index. This is the number of I/Os needed to find the desired rows of data.
n Clustering factor (CF). This is the collocation amount of the index block relative to data blocks. The higher the CF, the less likely the optimizer is to select this index.
n Average leaf blocks for each key (ALFBKEY). Average number of leaf blocks in which each distinct value in the index appears, rounded to the nearest integer. For indexes that enforce UNIQUE and PRIMARY KEY constraints, this value is always one.
Verifying Column Statistics
To verify that column statistics are available, query the data dictionary view DBA_TAB_COL_STATISTICS, using a statement like the one in Example 3–5:
Example 3–5 Verifying Column Statistics
SQL> SELECT COLUMN_NAME, NUM_DISTINCT, NUM_NULLS, NUM_BUCKETS, DENSITY
FROM DBA_TAB_COL_STATISTICS
WHERE TABLE_NAME ="PA_EXPENDITURE_ITEMS_ALL"
ORDER BY COLUMN_NAME;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6517/viewspace-145526/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫學習優質站點資料庫
- oracle資料庫調優描述Oracle資料庫
- Oracle效能優化-資料庫CPU使用率100%Oracle優化資料庫
- 資料庫優化 - SQL優化資料庫優化SQL
- 資料庫優化資料庫優化
- 資料庫優化SQL資料庫優化SQL
- MySQL資料庫優化MySql資料庫優化
- 資料庫系列:MySQL索引優化總結(綜合版)資料庫MySql索引優化
- 推薦一個Oracle資料庫學習網站Oracle資料庫學習網站
- 從 Oracle 日誌解析學習資料庫核心原理Oracle資料庫
- 掌握Oracle資料庫效能調優方法Oracle資料庫
- 資料庫優化之臨時表優化資料庫優化
- 資料庫優化建議資料庫優化
- 百萬級資料庫優化資料庫優化
- 資料庫查詢優化資料庫優化
- 資料庫效能優化2資料庫優化
- MYSQL資料庫------SQL優化MySql資料庫優化
- 資料庫學習(一)三正規化資料庫
- 【資料庫】查詢優化之子連線優化資料庫優化
- NLP系列學習:資料平滑
- AutoTiKV:基於機器學習的資料庫調優機器學習資料庫
- MySQL 資料庫與 SQL 優化MySql資料庫優化
- 資料庫應用優化(一)資料庫優化
- 資料庫結構的優化資料庫優化
- 09.Django-資料庫優化Django資料庫優化
- 【資料庫】MySQL查詢優化資料庫MySql優化
- 【資料庫】優化SQL語言資料庫優化SQL
- 學習MongoDB資料庫MongoDB資料庫
- 關於資料庫 statistics_level的介紹資料庫
- 資料庫效能優化-索引與sql相關優化資料庫優化索引SQL
- 深圳軟體測試學習:【資料庫】-【oracle】-連線查詢資料庫Oracle
- Sql Server 資料庫學習-常用資料庫 物件SQLServer資料庫物件
- 人性化易操作國產資料庫達夢資料庫學習淺談資料庫
- 【TUNE_ORACLE】Oracle資料庫與HugePages(一)HugePages概念和優勢Oracle資料庫
- 資料庫效能優化有哪些方式資料庫優化
- 教你七步優化資料庫優化資料庫
- 分散式資料庫排序及優化分散式資料庫排序優化
- MySql的資料庫優化到底優化啥了都(3)MySql資料庫優化
- 【從零開始學習Oracle資料庫】(4)建立表與增刪改和資料庫事務Oracle資料庫