MySQL查看表占用空間大小
前言
在mysql中有一個默認的數(shù)據(jù)表information_schema,information_schema這張數(shù)據(jù)表保存了MySQL服務器所有數(shù)據(jù)庫的信息。如數(shù)據(jù)庫名,數(shù)據(jù)庫的表,表欄的數(shù)據(jù)類型與訪問權限等。
再簡單點,這臺MySQL服務器上,到底有哪些數(shù)據(jù)庫、各個數(shù)據(jù)庫有哪些表,每張表的字段類型是什么,各個數(shù)據(jù)庫要什么權限才能訪問,等等信息都保存在information_schema表里面,所以請勿刪改此表。
代碼
1,切換數(shù)據(jù)庫
- use information_schema;
2,查看數(shù)據(jù)庫使用大小
- 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’;
網(wǎng)上找的一個,親測可用:
- 先進去MySQL自帶管理庫:information_schema
- 然后查詢 data_length,index_length
- 你自己的數(shù)據(jù)庫名: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.查看所有數(shù)據(jù)庫容量大小
- select
- table_schema as '數(shù)據(jù)庫',
- sum(table_rows) as '記錄數(shù)',
- sum(truncate(data_length/1024/1024, 2)) as '數(shù)據(jù)容量(MB)',
- sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)'
- from information_schema.tables
- group by table_schema
- order by sum(data_length) desc, sum(index_length) desc;
- ```
- ### 2.查看所有數(shù)據(jù)庫各表容量大小
- ```sql
- select
- table_schema as '數(shù)據(jù)庫',
- table_name as '表名',
- table_rows as '記錄數(shù)',
- truncate(data_length/1024/1024, 2) as '數(shù)據(jù)容量(MB)',
- truncate(index_length/1024/1024, 2) as '索引容量(MB)'
- from information_schema.tables
- order by data_length desc, index_length desc;
3.查看指定數(shù)據(jù)庫容量大小
例:查看mysql庫容量大小
- select
- table_schema as '數(shù)據(jù)庫',
- sum(table_rows) as '記錄數(shù)',
- sum(truncate(data_length/1024/1024, 2)) as '數(shù)據(jù)容量(MB)',
- sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)'
- from information_schema.tables
- where table_schema='mysql';
4.查看指定數(shù)據(jù)庫各表容量大小
例:查看mysql庫各表容量大小
- select
- table_schema as '數(shù)據(jù)庫',
- table_name as '表名',
- table_rows as '記錄數(shù)',
- truncate(data_length/1024/1024, 2) as '數(shù)據(jù)容量(MB)',
- truncate(index_length/1024/1024, 2) as '索引容量(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