MySQL 占用空间一键查询实践
2017-07-13 09:36
501 查看
经常会遇到DB满的情况 特别是大家共用DB的时候 这时候需要找到,哪个DB比较大,哪个表比较大,默认的方法你得一个一个的查询, 毕竟这里你没法使用 du -sh 这种文件系统级别的命令 但这肯定不是偷懒程序员爱干的事。
原理很简单:
MySQL在系统库中记录了这些数据,只需要使用一条SQL命令组合起来就好
详细表结构见下面
查询所有数据库占用磁盘空间大小的SQL语句:
查询单个库中所有表磁盘占用大小的SQL语句:(注意替换TestDB,为你要查询的DB_NAME)
是不是很简单,一条SQL查询你要的数据,再也不担心某人偷偷用我的数据库!
原理很简单:
MySQL在系统库中记录了这些数据,只需要使用一条SQL命令组合起来就好
| TABLE_SCHEMA | varchar(64) | NO | | | |数据库的名字
| TABLE_NAME | varchar(64) | NO | | | |表名
| DATA_LENGTH | bigint(21) unsigned | YES | | NULL | |数据空间大小
| INDEX_LENGTH | bigint(21) unsigned | YES | | NULL | |数据索引大小
详细表结构见下面
+-----------------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------+---------------------+------+-----+---------+-------+ | TABLE_CATALOG | varchar(512) | NO | | | | | TABLE_SCHEMA | varchar(64) | NO | | | | 数据库的名字 | TABLE_NAME | varchar(64) | NO | | | | 表名 | TABLE_TYPE | varchar(64) | NO | | | | | ENGINE | varchar(64) | YES | | NULL | | | VERSION | bigint(21) unsigned | YES | | NULL | | | ROW_FORMAT | varchar(10) | YES | | NULL | | | TABLE_ROWS | bigint(21) unsigned | YES | | NULL | | | AVG_ROW_LENGTH | bigint(21) unsigned | YES | | NULL | | | DATA_LENGTH | bigint(21) unsigned | YES | | NULL | | 数据空间大小 | MAX_DATA_LENGTH | bigint(21) unsigned | YES | | NULL | | | INDEX_LENGTH | bigint(21) unsigned | YES | | NULL | | 数据索引大小 | DATA_FREE | bigint(21) unsigned | YES | | NULL | | | AUTO_INCREMENT | bigint(21) unsigned | YES | | NULL | | | CREATE_TIME | datetime | YES | | NULL | | | UPDATE_TIME | datetime | YES | | NULL | | | CHECK_TIME | datetime | YES | | NULL | | | TABLE_COLLATION | varchar(32) | YES | | NULL | | | CHECKSUM | bigint(21) unsigned | YES | | NULL | | | CREATE_OPTIONS | varchar(255) | YES | | NULL | | | TABLE_COMMENT | varchar(2048) | NO | | | |
查询所有数据库占用磁盘空间大小的SQL语句:
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_length desc;
查询单个库中所有表磁盘占用大小的SQL语句:(注意替换TestDB,为你要查询的DB_NAME)
select TABLE_NAME, concat(truncate(data_length/1024/1024,2),' MB') as data_size, concat(truncate(index_length/1024/1024,2),' MB') as index_size from information_schema.tables where TABLE_SCHEMA = 'TestDB' group by TABLE_NAME order by data_length desc;
是不是很简单,一条SQL查询你要的数据,再也不担心某人偷偷用我的数据库!
相关文章推荐
- MySQL 占用空间一键查询实践[申明:来源于网络]
- MYSQL查询数据库表索引的硬盘空间占用
- MySQL中查询所有数据库占用磁盘空间大小和单个库中所有表的大小的sql语句
- MySQL中查询所有数据库占用磁盘空间大小和单个库中所有表的大小的sql语句
- MYSQL查询数据库表索引的硬盘空间占用
- mysql 查询表占用空间大小
- MySQL中查询所有数据库占用磁盘空间大小和单个库中所有表的大小的sql语句
- MySQL数据和索引占用空间查询
- sql查询数据库中表占用空间大小
- 查询sql数据库中表占用的空间大小
- 不同数据库中查询Table占用空间的大小
- oracle查询表空间的空间占用情况
- 查看mysql中某个数据库或表占用的磁盘空间
- 查询数据库中所有表的占用空间情况
- PHP查询MySQL大量数据的内存占用分析
- ORACLE查询每个表占用空间大小
- 查询sql数据库中表占用的空间大小
- 查询SQL Server中数据库的各个表所占用的空间
- MYSQL的空间查询
- 一个表占用了多少磁盘空间的查询方法