共计 2038 个字符,预计需要花费 6 分钟才能阅读完成。
这篇文章给大家分享的是有关 MySQL 中 Innodb 表 Data free 怎么计算的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,一起跟随丸趣 TV 小编过来看看吧。
大概是空闲 extent 的大小。
ST_FIELD_INFO tables_fields_info[]=
{ DATA_FREE , MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0,
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), Data_free , OPEN_FULL_TABLE},
tables_fields_info[12] 就是 Data_free
ST_SCHEMA_TABLE schema_tables[]=
{ TABLES , tables_fields_info, create_schema_table,
get_all_tables, make_old_format, get_schema_tables_record, 1, 2, 0,
OPTIMIZE_I_S_TABLE},
填充方式 get_schema_tables_record 函数
其中有一句
table- field[12]- store((longlong) file- stats.delete_length, TRUE);
实际就是 file- stats.delete_length
其中 file- stats.delete_length 调用进行取值
ha_innobase::info_low
avail_space = fsp_get_available_space_in_free_extents(ib_table- space);
stats.delete_length = avail_space * 1024;
uintmax_tfsp_get_available_space_in_free_extents( const fil_space_t* space)
ut_ad(space- n_pending_ops 0);
ulint size_in_header = space- size_in_header;// 总的页面大小
if (size_in_header FSP_EXTENT_SIZE) { // 碎片页 直接返回 0
return(0); /* TODO: count free frag pages and
return a value based on that */
} /* Below we play safe when counting free extents above the free limit:
some of them will contain extent descriptor pages, and therefore
will not be free extents */
ut_ad(size_in_header = space- free_limit);
ulint n_free_up =
(size_in_header - space- free_limit) / FSP_EXTENT_SIZE; //(总的页面大小 - 已经初始化大小)/EXTENT SIZE
page_size_t page_size(space- flags); if (n_free_up 0) {
n_free_up--;
n_free_up -= n_free_up / (page_size.physical()
/ FSP_EXTENT_SIZE); // 减去 extent 管理块?
} /* We reserve 1 extent + 0.5 % of the space size to undo logs
and 1 extent + 0.5 % to cleaning operations; NOTE: this source
code is duplicated in the function above! */
ulint reserve = 2 + ((size_in_header / FSP_EXTENT_SIZE) * 2) / 200;
ulint n_free = space- free_len + n_free_up; if (reserve n_free) { return(0);
} return(static_cast uintmax_t (n_free - reserve)
* FSP_EXTENT_SIZE * (page_size.physical() / 1024));
}
感谢各位的阅读!关于“MySQL 中 Innodb 表 Data free 怎么计算”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
正文完