千家信息网

MySQL中Innodb表Data free怎么计算

发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,这篇文章给大家分享的是有关MySQL中Innodb表Data free怎么计算的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。大概是空闲extent的大小。ST_FIELD_
千家信息网最后更新 2025年11月10日MySQL中Innodb表Data free怎么计算

这篇文章给大家分享的是有关MySQL中Innodb表Data free怎么计算的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。


大概是空闲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(n_free - reserve)           * FSP_EXTENT_SIZE * (page_size.physical() / 1024));}

感谢各位的阅读!关于"MySQL中Innodb表Data free怎么计算"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

大小 内容 就是 更多 篇文章 页面 不错 实用 函数 实际 文章 方式 看吧 知识 空闲 参考 帮助 有关 管理 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全法二百七十六条 网络安全专业从事 网络安全公益广告分镜头剧本 上海ibm服务器维修 70岁以上网络安全吗 护苗网络安全课落实情况 宝塔怎么连接远程数据库 软件开发信息理解误差 怎样不让监控服务器噪音响 网易版我的世界逃离塔科夫服务器 绝地求生2怎么连接不了服务器 黔江警务技术网络安全管理进面 国家网络安全认证审查 网络安全与管理期末考试 恒业网络技术有限公司 西安培训软件开发机构排名 现场管理软件开发架构 直连数据库通信 服务器存储备份设备管理规定 超星数据库查重 分离数据库使数据库响应更快 风口下的网络安全漏洞 数据库加密基本概念 哪个服务器是提供域名解析服务 国家级网络安全大脑提案 软件开发需求变更要求 提高无线网络安全性 网络安全法第47条规定内容 网络安全宣传周工作综述 软件开发和大数据分析哪个难
0