InnoDB的存储方式
永久存储:存储在磁盘中。
非永久存储:存储在内存中。
mysql5.6.6之后数据默认存储在磁盘上。
磁盘上统计数据
innodb_table_stats表
字段名 | 描述 |
---|---|
database_name | 数据库名 |
table_name | 表名 |
last_update | 本条记录最后更新的时间 |
n_rows | 表中记录的条数 |
clustered_index_size | 表的聚簇索引占用的页面数量 |
sum_of_other_index_sizes | 表的其他索引占用的页面数量 |
n_rows估计方法:按照算法从聚簇索引中选取几个叶子节点页面,统计每个页面中包含的记录数量,然后计算一个页面中平均包含的记录数量,并乘以其全部叶子节点的数量。innodb_stats_persistent_sample_pages表示计算统计数据时采样的页面数量,默认为20。
clustered_index_size和sum_of_other_index_sizes估计方法:需要统计各个索引对应的叶子节点和非叶子节点段所占用的页面数量。
统计一个段占用的页面数量的步骤:
- 从数据字典中找到表各个索引对应的根页面位置。
- 从根页面的Page H