博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL InnoDB何时更新表的索引统计信息
阅读量:4230 次
发布时间:2019-05-26

本文共 1617 字,大约阅读时间需要 5 分钟。

MySQL InnoDB何时更新表的索引统计信息


适用于:MySQL 5.1及更高版本

目的:了解InnoDB何时更新表的索引统计信息

InnoDB索引统计信息的更新可以由多个不同的事件触发,一些触发器也是存在版本依赖, 以下部分将讨论每个触发器:

ANALYZE TABLE

ANALYZE TABLE命令用于更新索引统计信息,例如:

ANALYZE TABLE t1;

OPTIMIZE TABLE

InnoDB将OPTIMIZE TABLE实现为表重建和ANALYZE TABLE,因此索引统计信息将也有更新。

stark> OPTIMIZE TABLE t1;+---------+----------+-----------+-----------------------------------------------------------------+|Table    |Op        |Msg_type   |Msg_text                                                         |+---------+----------+-----------+-----------------------------------------------------------------+|stark.t1 |optimize  |note       |Table does not support optimize,doing recreate + analyze instead |+---------+----------+-----------+-----------------------------------------------------------------+|stark.t1 |optimize  |status     |OK                                                               |+---------+----------+-----------+-----------------------------------------------------------------+2 rows in set (0.10 sec)

元数据统计

如果innodb_stats_on_metadata = ON(MySQL 5.5及更早版本中的默认值,但MySQL 5.6中没有),InnoDB在以下情况下更新统计数据:

  • 在查询元数据信息语句中:
    • SHOW TABLE STATUS
    • SHOW INDEX
  • 访问某些INFORMATION_SCHEMA表时,例如:
    • TABLES
    • STATISTICS
  • 第一次访问某张表;这包含第一次FLUSH TABLES之后,FLUSH TABLES WITH READ LOCK
  • DDL语句导致表重建

使用innodb_stats_on_metadata = OFF更新InnoDB索引统计信息的主要方法是使用ANALYZE TABLE。 由于InnoDB将OPTIMIZE TABLE实现为表重建,然后是ANALYZE TABLE,OPTIMIZE TABLE还将重新计算统计信息。

自动更新

此外,InnoDB还会在表的“大部分”数据更新时触发重新计算索引统计信息,逻辑取决于是使用持久性还是瞬态统计信息:

  • 持久统计信息:为表启用STATS_AUTO_RECALC时(默认情况下设置为innodb_stats_auto_recalc的值,默认情况下启用),索引统计信息在更新时更新1/10(10%)行已更改。
  • 瞬态统计:距离上一次更新,表中至少修改了1/16(6.25%)行或超过20亿行时,统计信息会进行更新。

转载地址:http://rasqi.baihongyu.com/

你可能感兴趣的文章
Rattle :基于R的数据挖掘工具:功能概览
查看>>
通过eclipse查看、阅读hadoop2.4源码
查看>>
离线安装Cloudera Manager5.3.4与CDH5.3.4
查看>>
关于一些弹出对话框的提示
查看>>
文件下载问题
查看>>
ASP.NET返回上一页的方法小集
查看>>
超链接,根据条件使得超链接显示与否
查看>>
RegisterClientScriptBlock 与 RegisterStartupScript的使用与区别
查看>>
SQLServer中Partition By 函数的使用
查看>>
vscode-Live Server的使用心得
查看>>
Error: listen EACCES 0.0.0.0:8080
查看>>
键盘键值表
查看>>
神经网络中 BP 算法的原理与 Python 实现源码解析
查看>>
Quagga使用笔记2
查看>>
几种最短路径算法的思考
查看>>
图解Bellman-ford算法
查看>>
面试注意
查看>>
运算符重载
查看>>
三种内存问题与三种指针
查看>>
JFinal在网络服务端开发中的位置
查看>>