Oracle OCP笔记(21)统计信息,顾问程序,警报与阀值
一.统计信息
1.关于统计信息
统计信息对SQL语句的性能影响巨大,优化器将使用统计信息来设计有效的执行计划。可以采用手工或自动方式来收集统计信息。如果在收集了统计信息后,性能问题依然存在,那么可以使用各种指标来探究问题的根源。
统计与PL/SQL无关,只与SQL有关。不过,大多数PL/SQL代码都包含对SQL语句的调用。对于这些语句来说,统计信息同样非常重要。
1.对象统计信息
表的统计信息(显示在视图dba_tables中)
·表中的行数
·为表分配的块数(无论是否曾经被使用过)
·正在使用的块内的空闲空间数
·每行的平均长度
·链接行数(分割在多个块内的行,可能是行过长或存储设置不当)
列的统计信息(显示在视图dba_tab_columns中)
·不同值的数目
·最大值和最小值
·NULL值的数目
·平均列长度
索引的统计信息(显示在视图dba_indexes中)
·索引树的深度
·不同键值的数目
·聚合因子(行的自然顺序与索引顺序之间的接近程度)
索引相关的统计信息(显示在视图index_stats中)
·引用现有行的索引数
·引用被删除行的索引数
就维护索引的方式而言,上面这些信息很有价值。维护索引的方式为: 行被删除时,保留索引键。经过一段时间后,由于对被删除行的引用占用了大量空间,因此索引会变得低效。
2.手动收集统计信息
analyze命令
analyze table tablename compute statistics;
dbms_stats程序包
dbms_stats.gather_table_stats
dbms_stats.gather_schema_stats
锁住统计信息
dbms_stats.lock_table_stats
dbms_stats.lock_schema_stats
解锁统计信息
dbms_stats.unlock_table_stats
dbms_stats.unlock_schema_stats
3.控制统计信息的收集和可见性(参数statistics_level)
select value from v$parameter where name like 'statistics_level';
·BASIC -- 禁用AWR(自动工作负荷仓库)统计信息的计算,并禁用日常分析,将无法使用各种性能和调整顾问,警报系统将不起作用。
·TYPICAL -- 默认值,收集数据库的自我管理和调整功能需要的所有统计信息,并将启用每天在维护窗口中运行的自动对象分析任务。
·ALL -- 收集所有可能的统计信息。包括操作系统活动统计信息,以及有关SQL语句执行的非常详细的统计信息。可能对性能产生负面影响。
自动统计信息收集任务每天在维护窗口执行此任务,维护窗口在平时晚上运行4个小时(22点开始),周六日运行20个小时(6点开始)。
由自动任务收集的统计信息足够使用,没有必要再手工收集统计信息。
二.自动工作负荷仓库
1.关于自动工作负荷仓库(AWR)
Oracle收集大量有关活动和性能的信息,这些统计信息收集到内存中,并由MMON后台进程定期转储到自动工作负荷仓库(AWR)。 <