当前位置: 首页 > news >正文

表、索引统计信息锁定和解锁

零、查看数据库的统计信息收集是否开启

select * from dba_autotask_client;

auto optimizer stats collection 是表示开启数据库自动统计信息收集。

一、查看统计信息是否锁定

select stattype_locked,last_analyzed,a.* from dba_tab_statistics a where a.stattype_locked is not null;

该字段值为空表示 没有锁定,ALL则表示统计信息收集被锁定。

二、解锁、统计信息收集、锁定

exec dbms_stats.unlock_table_stats(ownname => 'USER1',tabname => 'TABLE1');

exec dbms_stats.gather_table_stats('USER1','TABLE1');

exec dbms_stats.lock_table_stats('USER1','TABLE1');

三、其他

--analyze命令已经过时

– 无法提供灵活的分析选项

– 无法提供并行的分析

– 无法对分析数据进行管理

--DBMS_STATS

– 专门为CBO提供信息来源

– 可以进行数据分析的多种组合

– 可以对分区进行分析

– 可以进行分析数据管理

• 备份,恢复,删除,设置....

不能收集行迁移,行迁移需要使用analyze

analyze table productuser.supplymessage validate structure cascade;

--创建统计信息历史保留表 

begin

  dbms_stats.create_stat_table(ownname => 'productuser',stattab => 'stat_tableofproduct') ; 

end;

--导出整个scheme的统计信息 

begin

   dbms_stats.export_schema_stats(ownname => 'productuser',stattab => 'stat_tableofproduct') ; 

end;

--删除表的统计信息

begin

  dbms_stats.delete_table_stats(ownname => 'productuser',tabname => 'product') ;

end;

select * from user_tables where table_name='PRODUCT'

--导入表的历史统计信息

begin

   dbms_stats.import_table_stats(ownname => 'productuser',tabname => 'product',stattab => 'stat_tableofproduct') ; 

end;

--如果进行分析后,大部分表的执行计划都走错,需要导回整个scheme的统计信息

begin

   dbms_stats.import_schema_stats(ownname => 'productuser',stattab => 'stat_tableofproduct');

end;

--导入索引的统计信息

begin

   dbms_stats.import_index_stats(ownname => 'productuser',indname => 'xxx',stattab => 'stat_tableofproduct') 

end;

analyze table 可以指定分析: 表、所有字段、所有索引字段、所有索引。 若不指定则全部都分析。

1、全分析

说明:全分析,包括表、字段、索引。统计信息产生在user_tables、user_tab_columns、user_indexes中。

analyze table my_table compute statistics for table for all indexes for all columns;

2、指定表分析

说明:只分析表。统计信息只产生在user_tables中。

analyze table my_table compute statistics for table;

查看表的统计信息:select table_name,num_rows,blocks,empty_blocks from user_table;

3、指定所有字段分析

说明:只分析字段。统计信息只产生在user_tab_columns中,且全字段有。

analyze table my_table compute statistics for all columns;

查看字段的统计信息:select table_name,column_name,num_distinct,low_value,high_value,density from user_tab_columns;

4、指定有索引的字段分析

说明:只分析有索引的字段。统计信息只产生在user_tab_columns中,且只有含索引的字段有。

analyze table my_table compute statistics for all indexed columns;

5、指定索引分析

说明:只分析索引。统计信息只产生在user_indexes中。

analyze table my_table compute statistics for all indexes;

查看索引的统计信息

select table_name,index_name,blevel,leaf_blocks,distinct_keys,avg_leaf_blocks_per_key,avg_data_blocks_per_key,clustering_factor,num_rows from user_indexes;

另外,可以删除分析数据:

SQL> analyze table my_table delete statistics;

SQL> analyze table my_table delete statistics for table for all indexes for all indexed columns;

特别需要注意的:

truncate命令不会修改数据的统计信息,也就是如果我们想让CBO利用合理利用数据的统计信息的时候,需要我们及时的使用analyze命令或者dbms_stats重新统计数据的统计信息。

http://www.dtcms.com/a/62044.html

相关文章:

  • 第十课:爬虫综合实战:从数据采集到可视化分析
  • K8s 1.27.1 实战系列(十二)Ingress
  • Redis----大key、热key解决方案、脑裂问题
  • 【教学类-43-25】20240311 数独3宫格的所有可能(图片版 12套样式,空1格-空8格,每套510张,共6120小图)
  • DTL698电表数据 转 EthernetIP协议项目案例
  • 大模型安全新范式:DeepSeek一体机内容安全卫士发布
  • 【数据结构】1数据结构基本概念 【作业1数据结构综述】
  • C++【类和对象】(超详细!!!)
  • 【外部链接跳转uniapp开发的App内指定页面】实现方案
  • git切换版本
  • 微信小程序使用的SSL证书在哪里申请?
  • Mybatis的一级缓存和二级缓存
  • 【MySQL】库和表的操作
  • css的背景图和背景色混用;rgba和opacity区别
  • 如何使用logrotete定时切割mysql的慢日志
  • 【SpringMVC】深入解析使用 Postman 在请求中传递对象类型、数组类型、参数类型的参数方法和后端参数重命名、及非必传参数设置的方法
  • Spring Cloud Alibaba 实战:Sentinel 保障微服务的高可用性与流量防护
  • React 性能优化
  • 使用Python实现量子计算实验工具的全景指南
  • WHAT - 前端性能指标
  • 记录一次解决日期格式引起的SQL失效的问题
  • Python Flask 开发用于访问数据库的 REST API
  • 深度学习与大模型-矩阵的运算
  • Trae AI 自动升级项目Nuxt版本
  • 其他元素的乘积(前后缀积)
  • C++ 编程指南27 - 始终将 mutex 与它所保护的数据一起定义,并尽可能使用 synchronized_value<T>
  • Linux网络 五种 IO 模型
  • Netty基础—2.网络编程基础四
  • Linux运维(三)Linux命令行操作:从菜鸟到高手
  • 【性能测试】Jmeter如何做一份测试报告(3)