Mysql 查看表數據以及索引大小


如果想查看 Mysql 數據庫的總的數據量或者某個表的數據或者索引大小,可以使用系統庫 information_schema 來查詢,這個系統庫中有一個 TABLES 表,這個表是用來記錄數據庫中表的大小、行數、索引大小等信息

mysql > use information_schema;
Database changed
mysql > show create table TABLES;
mysql > desc TABLES;

表結構如下:

sql:

CREATE TEMPORARY TABLE `TABLES` (
   `TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
   `TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
   `TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
   `TABLE_TYPE` varchar(64) NOT NULL DEFAULT '',
   `ENGINE` varchar(64) DEFAULT NULL,
   `VERSION` bigint(21) unsigned DEFAULT NULL,
   `ROW_FORMAT` varchar(20) DEFAULT NULL,
   `TABLE_ROWS` bigint(21) unsigned DEFAULT NULL,
   `AVG_ROW_LENGTH` bigint(21) unsigned DEFAULT NULL,
   `DATA_LENGTH` bigint(21) unsigned DEFAULT NULL,
   `MAX_DATA_LENGTH` bigint(21) unsigned DEFAULT NULL,
   `INDEX_LENGTH` bigint(21) unsigned DEFAULT NULL,
   `DATA_FREE` bigint(21) unsigned DEFAULT NULL,
   `AUTO_INCREMENT` bigint(21) unsigned DEFAULT NULL,
   `CREATE_TIME` datetime DEFAULT NULL,
   `UPDATE_TIME` datetime DEFAULT NULL,
   `CHECK_TIME` datetime DEFAULT NULL,
   `TABLE_COLLATION` varchar(32) DEFAULT NULL,
   `CHECKSUM` bigint(21) unsigned DEFAULT NULL,
   `CREATE_OPTIONS` varchar(255) DEFAULT NULL,
   `TABLE_COMMENT` varchar(2048) NOT NULL DEFAULT '',
   `BLOCK_FORMAT` varchar(20) DEFAULT NULL
 ) ENGINE=MEMORY DEFAULT CHARSET=utf8

這個表的字段很多,常用的字段有下面幾個:

TABLE_SCHEMA:     數據庫名
TABLE_NAME:     表名
ENGINE:       所使用的存儲引擎
TABLES_ROWS:   記錄行數
DATA_LENGTH:    表大小
INDEX_LENGTH:   索引大小

 

一個表的大小 = 數據量 + 索引大小

1、可以查詢數據庫的數據行數、表空間、索引空間,如下,將 [數據庫名] 替換成你自己的數據庫名即可。

SELECT TABLE_SCHEMA AS '庫名',
CONCAT(ROUND(TABLE_ROWS/10000, 2), ' 萬行') AS '行數',
CONCAT(ROUND(SUM(DATA_LENGTH)/(1024*1024*1024), 2), ' GB') AS '表空間',
CONCAT(ROUND(SUM(INDEX_LENGTH)/(1024*1024*1024), 2), ' GB') AS '索引空間',
CONCAT(ROUND(SUM(DATA_LENGTH+INDEX_LENGTH)/(1024*1024*1024),2),' GB') AS'總空間'
FROM information_schema.TABLES WHERE TABLE_SCHEMA = [數據庫名];

 

 

2、當然也可以不匯總,查詢下各個表的情況進行分析,如下,將 [數據庫名] 替換成你自己的數據庫名即可。

SELECT TABLE_NAME AS '表名',
CONCAT(ROUND(TABLE_ROWS/10000, 2), ' 萬行') AS '行數',
CONCAT(ROUND(DATA_LENGTH/(1024*1024*1024), 2), ' GB') AS '表空間',
CONCAT(ROUND(INDEX_LENGTH/(1024*1024*1024), 2), ' GB') AS '索引空間',
CONCAT(ROUND((DATA_LENGTH+INDEX_LENGTH)/(1024*1024*1024),2),' GB') AS'總空間'
FROM information_schema.TABLES WHERE TABLE_SCHEMA = [數據庫名] ORDER BY TABLE_ROWS DESC;

 

 

3、也可以查詢下某個表的情況,如下,將 [數據庫名] 和 [數據表名] 替換成你自己的數據庫名和數據表名即可。

SELECT TABLE_NAME AS '表名',
CONCAT(ROUND(TABLE_ROWS/10000, 2), ' 萬行') AS '行數',
CONCAT(ROUND(DATA_LENGTH/(1024*1024*1024), 2), ' GB') AS '表空間',
CONCAT(ROUND(INDEX_LENGTH/(1024*1024*1024), 2), ' GB') AS '索引空間',
CONCAT(ROUND((DATA_LENGTH+INDEX_LENGTH)/(1024*1024*1024),2),' GB') AS'總空間'
FROM information_schema.TABLES WHERE TABLE_SCHEMA = [數據庫名] AND TABLE_NAME = [數據表名] ORDER BY TABLE_ROWS DESC;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM