统计管理
优化器统计信息是描述数据库和对象的数据集合.这些统计被用作查询优化器,
使用的优化器可以得到最优的执行计划.
优化器统计信息如下:
1.表统计:行数量,block数量,平均行的长度.
2.列统计: 列中distinct的值.列中null的值,数据的分布,扩展的统计.
3.索引的统计:子节点的块数量.子节点数量.集群因子.
4.系统的统计:IO性能和利用率,CPU的性能和利用率
数据库对象的统计信息更新了,当对象变化了,那么sql的语句的统计信息
将重新统计,此时sql将重新解析,并重新生成执行计划.
dbms_stats:通过这个包针对对象更改和解析的统计.
dbms_stats.gather_table_stats;
dbms_stats.gather_index_stats;
dbms_stats.gather_schema_stats;
dbms_stats.gather_database_stats;
dbms_stats.gather_stale_stats;
select num_rows,blocks from dba_tables where owner='HR'
and table_name='EMPLOYEE';
数据字典管理统计表
tables:
user_tables
user_tab_statistics
user_tab_partitions
user_tab_subpartitions
columns:
user_table_col_statistics
user_tab_histograms
user_part_col_statistics
user_part_histograms
user_subpart_col_statistics
user_subpart_histograms
index:
user_ind_statistics
user_indexes
user_ind_statistics
user_ind_partitions
user_ind_statistics
user_ind_subpartitions
表统计信息:
1.行数.
2.块数和空余块.
3.每一个block平均空闲空间.
4.关联行数或者迁移行
5.平均行长度
6.上次分析的时间和样例大小.
7.dba_tables数据字典的信息.
索引统计
1.索引级别
2.子节点的block数量.
3.平均每一个子节点数.
4.平均每一个子节点的block数.
5.索引实体的数量.
6.cluster factor 排序方式.
7.dba_indexes索引字典表.
列统计:
distinct 数值
最小的值,最大的值.
上次分析的时间.
user_tab_col_statistics:
all_tab_col_statistics:
dba_tab_columns:
segment-level的统计信息
逻辑读(取样)
buffer busywait():
db block changed(取样的)
物理读,
物理写.
直接读(主要在PGA中).
直接写(主要在PGA中).
全局缓存的读一致性.
全局信息当前块的.
v$segstat_name:列出各个segment的收集信息.
select * from v$segstat_name;
v$segstat:显示统计信息.
select statistic_name statistic#,value
from v$segstat_name dataobj# in (
select object_id from dba_objects
where owner='HR'
and object_name='T'
);
使用动态取样
取样收集统计高效.
启用动态取样
OPTIMIZER_DYNAMIC_SAMPLING=0:表示优化器动态取样不被支持.
OPTIMIZER_DYNAMIC_SAMPLING=1:
执行时间:
查询访问多个表.
一个表没有被分析.
全表扫描时候没有发现分析信息.
OPTIMIZER_DYNAMIC_SAMPLING=2:
分析没有分析的所有块.
oracle9i缺省为1,oracle9i以后缺省为2.