日期:2014-05-16  浏览次数:20427 次

Oracle 性能调优学习笔记(十二)-- 统计管理A

统计管理
??? 优化器统计信息是描述数据库和对象的数据集合.这些统计被用作查询优化器,
?使用的优化器可以得到最优的执行计划.??
??? 优化器统计信息如下:
??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.