【问题标题】:How to Get True Size of MySQL Database?如何获取 MySQL 数据库的真实大小?
【发布时间】:2013-01-20 19:20:33
【问题描述】:

我想知道我的 MySQL 数据库使用了多少空间,以便选择一个网络主机。 我找到了命令SHOW TABLE STATUS LIKE 'table_name',所以当我进行查询时,我会得到这样的结果:

Name       | Rows | Avg. Row Length | Data_Length | Index Length
----------   ----   ---------------   -----------   ------------
table_name   400          55            362000        66560
  • 数字四舍五入。

那么我有 362000 或 400*362000 = 144800000 字节的数据用于此表吗? 索引长度是什么意思? 谢谢!

【问题讨论】:

标签: mysql database size byte storage


【解决方案1】:

来自 S. Prakash,地址为 MySQL forum

SELECT table_schema "database name",
    sum( data_length + index_length ) / 1024 / 1024 "database size in MB",
    sum( data_free )/ 1024 / 1024 "free space in MB"
FROM information_schema.TABLES
GROUP BY table_schema; 

或者在一行中更容易复制粘贴:

SELECT table_schema "database name", sum( data_length + index_length ) / 1024 / 1024 "database size in MB", sum( data_free )/ 1024 / 1024 "free space in MB" FROM information_schema.TABLES GROUP BY table_schema; 

【讨论】:

  • 以 MB 为单位的可用空间是什么意思?我有 100 GB 的可用空间,但它报告的可用空间不到 1 GB。
  • @Barth 根据documentation 表示“InnoDB 表的可用空间(以字节为单位)”。不幸的是,没有解释 that 是什么意思:-\
  • 可用空间(以字节为单位)的确切含义 - 这意味着如果您优化表或从头开始重建表,则可以回收空间量。当数据库将信息存储在磁盘上时,它们以块的形式分配信息;删除记录通常会释放已使用块之间的块,并且移动所有其他块以使用该空间非常昂贵,因此将其标记为“空闲”。该空间可以稍后由数据库引擎本身使用,或者可以使用OPTIMIZE TABLE foo (MyISAM) 回收,或者为 InnoDB 表重新创建 + 分析。
【解决方案2】:

您可以通过在Mysql客户端运行以下命令来获取您的Mysql数据库的大小

SELECT  sum(round(((data_length + index_length) / 1024 / 1024 / 1024), 2))  as "Size in GB"
FROM information_schema.TABLES
WHERE table_schema = "<database_name>"

【讨论】:

    【解决方案3】:

    如果你使用 phpMyAdmin,它可以告诉你这些信息。

    只需转到“数据库”(顶部菜单)并点击“启用统计信息”。

    你会看到这样的:

    随着尺寸的增加,这可能会失去一些准确性,但它应该足以满足您的目的。

    【讨论】:

    • 我目前正在使用 000webhost。它有 phpMyAdmin,但我找不到“启用统计信息”复选框。是否有(可能)对此的查询?
    • @marvin 好吧,网络主机可能安装了旧版本的 phpMyAdmin。不知道这个功能是在哪个版本引入的。
    • 在您的侧边栏中,单击顶部的主页图标,将您带到主页。在右侧窗口中,单击“数据库”。它显示一个单列的数据库表,下面是一个名为“启用统计”的链接
    【解决方案4】:

    如果你想在 MB 中找到它,请这样做

    SELECT table_schema                                        "DB Name", 
       Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" 
    FROM   information_schema.tables 
    GROUP  BY table_schema; 
    

    【讨论】:

    【解决方案5】:

    基本上有两种方式: 查询数据库(数据长度+索引长度)或检查文件大小。索引长度与索引中存储的数据有关。

    这里描述了一切:

    http://www.mkyong.com/mysql/how-to-calculate-the-mysql-database-size/

    【讨论】:

    • 嗯,这个页面是我的问题的来源。但是根据这个查询,我有 0.5 MB,这让我很安全。我希望这是真的:) 谢谢!
    【解决方案6】:

    没有一个答案包括开销大小和表的元数据大小。

    这是对数据库分配的“磁盘空间”的更准确估计。

    SELECT ROUND((SUM(data_length+index_length+data_free) + (COUNT(*) * 300 * 1024))/1048576+150, 2) AS MegaBytes FROM information_schema.TABLES WHERE table_schema = 'DATABASE-NAME'
    

    【讨论】:

    • 您能详细说明一下吗?尤其是你的常量 300150?
    • 拜托,你能详细说明一下吗?
    【解决方案7】:

    如果要查找所有 MySQL 数据库的大小,使用这个命令,它将以兆字节显示它们各自的大小;

    SELECT table_schema "database", sum(data_length + index_length)/1024/1024 "size in MB" FROM information_schema.TABLES GROUP BY table_schema;
    

    如果您有大型数据库,可以使用以下命令以千兆字节为单位显示结果;

    SELECT table_schema "database", sum(data_length + index_length)/1024/1024/1024 "size in GB" FROM information_schema.TABLES GROUP BY table_schema;
    

    如果您只想显示特定数据库的大小,例如YOUR_DATABASE_NAME,您可以使用以下查询;

    SELECT table_schema "database", sum(data_length + index_length)/1024/1024/1024 "size in GB" FROM information_schema.TABLES WHERE table_schema='YOUR_DATABASE_NAME' GROUP BY table_schema;
    

    【讨论】:

      【解决方案8】:

      SUM(Data_free) 可能有效也可能无效。这取决于innodb_file_per_table 的历史。更多讨论见here

      【讨论】:

        【解决方案9】:

        Oracle 的 MySQL Utilities 有一个名为 mysqldiskusage 的命令,可以显示每个数据库的磁盘使用情况:https://dev.mysql.com/doc/mysql-utilities/1.6/en/mysqldiskusage.html

        【讨论】:

          【解决方案10】:

          如果您使用的是 MySql Workbench,很容易获得数据库大小、每个表大小、索引大小等的所有详细信息。

          1. 右键单击架构
          2. 选择Schema Inspector选项

          3. 它显示了 Schema 大小的所有细节

          4. 选择表格标签查看每个表格的大小。

          5. 数据长度列中显示的表大小

          【讨论】:

            猜你喜欢
            • 2010-12-16
            • 2021-04-05
            • 2020-09-10
            • 2015-02-24
            • 1970-01-01
            • 2021-11-20
            相关资源
            最近更新 更多