dbms_stat與analyze的區別
【IT168知識庫】
自從Oracle8.1.5引入dbms_stats包,Experts們便推薦使用dbms_stats取代analyze。 理由如下
- dbms_stats可以並行分析
- dbms_stats有自動分析的功能(alter table monitor )
- analyze 分析統計資訊的不準確some times
1,2好理解,且第2點實際上在VLDB中是最吸引人的;3以前比較模糊,看了metalink236935.1 解釋,analyze在分析Partition表的時候,有時候會計算出不準確的Global statistics .
原因是,dbms_stats會實在的去分析表全域性統計資訊(當指定引數);而analyze是將表分割槽(區域性)的statistics 彙總計算成表全域性statistics ,可能導致誤差。
如果想分析整個使用者或資料庫,還可以採用工具包,可以並行分析
Dbms_utility(8i以前的工具包)
Dbms_stats(8i以後提供的工具包)
如
dbms_stats.gather_schema_stats(User,estimate_percent=>100,cascade=> TRUE);
dbms_stats.gather_table_stats(User,TableName,degree => 4,cascade => true);
這是對命令與工具包的一些總結
1、對於分割槽表,建議使用DBMS_STATS,而不是使用Analyze語句。
a) 可以並行進行,對多個使用者,多個Table
b) 可以得到整個分割槽表的資料和單個分割槽的資料。
c) 可以在不同級別上Compute Statistics:單個分割槽,子分割槽,全表,所有分割槽
d) 可以倒出統計資訊
e) 可以使用者自動收集統計資訊
2、DBMS_STATS的缺點
a) 不能Validate Structure
b) 不能收集CHAINED ROWS, 不能收集CLUSTER TABLE的資訊,這兩個仍舊需要使用Analyze語句。
c) DBMS_STATS 預設不對索引進行Analyze,因為預設Cascade是False,需要手工指定為True
3、對於oracle 9裡面的External Table,Analyze不能使用,只能使用DBMS_STATS來收集資訊。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31397003/viewspace-2147401/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- dbms_stat, dbms_utility與analyze的區別
- oracle dbms_stat與analyze 獲取有效的統計資訊(5)Oracle
- oracle dbms_stat與analyze 獲取有效的統計資訊(4)Oracle
- oracle dbms_stat與analyze 獲取有效的統計資訊(3)Oracle
- oracle dbms_stat與analyze 獲取有效的統計資訊(2)Oracle
- oracle dbms_stat與analyze 獲取有效的統計資訊(1)Oracle
- oracle dbms_stat與analyze 獲取有效的統計資訊(6)Oracle
- 【效能優化】ANALYZE 與DBMS_STATS的區別優化
- 【轉】dbms_stats.gather_table_stats與analyze table 的區別
- dbms_stats.gather_table_stats與analyze table 的區別[轉貼]
- Oracle DBMS_STATS 包 和 Analyze 命令的區別Oracle
- analyze index 時validate structure和compute statistics的區別IndexStruct
- ??與?:的區別
- MySQL的@與@@區別MySql
- mybatis #與$的區別MyBatis
- Null 與 “” 的區別Null
- &與&&, |與||區別
- in與exist , not in與not exist 的區別
- CentOS 與 Ubuntu 的區別CentOSUbuntu
- artice與section的區別
- GET 與 POST 的區別
- WebSocket 與 Socket 的區別Web
- Postgresql與MySQL的區別MySql
- chown與chmod的區別
- LESS與SASS的區別
- free 與 CFRelease 的區別
- gulp與webpack的區別Web
- @Autowired 與@Resource的區別
- let與var的區別
- post與get的區別
- HashSet與HashMap的區別HashMap
- maven與ant的區別Maven
- __new()__ 與 __init()__的區別
- TCP與UDP的區別TCPUDP
- Mysql與mongodb的區別MySqlMongoDB
- typedef與define的區別
- Eureka與Zookeeper的區別
- buffer與cache的區別