易失性表的统计信息很快就会过时。例如,一个表可以删除或截断,然后重建。
将易失性对象的统计信息设置为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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1327次阅读
2025-03-13 11:40:53
【专家观点】罗敏:从理论到真实SQL,感受DeepSeek如何做性能优化
墨天轮编辑部
1314次阅读
2025-03-06 16:45:38
Oracle RAC ASM 磁盘组满了,无法扩容怎么在线处理?
Lucifer三思而后行
800次阅读
2025-03-17 11:33:53
Oracle+Deepseek+Dify 实现数据库数据实时分析
bicewow
728次阅读
2025-03-06 09:41:49
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
469次阅读
2025-03-13 14:38:19
SQL优化 - explain查看SQL执行计划(一)
金同学
397次阅读
2025-03-13 16:04:22
Oracle 如何修改 db_unique_name?强迫症福音!
Lucifer三思而后行
365次阅读
2025-03-12 21:27:56
SQLE 4.0 正式版发布,新增 SQL 重写、SQL 性能追踪、语法知识图谱等功能
爱可生开源社区
364次阅读
2025-03-07 10:30:00
Oracle DataGuard高可用性解决方案详解
孙莹
317次阅读
2025-03-26 23:27:33
Oracle分区和执行计划相关的几个问题
听见风的声音
310次阅读
2025-03-07 08:51:42