1、统计【所有库】每月新增空间总量
SELECT
DATE_FORMAT(create_time, '%Y-%m') AS 月份,
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 新增总空间_MB,
ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS 新增总空间_GB
FROM
information_schema.tables
WHERE
table_schema NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys') -- 排除系统库
AND create_time IS NOT NULL -- 只统计有创建时间的表
GROUP BY
DATE_FORMAT(create_time, '%Y-%m')
ORDER BY
月份 DESC;
2、统计【指定库】每月新增空间
把 your_database 换成你的数据库名即可:
SELECT
DATE_FORMAT(create_time, '%Y-%m') AS 月份,
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 新增空间_MB,
ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS 新增空间_GB
FROM
information_schema.tables
WHERE
table_schema = 'your_database' -- 替换成你的库名
AND create_time IS NOT NULL
GROUP BY
DATE_FORMAT(create_time, '%Y-%m')
ORDER BY
月份 DESC;
3、更精准:按【修改时间】统计每月增量(推荐)
create_time 是表创建时间,实际业务中更应该用 update_time(表最后修改时间) 代表每月数据增长:
SELECT
DATE_FORMAT(update_time, '%Y-%m') AS 月份,
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 当月总占用_MB,
ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS 当月总占用_GB
FROM
information_schema.tables
WHERE
table_schema NOT IN ('information_schema', 'mysql', 'performance_schema', 'sys')
AND update_time IS NOT NULL
GROUP BY
DATE_FORMAT(update_time, '%Y-%m')
ORDER BY
月份 DESC;
4、字段含义
data_length:数据文件大小index_length:索引文件大小data_length + index_length= 表总空间create_time:表创建时间update_time:表最后数据更新时间