Oracle如何锁住或解锁统计信息?

0    253    1

Tags:

👉 本文共约1839个字,系统预计阅读时间或需7分钟。

简介

Oracle会自动收集表的统计信息,大部分情况下,这种行为是有利的。

当不需要对某个表做收集的时候,可以采用锁定统计信息的方法,把不需要收集的表排除在外,这样可以使得此表上的统计信息不变。

从Oracle 10g 开始,Oracle提供了锁定/解锁表统计信息功能,它的目的是阻止数据库自动收集统计信息,防止可能会产生/出现的糟糕的计划。它对于数据频繁更改的Volatile Tables最有用,因为Volatile Tables的某些数据集可能会生成糟糕的计划。

官方的介绍如下:

Prevent automatic statistic gathering where this may otherwise produce poor plans. As such it is most useful for volatile tables whose data changes frequently and for whom poor plans may be generated with certain data sets.

注:什么是Volatile Tables呢?官方解释:Volatile tables are being deleted or truncated, and then rebuilt during the day. 还有一种解释指:Volatile Tables 是指变化比较大的表,即频繁进行Insert、Delete、Update 多种操作的表。

另外,数据库自动收集表的统计信息,大部分情况下,这种行为对于数据库的性能是有利的。但是也有一些情况,我们不想数据库自动收集某个表的统计信息,例如:

  • 1:自动收集统计信息作业数据采样的比例过低,尤其对于一些大表,准确来说是对于一些数据不怎么变化的大表,我们想手工收集集统计信息(指定较高的采样比例)。这样有利于相关SQL生成正确的执行计划。
  • 2:自动统计信息收集作业运行过后或运行期间,由于一些作业或业务逻辑出现了大量的DML,此时收集的的统计信息可能是不准确,也是就说自动统计信息收集对于这种表没有什么意义,反而浪费了大量资源,我们需要手工或设置相关作业去收集统计信息。那么我们就可以通过锁定表的统计信息,阻止数据库的自动收集统计信息作业去采集相关统计信息。

如果一些对象没有统计信息,而你又锁定了统计信息,那么此时数据库在执行SQL时,就会使用动态采样。这个也是锁定统计信息的另外一个功能。

When you set the statistics of a volatile object to null, Oracle Database dynamically gathers the necessary statistics during optimization using dynamic statistics. The OPTIMIZER_DYNAMIC_SAMPLING initialization parameter controls this feature.

This is useful when you wish to use dynamic sampling on a volatile table. You may also lock statistics on a volatile table at a point when it is fully populated, so that the table statistics are more representative of the table population, so as to use those statistics to generate plans, whatever happens to the table data.

相关SQL

Oracle提供三种粒度的锁定统计信息的方法,如下所示:

如果在锁定条件下收集统计信息,那么会出现如下报错:

可以使用如下的SQL查询到统计信息被锁的表或索引:

还有一个要注意的是,如果当表的统计信息被锁定时,此表上创建索引时,不会采集生成索引的相关统计信息,如下所示:

如果表的统计信息锁定的时候,我们可以使用下面脚本来收集统计信息:

如果要收集表的统计信息,使用下面SQL

当然还有一种方法就是,先给表解锁统计信息,收集统计信息,然后锁定表的统计信息,如下所示:

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复