【YashanDB知识库】数据变化率超过阈值统计信息失效
【问题分类】性能优化
【关键字】统计信息
【问题描述】
SQL
--创建表结构
drop table t1;
create table t1 (id int,name varchar2(200));
create index t1_id_ind on t1(id);
create index t1_name_ind on t1(name);
--造数
begin
for i in 1..100 loop
insert into t1 values(i,'aaaa'||i);
commit;
end loop;
end;
/
--收集统计信息
begin DBMS_STATS.GATHER_TABLE_STATS('SYS', 'T1', '',1, FALSE, 'FOR ALL COLUMNS SIZE AUTO', 4, 'AUTO', TRUE); end;
/
--查看统计信息
SELECT OWNER ,TABLE_NAME ,LAST_ANALYZED ,NUM_ROWS,STALE_STATS FROM dba_tab_statistics WHERE table_name = 'T1' ;
--查看执行计划,此时是理想计划
explain SELECT * FROM T1 WHERE ID IN (1) ORDER BY NAME desc;
--设置失效比例
exec DBMS_STATS.SET_TABLE_PREFS('SYS', 'T1', 'STALE_PERCENT', '0.1');
--新增数据,超过失效比例
begin
for i in 101..121 loop
insert into t1 values(i,'aaaa'||i);
commit;
end loop;
end;
/
--查看统计信息,此时统计信息失效
SELECT OWNER ,TABLE_NAME ,LAST_ANALYZED ,NUM_ROWS,STALE_STATS FROM dba_tab_statistics WHERE table_name = 'T1' ;
--查看执行计划,此时计划不好的计划
explain SELECT * FROM T1 WHERE ID IN (1) ORDER BY NAME desc; --不能使用与上述步骤完全一致的SQL,计划保存在内存中,plan_hash值没有变化
explain SELECT * FROM T1 WHERE ID IN (1,2) ORDER BY NAME desc; --此时计划不好的计划
【问题原因分析】此处的根因在于YashanDB为何要设计统计信息失效?
【解决/规避方法】
● 调整统计信息收集的JOB,业务空闲时间点统一收集一次统计信息;
● 调整statistics_level参数为basic;
● 将统计信息失效的全局参数STALE_PERCENT配置成0,即不失效;
● 锁定统计信息。
【影响范围】所有版本
【修复版本】所有版本
【YashanDB知识库】数据变化率超过阈值统计信息失效的更多相关文章
- Oracle数据迁移后由列的直方图统计信息引起的执行计划异常
(一)问题背景 在使用impdp进行数据导入的时候,往往在导入表和索引的统计信息的时候,速度非常慢,因此我在使用impdp进行导入时,会使用exclude=table_statistics排除表的统计 ...
- MySQL InnoDB配置统计信息
MySQL InnoDB配置统计信息 1. 配置持久化(Persistent)统计信息参数 1.1 配置自动触发更新统计信息参数 1.2 配置每张表的统计参数 1.3 配置InnoDB优化器统计信息的 ...
- [统计信息系列7] Oracle 11g的自动统计信息收集
(一)统计信息收集概述 在Oracle 11g中,默认有3个自动任务,分别是:自动统计信息收集.SQL调优顾问.段空间调整顾问,查看方法如下: SQL> SELECT CLIENT_NAME,T ...
- SQL Server 中统计信息直方图中对于没有覆盖到谓词预估以及预估策略的变化(SQL2012-->SQL2014-->SQL2016)
本位出处:http://www.cnblogs.com/wy123/p/6770258.html 统计信息写过几篇了相关的文章了,感觉还是不过瘾,关于统计信息的问题,最近又踩坑了,该问题虽然不算很常见 ...
- oracle里的统计信息
1 oracle里的统计信息 Oracle的统计信息是这样的一组数据,存储在数据字典,从多个维度描述了oracle数据库对象的详细信息,有6种类型 表的统计信息:记录数.表块的数量.平均行长度等 索引 ...
- MySQL的统计信息学习总结
统计信息概念 MySQL统计信息是指数据库通过采样.统计出来的表.索引的相关信息,例如,表的记录数.聚集索引page个数.字段的Cardinality.....MySQL在生成执行计划时,需要根据索引 ...
- 数据库性能调优之始: analyze统计信息
摘要:本文简单介绍一下什么是统计信息.统计信息记录了什么.为什么要收集统计信息.怎么收集统计信息以及什么时候收集统计信息. 1 WHY:为什么需要统计信息 1.1 query执行流程 下图描述了Gau ...
- DDD实践问题之 - 关于论坛的帖子回复统计信息的更新的思考
之前,在用ENode开发forum案例时,遇到了关于如何实现论坛帖子的回复的统计信息如何更新的问题.后来找到了自己认为比较合理的解决方案,分享给大家.也希望能和大家交流,擦出更多的火花. 论坛核心领域 ...
- SQL语句调优 - 统计信息的含义与作用及维护计算
统计信息的含义与作用 ...
- ORA-03001,GATHER_TABLE_STATS数据库自动收集统计信息报错
1.根据Alert报错信息,查询Trace日志 /oracle/app/oracle/admin/fgsquery/bdump/fgsquery_j001_11111.trc Oracle Datab ...
随机推荐
- SpringBoot的知识点总结和常用注解
SpringBoot 知识点总结 基础入门 基本介绍.基本特性.核心模块.版本选择.环境要求.安装集成.技快速开发接口.Maven Wrapper.Spring Boot CLl 配置管理 配置类.配 ...
- 如何合理开发Java接口(安全性,可重复调用,稳定性,追溯性)
一.接口开发规范 签名:对外提供的接口要做签名认证,认证不通过的请求不允许访问接口.提供服务. 加密:敏感数据在网络传输过程中应该加密. IP白名单:限制请求的IP,增加IP白名单,一般在网关层处理. ...
- Mac mysql 5.7启动报错,解决之道 The server quit without updating PID file
导读 晚上捣鼓数据库的时候,将mysql服务停止下,然后就死活启动不起来,这下可把我急坏了,自己数据库上有好多自己的个人项目,错误信息如下 ERROR! The server quit without ...
- yb课堂 用户模块个人中心 《四十一》
Personal.vue <template> <div> <div class="container"> <div class=&quo ...
- yb课堂之登陆校验Json Web Token实战之封装通用方法 《九》
引入相关依赖并开发JWT工具类,开发生产token和校验token的方法 加入相关依赖 <dependency> <groupId>io.jsonwebtoken</gr ...
- weui weui-switch 开关取值,设置默认状态
html <div class="weui-cell__ft"> <input class="weui-switch" type=" ...
- Java-Spring JDBC初体验操作数据库
Spring JDBC * Spring框架对JDBC的简单封装 提供了一个JDBCTemplate对象简化JDBC的开发 步骤 导入jar包 创建JDBCTemplate对象,依赖于数据源DataS ...
- IPv6、双栈与隧道
双栈策略 实现IPv6结点与IPv4结点互通的最直接的方式是在IPv6结点中加入IPv4协议栈.具有双协议栈的结点称作"IPv6/v4结点",这些结点既可以收发IPv4分组,也可以 ...
- [oeasy]python0123_中文字符_文字编码_gb2312_激光照排技术_王选
中文编码GB2312 回忆上次内容 上次回顾了 日韩各有 编码格式 日本 有假名 五十音 一字节 可以勉强放下 有日本汉字 字符数量超过20000+ 韩国 有谚文 数量超过500 一个字节 ...
- oeasy教您玩转vim - 77 - # 保留环境viminfo
保留环境viminfo 回忆组合键映射的细节 上次我们定义了session :mks 还可以加载会话session :source Session.vim vim -S Session.vim 基 ...