社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

MySQL查看表占用空间大小

Java知音 • 3 年前 • 386 次点击  

作者:arctic_fox

cnblogs.com/shoshana-kong/p/11136919.html

前言

在mysql中有一个默认的数据表information_schema,information_schema这张数据表保存了MySQL服务器所有数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。

再简单点,这台MySQL服务器上,到底有哪些数据库、各个数据库有哪些表,每张表的字段类型是什么,各个数据库要什么权限才能访问,等等信息都保存在information_schema表里面,所以请勿删改此表。

代码

1,切换数据库

use information_schema;

2,查看数据库使用大小

select concat(round(sum(data_length/1024/1024),2),’MB’) as data from tables where table_schema=’DB_Name’ ;

3,查看表使用大小

select concat(round(sum(data_length/1024/1024),2),’MB’) as data from tables where table_schema=’DB_Name’ and table_name=’Table_Name’;

网上找的一个,亲测可用:

  • 先进去MySQL自带管理库:information_schema
  • 然后查询 data_length,index_length
  • 你自己的数据库名:dbname
  • 你自己的表名:tablename
mysql> use information_schema;  
Database changed  
mysql> select data_length,index_length  
    -> from tables where  
    -> table_schema='dbname'  
    -> and table_name = 'tablename';  
+-------------+--------------+  
| data_length | index_length |  
+-------------+--------------+  
|   166379520 |    235782144 |  
+-------------+--------------+  
row in set (0.02 sec)  
mysql> select concat(round(sum(data_length/1024/1024),2),'MB'as data_length_MB,  
    -> concat(round(sum(index_length/1024/1024),2),'MB'as index_length_MB  
    -> from tables where  
    -> table_schema='dbname'  
    -> and table_name = 'tablename';  
+----------------+-----------------+  
| data_length_MB | index_length_MB |  
+----------------+-----------------+  
| 158.67MB       | 224.86MB        |  
+----------------+-----------------+  
row in set (0.03 sec)

1.查看所有数据库容量大小

select
table_schema as '数据库',
sum(table_rows) as '记录数',
sum(truncate(data_length/1024/10242)) as '数据容量(MB)',
sum(truncate(index_length/1024/10242)) as '索引容量(MB)'
from information_schema.tables
group by table_schema
order by sum(data_length) descsum(index_length) desc;
```  

### 2.查看所有数据库各表容量大小
```sql
select
table_schema as '数据库',
table_name as '表名',
table_rows as '记录数',
truncate(data_length/1024/10242as '数据容量(MB)',
truncate(index_length/1024/10242as '索引容量(MB)'
from information_schema.tables
order by data_length desc, index_length desc;

3.查看指定数据库容量大小

例:查看mysql库容量大小

select
table_schema as '数据库',
sum(table_rows) as '记录数',
sum (truncate(data_length/1024/10242)) as '数据容量(MB)',
sum(truncate(index_length/1024/10242)) as '索引容量(MB)'
from information_schema.tables
where table_schema='mysql';

4.查看指定数据库各表容量大小

例:查看mysql库各表容量大小

select
table_schema as '数据库',
table_name as '表名',
table_rows as '记录数',
truncate(data_length/1024/10242as '数据容量(MB)',
truncate(index_length/1024/10242as '索引容量(MB)'
from information_schema.tables
where table_schema='mysql'
order by data_length desc, index_length desc;

select concat(round(sum(data_length/1024/1024),2),'MB'as data_length_MB, concat(round(sum(index_length/1024/1024),2),'MB'as index_length_MB
from tables 
where table_schema='passport' and table_name='tb_user_info';

-- 569.98MB 141.98MB

select concat(round(sum(data_length/1024/1024),2),'MB'as data_length_MB, concat(round(sum(index_length/1024/1024),2),'MB'as index_length_MB
from tables
where table_schema='passport_v2' and table_name='tb_user_info';

--   2128.94MB   285.00MB

END

推荐好文

强大,10k+点赞的 SpringBoot 后台管理系统竟然出了详细教程!

分享一套基于SpringBoot和Vue的企业级中后台开源项目,代码很规范!

能挣钱的,开源 SpringBoot 商城系统,功能超全,超漂亮!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/106464
 
386 次点击