mysql 5.7.x版本查看某张表、库的大小 思路方案说明

news/2024/12/26 12:31:45/文章来源:https://www.cnblogs.com/bigcat26/p/18523858

@

目录
  • 摘要
  • (推荐)第一种方案:查询information_schema.TABLES的字段DATA_LENGTH
    • 使用场景
    • 优点:网上大多案例都是查询系统表的字段DATA_LENGTH去计算大小
    • 缺点:DATA_LENGTH不都是实时更新的,由表引擎决定,同时DATA_LENGTH是压缩后的字节大小(及大小经过压缩后计算得到DATA_LENGTH)
  • 第二种方案:查询information_schema.INNODB_SYS_TABLESPACES的字段FILE_SIZE
    • 使用场景
    • 优点:针对表引擎为INNODB情况下能够实时更新并获取表大小
    • 缺点:FILE_SIZE字段值大小为未经过压缩的表大小
  • (不推荐)第三种方案:禁用 innodb_stats_persistent=OFF 并启用 innodb_stats_on_metadata=ON

摘要

本人项目使用场景:预统计某表总大小+表今日新增大小,其中今日新增每10s刷新一次,想要的效果是表不断怼数据情况下,今日新增展示功能能动态滚动,及做到近实时查询当下表大小。
本文MYSQL版本5.7.x,本文提供两种解决方案查询某张表大小,并对每种方案使用限制条件及场景进行解析说明
如果MYSQL版本为8.x版本,则查看解决方案(本人没验证过,不清楚是否可行,需自己实践验证):https://blog.csdn.net/londa/article/details/90480266

(推荐)第一种方案:查询information_schema.TABLES的字段DATA_LENGTH

information_schema为系统表,其中TABLES表作为视图可以查看库表字段等等信息,但是它是只读的,不能进行更新、删除和插入等操作,也不能加触发器,因为它们实际只是一个视图,不是基本表,没有关联的文件。
具体案例可百度或者查看举例地址:https://www.cnblogs.com/Knight7971/p/9963299.html

使用场景

查询表大小对实时性要求不高情况下可使用,因为DATA_LENGTH字段不都是实时触发更新,表的引擎不同更新状况不同,表引擎为MYISAM会动态实时更新,表引擎为INNODB则定期更新,据说更新条件为达到表大小10%插入量才会触发更新DATA_LENGTH字段。
具体可查看官网:https://dev.mysql.com/doc/mysql-infoschema-excerpt/5.7/en/information-schema-tables-table.html

优点:网上大多案例都是查询系统表的字段DATA_LENGTH去计算大小

缺点:DATA_LENGTH不都是实时更新的,由表引擎决定,同时DATA_LENGTH是压缩后的字节大小(及大小经过压缩后计算得到DATA_LENGTH)

第二种方案:查询information_schema.INNODB_SYS_TABLESPACES的字段FILE_SIZE

本方案参考文档:https://zhuanlan.zhihu.com/p/147269069

使用场景

网上说该方案是针对表引擎为INNODB情况下实时更新并获取表大小,该方案弥补了第一种方案表大小无法做到实时更新的场景,但是FILE_SIZE字段记录的是未经压缩的表大小,上面的DATA_LENGTH是经过压缩后的表大小,这样存在的问题就是,当表数据比较大的时候两者值会有很大的大小差距,所以要考虑清楚用哪个。
具体可查看官网:https://dev.mysql.com/doc/mysql-infoschema-excerpt/5.7/en/information-schema-innodb-sys-tablespaces-table.html

优点:针对表引擎为INNODB情况下能够实时更新并获取表大小

缺点:FILE_SIZE字段值大小为未经过压缩的表大小

(不推荐)第三种方案:禁用 innodb_stats_persistent=OFF 并启用 innodb_stats_on_metadata=ON

该方案参考文档:https://blog.csdn.net/csd753111111/article/details/100428647

网上方案网上说:

mysql命令为:show global variables like '%stats%';
结果为:

要修改某个属性可使用命令:set global innodb_stats_on_metadata=off;
说明:这种方案弊端较大,使用需谨慎。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/826301.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Fluent Editor 富文本开源2个月的总结:增加格式刷、截屏、TypeScript 类型声明等新特性

