Ike Walker Asked: 2013-01-05 09:40:27 +0800 CST2013-01-05 09:40:27 +0800 CST 2013-01-05 09:40:27 +0800 CST 如何找出上次分析 MySQL 表的时间? 772 我主要对 InnoDB 感兴趣,但也对 MyISAM 感兴趣。 我在 information_schema 中环顾四周,并没有在任何地方看到这些数据。 我正在使用 MySQL 5.5.16。 mysql innodb 1 个回答 Voted Best Answer RolandoMySQLDBA 2013-01-05T10:24:18+08:002013-01-05T10:24:18+08:00 没有直接的控制数据可以告诉您,但是您可以设置一些机制。 机制#1 如果您启用了二进制日志记录,只需使用mysqlbinloggrep -i "analyze table"的输出对所有二进制日志执行一次。 机制#2 如果您启用了通用日志,只需grep -i "analyze table"对通用日志文件执行一次操作,然后找到与命令相关的时间戳。 机制#3 ANALYZE TABLE您应该安排一个针对所有具有高写入、高更新、高删除量的表运行的 cronjob 。这样,就没有猜测工作了。 机制#4 尝试设置innodb_stats_on_metadata以衡量 InnoDB 表何时需要的可预测性ANALYZE TABLE。(见我Mar 26, 2012的帖子: InnoDB 表索引统计何时更新?) 警告 过去,我经常说ANALYZE TABLE对 InnoDB 运行 table 是没有用的。 Jun 21, 2011: MySQL 查询优化器从哪里读取索引统计信息? Aug 04, 2011:优化 InnoDB 默认设置 Oct 16, 2011:突然不得不重建索引以防止网站宕机 希望,MECHANISM #4可能是你需要的。
没有直接的控制数据可以告诉您,但是您可以设置一些机制。
机制#1
如果您启用了二进制日志记录,只需使用mysqlbinlog
grep -i "analyze table"
的输出对所有二进制日志执行一次。机制#2
如果您启用了通用日志,只需
grep -i "analyze table"
对通用日志文件执行一次操作,然后找到与命令相关的时间戳。机制#3
ANALYZE TABLE
您应该安排一个针对所有具有高写入、高更新、高删除量的表运行的 cronjob 。这样,就没有猜测工作了。机制#4
尝试设置innodb_stats_on_metadata以衡量 InnoDB 表何时需要的可预测性
ANALYZE TABLE
。(见我Mar 26, 2012
的帖子: InnoDB 表索引统计何时更新?)警告
过去,我经常说
ANALYZE TABLE
对 InnoDB 运行 table 是没有用的。Jun 21, 2011
: MySQL 查询优化器从哪里读取索引统计信息?Aug 04, 2011
:优化 InnoDB 默认设置Oct 16, 2011
:突然不得不重建索引以防止网站宕机希望,
MECHANISM #4
可能是你需要的。