1.1.20 可动态关闭InnoDB更新元数据的统计功能
innodb_stats_on_metadata参数的作用是:每当查询information_schema元数据库里的表时,InnoDB还会随机提取其他数据库每个表索引页的部分数据,从而更新information_schema.STATISTICS表,并返回刚才查询的结果。当你的表很大,且数量很多时,耗费的时间就会很长,很多经常不访问的数据也会进入Innodb_Buffer_Pool缓冲池里,那么就会污染缓冲池,并且ANALYZE TABLE和SHOW TABLE STATUS语句也会造成InnoDB随机提取数据。
从MySQL5.5.X版本开始,你可以动态关闭innodb_stats_on_metadata,不过默认是开启的。关闭方式如下:
set globalinnodb_stats_on_metadata=OFF;
可能有人会问,如果我关闭了该功能,会不会造成数据统计的不精确?
答案是:不会的。下面用一个例子来加以证实。
通过数据字典查看所有数据库大小,命令如下:
select sum(data_length+index_length)/1024/1024/1024 from
information_schema.tables;
具体操作如图1-17和图1-18所示。
关闭元数据统计后,查询快了近2倍,结果却跟之前的一样。如果你的表很大,并且很多,那么查询的速度相差得就会更大。
关于innodb_stats_on_metadata参数的介绍,请参见MySQL5.5手册:
【责任编辑:book TEL:(010)68476606】
点赞 0