[统计信息系列6] 数据字典统计信息
(一)数据字典统计信息查看
数据字典统计信息用来描述数据字典基表(如TAB$和IND$等)、数据字典基表上的索引以及数据字典基表的列的详细信息,与普通表的、索引、列的统计信息没有什么区别。
(二)数据字典统计收集和删除
Oracle会在自动收集统计信息任务中收集数据字典的统计信息,当然,我们也可以手动收集。
方法一:对于数据字典的统计信息,可以使用如下语句收集和删除统计信息:
DBMS_STATS.GATHER_DICTIONARY_STATS:收集
DBMS_STATS.DELETE_DICTIONARY_STATS:删除
方法二:数据字典表也是表,也可以使用对表的收集方法收集数据字典的统计信息
DBMS_STATS.GATHER_SCHEMA_STATS(ownname => 'SYS')
DBMS_STATS.GATHER_TABLE_STATS(ownname => 'SYS',tabname=>'TAB$',CASCADE=>true)
(三)案例:数据字典统计信息引起的查询缓慢
背景:在11.2.0.4的数据库中,某天执行如下语句速度非常慢,每次执行时间在150S以上,
select * from v$lock WHERE TYPE IN('TM','TX');
原因:统计信息不准确,导致走了错误的执行计划;
解决方案:重新收集统计信息,具体操作如下:
SQL> exec DBMS_STATS.GATHER_FIXED_OBJECTS_STATS(); SQL> exec DBMS_STATS.DELETE_DICTIONARY_STATS; SQL> exec DBMS_STATS.GATHER_DICTIONARY_STATS;
然后再查询 v$lock,最终1s内出现结果。
【完】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?