如何计算mysql数据库大小

本文将指导您如何准确计算MySQL数据库的大小,通过查询information_schema.tables表来获取数据库大小,展示具体SQL语句和实例。

原文:如何计算mysql数据库大小

mysql大小可以通过 information_schema.tables中得出,不过内部开销不计算在内,所以是一个
近似的值

select
t.TABLE_SCHEMA "db name",
round(sum(t.INDEX_LENGTH+t.DATA_LENGTH)/1024/1024,2) "database size MB"
from information_schema.TABLES t
group by t.TABLE_SCHEMA


mysql> select
    -> t.TABLE_SCHEMA "db name",
    -> round(sum(t.INDEX_LENGTH+t.DATA_LENGTH)/1024/1024,2) "database size MB"
    -> from information_schema.TABLES t
    -> group by t.TABLE_SCHEMA
    -> ;
+--------------------+------------------+
| db name            | database size MB |
+--------------------+------------------+
| db1                |             0.09 |
| information_schema |             0.01 |
| mysql              |             0.91 |
| performance_schema |             0.00 |
| zabbix             |            20.80 |
+--------------------+------------------+
5 rows in set (0.01 sec)

计算 MySQL 数据库大小每月增量,可按以下思路进行: - **获取数据库大小**:可通过 SQL 查询获取数据库大小。例如使用如下查询来获取每个数据库大小: ```sql SELECT table_schema AS `Database`, SUM(data_length + index_length) / 1024 / 1024 AS `Size (MB)` FROM information_schema.TABLES GROUP BY table_schema; ``` 此查询会从 `information_schema.TABLES` 系统表中获取每个数据库的数据长度和索引长度总和,并将其转换为以兆字节(MB)为单位的大小。 - **每月记录数据库大小**:在每月的特定时间(如每月 1 号)运行上述查询,并记录下每个数据库大小。可以将这些记录存储在一个单独的表中,表结构可以如下: ```sql CREATE TABLE database_size_history ( record_date DATE, database_name VARCHAR(255), size_mb DECIMAL(10, 2) ); ``` 每次运行查询后,将结果插入到该表中: ```sql INSERT INTO database_size_history (record_date, database_name, size_mb) SELECT CURDATE(), table_schema, SUM(data_length + index_length) / 1024 / 1024 FROM information_schema.TABLES GROUP BY table_schema; ``` - **计算每月增量**:通过查询 `database_size_history` 表,计算相邻两个月的数据库大小差值,即为每月增量。以下查询可计算每个数据库的每月增量: ```sql SELECT current_record.database_name, current_record.record_date AS current_date, prev_record.record_date AS prev_date, current_record.size_mb - prev_record.size_mb AS monthly_increase FROM database_size_history current_record JOIN database_size_history prev_record ON current_record.database_name = prev_record.database_name AND current_record.record_date = DATE_ADD(prev_record.record_date, INTERVAL 1 MONTH); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值