MySQL查看数据库、表占用磁盘大小
直接复制执行
1、查询所有数据库占用磁盘空间大小
select
TABLE_SCHEMA,
concat(truncate(sum(data_length)/1024/1024,2),' MB') as data_size,
concat(truncate(sum(index_length)/1024/1024,2),'MB') as index_size
from information_schema.tables
group by TABLE_SCHEMA
ORDER BY data_size desc;
select concat(truncate(sum(data_length)/1024/1024,2),'MB') as data_size,
concat(truncate(sum(max_data_length)/1024/1024,2),'MB') as max_data_size,
concat(truncate(sum(data_free)/1024/1024,2),'MB') as data_free,
concat(truncate(sum(index_length)/1024/1024,2),'MB') as index_size
from information_schema.tables
where TABLE_SCHEMA = 'databasename'; # databasename 具体库名
2、查询单个库中所有表磁盘占用大小
select concat(truncate(sum(data_length)/1024/1024,2),'MB') as data_size,
concat(truncate(sum(max_data_length)/1024/1024,2),'MB') as max_data_size,
concat(truncate(sum(data_free)/1024/1024,2),'MB') as data_free,
concat(truncate(sum(index_length)/1024/1024,2),'MB') as index_size
from information_schema.tables
where TABLE_NAME = 'tablename'; # tablename 具体表名
-- 查看数据库中所有表的信息
SELECT
concat( table_schema, '.', table_name ) AS 'Table Name',
table_rows AS 'Number of Rows',
concat( round( data_length / ( 1024 * 1024 * 1024 ), 6 ), ' G' ) AS 'Data Size',
concat( round( index_length / ( 1024 * 1024 * 1024 ), 6 ), ' G' ) AS 'Index Size',
concat( round( ( data_length + index_length ) / ( 1024 * 1024 * 1024 ), 6 ), ' G' ) AS 'Total'
FROM
information_schema.TABLES W
WHERE
table_schema LIKE 'database name';
3、查看表空间
# 单位GB
SELECT concat( round( sum( data_length ) / ( 1024 * 1024 * 1024 ), 6 ), 'GB' ) AS 'Total Data Size'
FROM information_schema.TABLES
WHERE table_schema LIKE 'database name';
4、查看索引空间
SELECT CONCAT( ROUND( SUM( index_length ) / ( 1024 * 1024 * 1024 ), 6 ), ' GB' ) AS 'Total Index Size'
FROM information_schema.TABLES
WHERE table_schema LIKE 'dabatase name';
5、使用optimize命令
optimize table tb_report_inventory;
使用的时间比较长,需要耐心等待。
注意:optimize执行时会将表锁住,所以不要在高峰期使用。也不要经常使用,每月一次就足够了
问题
若执行 2、查询单个库中所有表磁盘占用大小出现以下报错:
Expression #2 of SELECT list is not in GROUP BY clause and contains
nonaggregated column ‘sss.month_id’ which is not functionally
dependent on columns in GROUP BY clause; this is incompatible with
sql_mode=only_full_group_by
解决方法一:
此方法只是临时解决,重启mysql服务器会还原。
打开navcat,
用sql查询:
select @@global.sql_mode
查询出来的值为:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
去掉ONLY_FULL_GROUP_BY,重新设置值。
set @@global.sql_mode
=’STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;
解决方法二:
成功的步骤:
打开文件
sudo vim /etc/mysql/conf.d/mysql.cnf
滚动到文件底部复制并粘贴
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
到文件的底部
保存并退出输入模式
sudo service mysql restart
重启MySQL。
完成!
分类:
MySQL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
2021-12-08 PHP中pack、unpack的详细用法