如何获取mysql数据库的大小?

New*_*bie 493 mysql database

如何获取mysql数据库的大小?
假设目标数据库名为"v3".

Bri*_*lis 1095

运行此查询,您可能会得到您正在寻找的内容:

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; 
Run Code Online (Sandbox Code Playgroud)

此查询来自mysql论坛,其中提供了更全面的说明.

  • @OZZIE你知道你可以添加`WHERE`子句吧? (52认同)
  • 要从单个数据库中进行选择,请在`FROM`和`GROUP`行之间添加:`where table_schema ='DATABASE_NAME'` - 将"DATABASE_NAME"替换为您的数据库. (10认同)
  • 即使我从数据库中的表中删除了大部分数据,大小仍然保持不变 (4认同)
  • 请记住,此方法不会返回任何完全为空的数据库,至少必须存在一个表才能使数据库出现在结果中. (4认同)
  • 注意:MySQL Workbench 会吐出一个 `Syntax error: {column title} (doublequoted text) is not valid input here.` 错误。列标题应包含在刻度线中。即`数据库名称`。 (3认同)
  • @Vidz你在使用InnoDB引擎吗?如果这样做,除非使用file_per_table和alter tables,否则可以释放空间. (2认同)

Nad*_*035 60

可以使用以下MySQL命令确定

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 AS "Size (MB)" FROM information_schema.TABLES GROUP BY table_schema
Run Code Online (Sandbox Code Playgroud)

结果

Database    Size (MB)
db1         11.75678253
db2         9.53125000
test        50.78547382
Run Code Online (Sandbox Code Playgroud)

获得GB的结果

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 / 1024 AS "Size (GB)" FROM information_schema.TABLES GROUP BY table_schema
Run Code Online (Sandbox Code Playgroud)

  • 真好 我喜欢这个答案。 (2认同)

Joe*_*oel 28

或者,如果您正在使用phpMyAdmin,则可以查看数据库structure选项卡页脚中表格大小的总和.实际数据库大小可能稍微超过此大小,但它似乎与上述table_schema方法一致.

屏幕截图:

在此输入图像描述


小智 26

或者,您可以直接跳转到数据目录并检查v3.myd,v3的组合大小.myi和v3.frm文件(用于myisam)或v3.idb&v3.frm(用于innodb).

  • 注意:仅当使用innodb_file_per_table时才存在ibd文件 (6认同)
  • 这个答案非常特定于存储引擎。@brian-willis 的回答更合适。 (2认同)

Jör*_*sen 24

如果您想要对所有数据库大小的列表进行排序,您可以使用:

SELECT * 
FROM   (SELECT table_schema AS `DB Name`, 
           ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) AS `DB Size in MB`
        FROM   information_schema.tables 
        GROUP  BY `DB Name`) AS tmp_table 
ORDER  BY `DB Size in MB` DESC; 
Run Code Online (Sandbox Code Playgroud)


小智 14

要获得MB的结果:

SELECT
SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024), 2)) AS "SIZE IN MB"
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = "SCHEMA-NAME";
Run Code Online (Sandbox Code Playgroud)

要获得GB的结果:

SELECT
SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 / 1024), 2)) AS "SIZE IN GB"
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = "SCHEMA-NAME";
Run Code Online (Sandbox Code Playgroud)


Ric*_*mes 10

mysqldiskusage  --server=root:MyPassword@localhost  pics

+----------+----------------+
| db_name  |         total  |
+----------+----------------+
| pics     | 1,179,131,029  |
+----------+----------------+
Run Code Online (Sandbox Code Playgroud)

  • 在 Debian 10 上,该软件包称为“mysql-utilities” (2认同)

Hir*_*ghi 10

第一次登录到 MySQL 使用

mysql -u username -p

命令以显示单个数据库的大小及其表(以 MB 为单位)。

SELECT table_name AS "Table",
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
FROM information_schema.TABLES
WHERE table_schema = "database_name"
ORDER BY (data_length + index_length) DESC;
Run Code Online (Sandbox Code Playgroud)

将 database_name 更改为您的数据库

显示所有数据库及其大小(以 MB 为单位)的命令。

SELECT table_schema AS "Database", 
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" 
FROM information_schema.TABLES 
GROUP BY table_schema;
Run Code Online (Sandbox Code Playgroud)


Eva*_*ton 6

进入mysql数据目录并运行du -h --max-depth=1 | grep databasename

  • 好的。但对于像 RDS、GCP 这样的云数据库服务器,我们无法访问服务器文件系统。 (5认同)