暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
13兵马未动,粮草先行 —— InnoDB 统计数据是如何收集的(02).pdf
369
21页
13次
2022-03-14
免费下载
InnoDB
标签 MySQL 是怎样运⾏的
我们前边唠叨查询成本的时候经常⽤到⼀些统计数据,⽐如通
SHOW TABLE STATUS以看到关于表的统计数据,通过SHOW
INDEX可以看到关于索引的统计数据,那么这些统计数据是怎么来
呢?它们是以什么⽅式收集的呢?本章将聚焦于InnoDB储引擎的
统计数据收集策略,看完本章⼤家就会明⽩为啥前边⽼说InnoDB
统计信息是不精确的估计值了(⾔下之意就是我们不打算介绍
MyISAM储引擎统计数据的收集和存储⽅式,有想了解的同学⾃⼰
个⼉看看⽂档哈)。
两种同的数据⽅式
InnoDB供了两种存储统计数据的⽅式:
永久性的统计数
这种统计数据存储在磁盘上,也就是服务器重启之后这些统计
数据还在。
⾮永久性的统计数据
这种统计数据存储在内存中,当服务器关闭时这些这些统计数
据就都被清除掉了,等到服务器重启之后,在某些适当的场景
下才会重新收集这些统计数据
设计MySQL的⼤叔们给我们提供了系统变量
innodb_stats_persistent来控制到底采⽤哪种⽅式去存储统计
数据。在MySQL 5.6.6之前innodb_stats_persistent
默认OFF,也就是InnoDB的统计数据默认是存储到内存的,之
后的版本中innodb_stats_persistent值默认是ON也就是统
计数据默认被存储到磁盘中。
不过InnoDB认是以表为单位来收集和存储统计数据也就是说
我们可以把某些表的统计数据(以及该表的索引统计数据)存储在
盘上,把另⼀些表的统计数据存储在内存中。怎么做到的呢?我们
以在创建和修改表的时候通过指定STATS_PERSISTENT性来指明
该表的统计数据存储⽅式
CREATE TABLE (...) Engine=InnoDB,
STATS_PERSISTENT = (1|0);
ALTER TABLE 表名 Engine=InnoDB, STATS_PERSISTENT =
(1|0);
STATS_PERSISTENT=1,表明我们想把该表的统计数据永久的
存储到磁盘上,STATS_PERSISTENT=0,表明我们想把该表的
统计数据临时的存储到内存中。如果我们在创建表时未指
STATS_PERSISTENT属性,那默认采⽤系统变量
innodb_stats_persistent的值作为该属性的值。
基于盘的性统
当我们选择把某个表以及该表索引的统计数据存放到磁盘上时,实
上是把这些统计数据存储到了两个表⾥
of 21
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