问题现象:

开发报告查询语句突然变慢。

处理过程:

1、在从库查看执行计划:

并且执行查询,结果是返回159条数据,只需要0.58秒,并不慢

(2)了解到原来应用连接的是主库,随即上主库查看执行计划,如下,可以看到执行计划是不一样的,从库性能没问题,而主库性能有问题,初步可以断定,就是统计信息不准确的原因。于是让开发先将连接修改到从库,问题得到解决,接着继续分折统计信息不正确的原因。

原因分析:

(1)语句很简单,只是对一个表做查询,所以对表做分析,更新统计信息,对表做分析之后,发现统计信息仍然没有变化,记录数显示仍然是7千多万条。

(2)通过select count(1) from sy_paid_user_retained可以看到,发现表的总记录数是2仵多万,这能确认就是统计信息不准确的原因,

一开始认为表比较大,会不会是因为采样不准的原因,所以依次增加innodb_stats_sample_pages参数,继续上面的分析表,甚至将innodb_stats_sample_pages设置为10240,完全足够大,问题还一样存在,哪又是什么原因导致统计信息无法更新的?

(3)查看show engine innodb status\G;可以看到history list length值非常大,已经到达1亿多,这通常代表有很长的事务没有提交。

果然,存在两个超长事务,最长的一个已经运行了3613099秒,=运行了(3613099/3600/24=41天),已经运行了41天(没有监控真可怕)。

(4)kill掉上面两个大查询,然后再次执行分折表,结果一样,统计信息还是没变。

以往删除长事务之后,history list length就下降,通常性能问题也得到解决,这次却不行。

(5)通过向开发了解,最近是有一个作业,执行了大量的delete操作,我们从统计信息来看,应该有5000万的delete。从库不存在长事务,所以不存在这个问题。

这个history list length太长的问题,只能让系统慢慢回收。

改善措施:

1、增加长事务的监控,运行超过3000秒报警;

2、考虑自动kill 掉select 长事务;

3、讨论后,修改事务隔离级别,从rr修改为rc。

(原创连接:http://www.cnblogs.com/tonnyChen/p/6826491.html)

mysql统计信息表行数不准确_mysql SQL调优-统计信息不准的原因相关推荐

  1. 统计内表行数常用的三种方法

    以下是统计内表行数常用的三种方法, 如下:   1.LOOP AT it_itab.    g_lines2 = g_lines2 + 1.    ENDLOOP.    该方法是通过循环内部表自己累 ...

  2. php mssql统计表中的主键个数,MSSQL_SQL Server中统计每个表行数的快速方法,我们都知道用聚合函数count()可 - phpStudy...

    SQL Server中统计每个表行数的快速方法 我们都知道用聚合函数count()可以统计表的行数.如果需要统计数据库每个表各自的行数(DBA可能有这种需求),用count()函数就必须为每个表生成一 ...

  3. oracle避免回表,请教大家: 经常在sql调优过程中提到避免“回表”,具体是指什么意思???3Q...

    你的位置: 问答吧 -> Oracle -> 问题详情 请教大家: 经常在sql调优过程中提到避免"回表",具体是指什么意思???3Q 如题,不甚感激!!!! [ 本帖 ...

  4. 使用COUNT(*)统计指定表行数时报错:将 expression 转换为数据类型 int 时出现算术溢出错误

    报错信息: [22003] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]将 expression 转换为数据类型 int 时出现算术溢出 ...

  5. hbase的备份恢复1,Expor过程,Import过程,统计hbase表行数;hbase备份恢复方式2:使用hdfs备份hbase数据,基于hbase数据进行恢复

    25.28 hbase数据备份和恢复 以下过程针对线上没有启动新旧集群的情况,所以使用hbase export / import的方式进行数据的备份和迁移 25.28.1 Export过程 首先,先进 ...

  6. 十分钟释疑Oracle中“小表超慢”之谜(SQL调优/SQL优化)

    前几天,一个用户找到我,说查一个小表的时候非常慢,我问有多慢,他说最快也得半个小时才能出结果,有时干脆不出结果,我说小表多大,他说就几十兆,有点疑惑,让他帮忙获取了相关信息,一看就明白了,原来所谓的小 ...

  7. mysql统计数据库中表的行数统计

    刚开始统计数据库中有多少行数据的时候,使用information_schema.TABLES去统计发现误差很大,官网的解释如下: The number of rows. Some storage en ...

  8. 【Shell牛客刷题系列】SHELL1 统计文件的行数:学习wc命令和文本三剑客awk、grep、sed命令

    该系列是基于牛客Shell题库,针对具体题目进行查漏补缺,学习相应的命令. 刷题链接:牛客题霸-Shell篇. 该系列文章都放到专栏下,专栏链接为:<专栏:Linux>.欢迎关注专栏~ 本 ...

  9. C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组

    转自:http://hi.baidu.com/ctralt/blog/item/cde79fec87f841302697911c.html fstream提供了三个类,用来实现c++对文件的操作.(文 ...

最新文章

  1. 怎样才算世界一流大学
  2. python—— 写入错误UnicodeEncodeError的解决办法
  3. CAS SSO对手机应用支持的一种思路
  4. 能否用痰盂盛饭——谈谈在头文件中定义外部变量
  5. LSGO软件技术团队与信息1402班开展真人CS活动
  6. Python_百度图片以及百度贴吧图片抓取
  7. 什么是API文档?--斯科特·马文
  8. C++引用计数(reference counting)技术简介(2)
  9. 通过源码理解反射与注解是什么东西?
  10. SLAM学习------Sophus模板类的安装和使用
  11. 关于SQL\SQL Server的三值逻辑简析
  12. 全网最新springCloud快速练手学习项目——简单超易懂系列
  13. Android 版本统一管理
  14. 火柴棍能组成的最大数字
  15. 启动jupyter notebook链接不上内核 + 终端报错:Replacing stale connection
  16. 操作系统简述复习笔记
  17. Lwip之PPP、PPPoE实现(一)
  18. WPS做论文的时候为什么文字后面不能添加下划线?
  19. 线上引流获客渠道有哪些
  20. 物联网毕业设计 - 基于STM32的轮足两用可变形环境感知探测机器人

热门文章

  1. android之menu,一起学Android之Menu
  2. spine纹理解包 黑底_本期全欧美阵容!种草了艾玛罗的斑马纹,海狸的针织Bra【海报街拍】...
  3. 多线程面试题c Linux,【多线程Linux面试题】面试问题:小伙用C语言熬… - 看准网...
  4. Ultra-QuickSort(离散化)
  5. CodeForces - 93B(贪心+vectorpairint,double +double 的精度操作
  6. VirtualBox虚拟机如何扩容
  7. android怎么查看方法被谁调用,Android中查看布局文件中的控件(view,id)在哪里被调用(使用)...
  8. c语言打印%-6llu,从零开始学C语言
  9. oracle rman备份 归档模式,Oracle RMAN备份归档与非归档模式
  10. python绑定句柄容易么_Python 有什么奇技淫巧?