檢視mysql庫大小,表大小,索引大小
阿新 • • 發佈:2019-02-20
轉自:http://www.cnblogs.com/lukcyjane/p/3849354.html
說明:通過MySQL的 information_schema 資料庫,可查詢資料庫中每個表佔用的空間、表記錄的行數;該庫中有一個 TABLES 表,這個表主要欄位分別是:
TABLE_SCHEMA : 資料庫名
TABLE_NAME:表名
ENGINE:所使用的儲存引擎
TABLES_ROWS:記錄數
DATA_LENGTH:資料大小
INDEX_LENGTH:索引大小
其他欄位請參考MySQL的手冊,檢視一個表佔用空間的大小,那就相當於是 資料大小 + 索引大小 。
檢視所有庫的大小mysql> use information_schema; Database changed mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES; +----------+ | data | +----------+ | 104.21MB | +----------+ 1 row in set (0.11 sec)
檢視指定庫的大小
mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as檢視指定庫的指定表的大小data from TABLES where table_schema='jishi'; +---------+ | data | +---------+ | 26.17MB | +---------+ 1 row in set (0.01 sec)
mysql> select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from TABLES where table_schema='jishi' and table_name='a_ya'; +--------+ | data |+--------+ | 0.02MB | +--------+ 1 row in set (0.00 sec)
檢視指定庫的索引大小
mysql> SELECT CONCAT(ROUND(SUM(index_length)/(1024*1024), 2), ' MB') AS 'Total Index Size' FROM TABLES WHERE table_schema = 'jishi'; +------------------+ | Total Index Size | +------------------+ | 0.94 MB | +------------------+ 1 row in set (0.01 sec)
檢視指定庫的指定表的索引大小
mysql> SELECT CONCAT(ROUND(SUM(index_length)/(1024*1024), 2), ' MB') AS 'Total Index Size' FROM TABLES WHERE table_schema = 'test' and table_name='a_yuser'; +------------------+ | Total Index Size | +------------------+ | 21.84 MB | +------------------+ 1 row in set (0.00 sec) mysql> show create table test.a_yuser\G; *************************** 1. row *************************** Table: a_yuser Create Table: CREATE TABLE `a_yuser` ( `email` varchar(60) NOT NULL DEFAULT '', `user_name` varchar(60) NOT NULL DEFAULT '', KEY `cc` (`email`(5)), KEY `ccb` (`user_name`(5)), KEY `ccbc` (`email`(5),`user_name`(5)) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 1 row in set (0.00 sec) ERROR: No query specified mysql> select count(*) from test.a_yuser; +----------+ | count(*) | +----------+ | 1073607 | +----------+ 1 row in set (0.00 sec)
檢視一個庫中的情況
mysql> SELECT CONCAT(table_schema,'.',table_name) AS 'Table Name', CONCAT(ROUND(table_rows/1000000,4),'M') AS 'Number of Rows', CONCAT(ROUND(data_length/(1024*1024*1024),4),'G') AS 'Data Size', CONCAT(ROUND(index_length/(1024*1024*1024),4),'G') AS 'Index Size', CONCAT(ROUND((data_length+index_length)/(1024*1024*1024),4),'G') AS'Total'FROM information_schema.TABLES WHERE table_schema LIKE 'test'; +---------------+----------------+-----------+------------+---------+ | Table Name | Number of Rows | Data Size | Index Size | Total | +---------------+----------------+-----------+------------+---------+ | test.a_br | 0.4625M | 0.0259G | 0.0171G | 0.0431G | | test.a_skuclr | 0.7099M | 0.0660G | 0.0259G | 0.0919G | | test.a_yuser | 1.0736M | 0.0497G | 0.0213G | 0.0710G | | test.test | 0.0000M | 0.0000G | 0.0000G | 0.0000G | +---------------+----------------+-----------+------------+---------+ 4 rows in set (0.13 sec)
參考網址:
http://www.oschina.net/question/12_3673
http://blog.sina.com.cn/s/blog_4c197d420101fbl9.html
好記性不如爛筆頭,把遇到的問題及其解決方法記錄下來。