易失性表的统计信息很快就会过时。例如,一个表可以删除或截断,然后重建。
将易失性对象的统计信息设置为null时,Oracle数据库将在优化过程中使用动态统计信息动态收集必要的统计信息。在OPTIMIZER_DYNAMIC_SAMPLING初始化参数控制此功能。
假设条件
本教程假定以下内容:
- 该
oe.orders表非常不稳定。 - 您想要删除然后锁定
orders表上的统计信息,以防止数据库收集表上的统计信息。这样,数据库可以动态收集必要的统计信息,作为查询优化的一部分。 - 该
oe用户拥有必要的权限查询DBMS_XPLAN.DISPLAY_CURSOR。
要删除和锁优化器统计信息:
- 以用户身份连接到数据库
oe,然后删除oe表的统计信息。例如,执行以下过程:
BEGIN DBMS_STATS.DELETE_TABLE_STATS('OE','ORDERS'); END; / - 锁定
oe表的统计信息。例如,执行以下过程:
BEGIN DBMS_STATS.LOCK_TABLE_STATS('OE','ORDERS'); END; / - 您查询
orders表。例如,使用以下语句:
SELECT COUNT(order_id) FROM orders; - 您在光标中查询计划。
您运行以下命令(包括部分输出):
SET LINESIZE 150 SET PAGESIZE 0 SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR); SQL_ID aut9632fr3358, child number 0 ------------------------------------- SELECT COUNT(order_id) FROM orders Plan hash value: 425895392 --------------------------------------------------------------------- | Id | Operation | Name | Rows | Cost (%CPU)| Time | --------------------------------------------------------------------- | 0 | SELECT STATEMENT | | | 2 (100)| | | 1 | SORT AGGREGATE | | 1 | | | | 2 | TABLE ACCESS FULL| ORDERS | 105 | 2 (0)| 00:00:01 | --------------------------------------------------------------------- Note ----- - dynamic statistics used for this statement (level=2)前面的执行计划中的“注释”表明数据库使用了该
SELECT语句的动态统计信息。
也可以看看:
- “ 配置动态统计信息的选项 ”
- “ 锁定和解锁优化器统计信息 ”以了解如何收集代表性统计信息然后对其进行锁定,这是防止易失性表的统计信息过时的另一种技术
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




