解决Oracle SQL语句性能问题——收集和维护统计数据

所谓统计数据,前述文中也提到过,它们是数据库优化器赖以产生SQL语句最优执行计划的依据。以这些统计数据为基础,优化器通过内置的模型、算法等,计算出全部或候选执行计划的成本(Cost),通过比较每个执行计划的成本,选出成本最低的执行计划,也就得到了SQL语句打算采用的执行计划,最终为节省系统资源消耗奠定了稳定、可靠的基础,优化器是数据库系统中最重要、最核心的组件之一。这里,我们所说要收集和维护的统计数据,主要是指前述文中讲到的对象相关的统计数据。

1. 自动收集统计数据

正常情况下,系统会有任务(Task)自动定期收集统计数据,这个任务在固定的时间窗口对数据库相关统计数据进行收集。当然,这个时间窗口也可以改变,默认为每天晚上和周末,具体的任务和时间窗口,以及查看和操作的命令,各个版本会有所不同,具体可以参考官方或其他相关文档。下面,我们以Oracle 11g为例,对这个任务及其调度窗口的查询、禁用、开启及配置等进行说明。

1.1. 任务查看

SQL> select CLIENT_NAME,STATUS from DBA_AUTOTASK_CLIENT;

1.2. 任务禁用

SQL> exec DBMS_AUTO_TASK_A

你可能感兴趣的:(Oracle性能优化与实例解析,统计数据,收集,手工,自动,扩展)