你好,我是 Kagol,个人公众号:前端开源星球。 Fluent Editor 是一个基于 Quill 2.0 的富文本编辑器,在 Quill 基础上扩展了丰富的模块和格式,框架无关、 功能强大、开箱即用。 2024年8月12日,Fluent Editor 正式开源!源码:https://github.com/opentiny/fluent-editor/ 官…

JavaScript DOM

一 获取Element对象点击查看代码 Document对象中提供了以下获取 Element元素对象的函数 getElementById():根据id属性值获取,返回单个Element对象 getElementsByTagName():根据标签名称获取,返回Element对象数组 getElementsByName():根据name属性值获取,返回Element对象…

zblog列表页面包屑导航的代码 支持显示所有子分类

当前位置:<a href="{$host}">网站首页</a> {if $type==category} {php} $html=; function navcate($id){global $html;$cate = new Category;$cate->LoadInfoByID($id);$html = > <a href=".$cate->Url." title="查看.$cat…

zblog注册插件调用自定义模板的方法

操作步骤安装注册插件:安装官方提供的注册插件。修改插件文件:打开/zb_users/plugin/RegPage/include.php文件。替换模板名称:在第213行,将$article->Template改为自定义模板的名称,例如login。扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种C…

帝国CMS如何判断当前页面为首页高亮代码

<?php if(empty($GLOBALS[navclassid])){ echo class="active"; } ?>说明:如果当前栏目ID为空,则认为是首页,添加class="active"进行高亮。 特殊情况处理:如果不想在TAG页面和自定义页面也高亮,可以在这些页面顶部定义$GLOBALS[navclassid]为…

开启慢SQL设置long_query_time=0.1为啥会统计的sql却存在小于100毫秒的sql

开启慢SQL设置long_query_time=0.1为啥会统计的sql却存在小于100毫秒的sql@目录问题描述我的使用场景描述结论本人其他相关文章链接 问题描述开启慢SQL设置long_query_time=0.1为啥会统计的sql却存在小于100毫秒的sql?我的使用场景描述 我采用执行sql修改配置文件,也就是采用…

帝国CMS文章列表页模板动态刷新点击数代码

修改HTML代码:将点击数显示部分修改为:<em class="clickcount" data-class="[!--classid--]" data-id="[!--id--]">[!--onclick--]</em>添加JS代码:在模板页面尾部加入以下JS代码:<script> window.onload = function() {$…

人工智能技术:引领档案馆数字化转型新浪潮,档案专业人士必读(内有产品体验)

获取白皮书或产品体验,文末添加产品经理微信 在这个信息爆炸的时代,档案馆作为知识的宝库,承载着历史的记忆和文化的传承。如何让这些宝贵的信息更容易被检索、管理和利用,是档案管理领域面临的重大挑战。思通数科AI多模态平台,以前沿的人工智能技术,为档案馆的数字化转型…

GoPro 不同数码镜头的区别 All In One

GoPro 不同数码镜头的区别 All In One GoPro 数码镜头 HyperView 数码镜头/视野,只有 GoPro 10 之后的几代才有, 即 GoPro 11、GoPro 12、GoPro 13 ... HyperView 超大广角 HV SuperView SV 宽 W 线性 L 线性 + 水平锁定/地平线修正 L+GoPro 不同数码镜头的区别 All In One Go…

《计算机基础与程序设计》第6周学习总结

学期2024-2025-1学号20241414《计算机基础与程序设计》第6周学习总结 作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第6周作业这个作业的目标 1.循环语句2.循环语句的具体运用3.第二次实验4.函数作业正文…

Z-Library电子图书馆最新官方入口网站 镜像地址 客户端合集(2024持续更新)

PS: 本文章不涉及营销性质,没有盈利目的,仅供博友学习交流读书阅读本应该是自由的一件事 前言:Z-Library电子图书馆简介 Z-Libray简称 Z-Lib,它前身为 BookFinder,如今已成为众多读者下载期刊、文章以及各类书籍的首选之地。 Z-Library 共收录了超过 1000 万本书籍和…

java实现“数据平滑升级”

java实现“数据平滑升级”@目录一、摘要二、前提场景说明:三、项目用到的脚本和代码1.项目目录长这样2.java代码、配置文件、部分脚本3.升级包中的部分文件 一、摘要所谓的数据平滑升级:指的是比如旧的系统代码咱称之为V4.6版本,V4.6涉及的部分库表字段只有5个字段,而新版本…