当前位置: 首页 > news >正文

如何获取MySQL中表的大小?(官方校正版)

与大多数关系数据库一样,MySQL 提供了有关数据库本身的有用元数据。虽然大多数其他数据库将此信息称为 catalog, 但MySQL 官方文档INFORMATION_SCHEMA 将元数据  称为 tables

目录

1 列出单个数据库中的单表大小

2 列出所有数据库中的所有表大小


以下SQL语句的测试可以使用命令行,或是使用SQL工具比如MySQL Workbench或SQLynx等。

无论名称如何,重要的是这些 INFORMATION_SCHEMA 表提供的信息。从 到 的所有内容 views 都 user_privilieges 可以 columns 在 tables 中找到 INFORMATION_SCHEMA。就我们的目的而言,我们特别感兴趣的是 tables 元数据,我们可以查询元数据以实际提取系统中各个表的大小。

1 列出单个数据库中的表大小


正如在 官方文档,该 INFORMATION_SCHEMA.TABLES 表包含大约 20 列,但为了确定表使用的磁盘空间量,我们将特别关注两列: DATA_LENGTH 和 INDEX_LENGTH

  • DATA_LENGTH 是表中所有数据的长度(或大小)(以 为单位 bytes)。
  • INDEX_LENGTH 是表的索引文件的长度(或大小)(也以 为单位 bytes)。

有了这些信息,我们可以执行查询,列出特定数据库中的所有表以及每个表的磁盘空间(大小)。我们甚至可以更花哨一点,将正常大小值转换为 bytes 对大多数人更有用、更容易理解的值,例如 megabytes

SELECTTABLE_NAME AS `Table`,ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)`
FROMinformation_schema.TABLES
WHERETABLE_SCHEMA = "bookstore"
ORDER BY(DATA_LENGTH + INDEX_LENGTH)
DESC;

在这个使用 bookstore 数据库的例子中,我们将和合并 DATA_LENGTH 为 INDEX_LENGTH , bytes然后将其除以 1024 两次 以转换为 kilobytes 和 megabytes。我们的结果集将如下所示:

+----------------------------------+-----------+
| Table                            | Size (MB) |
+----------------------------------+-----------+
| book                             |       267 |
| author                           |        39 |
| post                             |        27 |
| cache                            |        24 |
...

如果您不关心数据库中的所有表,而只想要特定表的大小,则可以简单地添加 AND TABLE_NAME = "your_table_name" 到 WHERE 子句中。这里我们只需要有关 book 表的信息:

SELECTTABLE_NAME AS `Table`,ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)`
FROMinformation_schema.TABLES
WHERETABLE_SCHEMA = "bookstore"ANDTABLE_NAME = "book"
ORDER BY(DATA_LENGTH + INDEX_LENGTH)
DESC;

正如预期的那样,结果如下:

+-------+-----------+
| Table | Size (MB) |
+-------+-----------+
| book  |       267 |
+-------+-----------+
1 row in set (0.00 sec)

2 列出所有数据库中的所有表大小


如果您遇到数据库大小不断增长但不知道哪个表是罪魁祸首的问题,查询 整个系统中所有数据库中所有 表 的大小可能会很有用 。这可以通过以下查询轻松完成:

SELECTTABLE_SCHEMA AS `Database`,TABLE_NAME AS `Table`,ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)`
FROMinformation_schema.TABLES
ORDER BY(DATA_LENGTH + INDEX_LENGTH)
DESC;

这不仅会返回表的大小,还会返回与其关联的表名和父数据库。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【深度学习】—— 神经网络介绍
  • 倩女幽魂手游攻略:云手机自动搬砖辅助教程!
  • VueRouter3学习笔记
  • 【求助】ansible synchronize 问题
  • 【玩转C语言】第四讲--->操作符与循环语句
  • 未来AI大模型的发展趋势
  • MySQL之查询性能优化(十三)
  • 如何使用共享GPU平台搭建LLAMA3环境(LLaMA-Factory)
  • 【云原生】Kubernetes----RBAC用户资源权限
  • 适用于 Windows 的 8 大数据恢复软件
  • 地图商家数据怎么查看?揭秘采集软件工作原理!
  • Rust 实战丨SSE(Server-Sent Events)
  • 深度学习的点云分割
  • 【JS封装-工具函数】强化编程实践:精选JavaScript函数封装集锦-关于工具函数 (如深度克隆、浅拷贝、递归、防抖和节流等)
  • 【Python】使用 SQLObject orm 库快速将接口数据存入数据库
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • canvas 高仿 Apple Watch 表盘
  • C语言笔记(第一章:C语言编程)
  • LeetCode29.两数相除 JavaScript
  • Python利用正则抓取网页内容保存到本地
  • Shadow DOM 内部构造及如何构建独立组件
  • SpingCloudBus整合RabbitMQ
  • SpriteKit 技巧之添加背景图片
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • Vultr 教程目录
  • WebSocket使用
  • 从tcpdump抓包看TCP/IP协议
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 翻译--Thinking in React
  • 跨域
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 实战|智能家居行业移动应用性能分析
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 延迟脚本的方式
  • 一、python与pycharm的安装
  • 阿里云API、SDK和CLI应用实践方案
  • 回归生活:清理微信公众号
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • $.ajax中的eval及dataType
  • (35)远程识别(又称无人机识别)(二)
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (回溯) LeetCode 46. 全排列
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (七)理解angular中的module和injector,即依赖注入
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (算法)大数的进制转换
  • (贪心 + 双指针) LeetCode 455. 分发饼干
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .gitignore文件---让git自动忽略指定文件
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET C# 使用 iText 生成PDF
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别