可以用show table status 來查看表的信息,如:
show table status like '%waybill5%' \G
但使用information_schema.`TABLES`更方便查看。
查看數據庫級別的使用情況
SELECT TABLE_SCHEMA AS database_name, SUM(ROUND((DATA_LENGTH+INDEX_LENGTH+DATA_FREE)/1024.0/1024, 2)) AS Total_MB FROM information_schema.`TABLES` AS T1 WHERE T1.`TABLE_SCHEMA` NOT IN('performance_schema','mysql','information_schema') GROUP BY T1.`TABLE_SCHEMA` ORDER BY SUM(ROUND((DATA_LENGTH+INDEX_LENGTH+DATA_FREE)/1024.0/1024, 2)) DESC LIMIT 10;
查看非InnoDB引擎表
## 查看非InnoDB引擎表 SELECT TABLE_SCHEMA AS database_name, TABLE_NAME AS table_name, TABLE_ROWS AS table_rows, ENGINE AS table_engine, ROUND((DATA_LENGTH)/1024.0/1024, 2) AS Data_MB, ROUND((INDEX_LENGTH)/1024.0/1024, 2) AS Index_MB, ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2) AS Total_MB, ROUND((DATA_FREE)/1024.0/1024, 2) AS Free_MB FROM information_schema.`TABLES` AS T1 WHERE T1.`TABLE_SCHEMA` NOT IN('performance_schema','mysql','information_schema','sys') AND T1.`ENGINE` NOT IN ('innodb');
==============================================================
查看數據表較大的表
## 查看數據表量較大的表 SELECT TABLE_SCHEMA AS database_name, TABLE_NAME AS table_name, TABLE_ROWS AS table_rows, ENGINE AS table_engine, ROUND((DATA_LENGTH)/1024.0/1024, 2) AS Data_MB, ROUND((INDEX_LENGTH)/1024.0/1024, 2) AS Index_MB, ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2) AS Total_MB, ROUND((DATA_FREE)/1024.0/1024, 2) AS Free_MB FROM information_schema.`TABLES` AS T1 WHERE T1.`TABLE_SCHEMA` NOT IN('performance_schema','mysql','information_schema') ORDER BY T1.`TABLE_ROWS` DESC LIMIT 10; ## 查看數據表空間較大的表 SELECT TABLE_SCHEMA AS database_name, TABLE_NAME AS table_name, TABLE_ROWS AS table_rows, ENGINE AS table_engine, ROUND((DATA_LENGTH)/1024.0/1024, 2) AS Data_MB, ROUND((INDEX_LENGTH)/1024.0/1024, 2) AS Index_MB, ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2) AS Total_MB, ROUND((DATA_FREE)/1024.0/1024, 2) AS Free_MB FROM information_schema.`TABLES` AS T1 WHERE T1.`TABLE_SCHEMA` NOT IN('performance_schema','mysql','information_schema') ORDER BY ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2) DESC LIMIT 10;
==============================================================
查看碎片較多的表
## 查看碎片較多的表 SELECT TABLE_SCHEMA AS database_name, TABLE_NAME AS table_name, TABLE_ROWS AS table_rows, ENGINE AS table_engine, ROUND((DATA_LENGTH)/1024.0/1024, 2) AS Data_MB, ROUND((INDEX_LENGTH)/1024.0/1024, 2) AS Index_MB, ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2) AS Total_MB, ROUND((DATA_FREE)/1024.0/1024, 2) AS Free_MB, ROUND(ROUND((DATA_FREE)/1024.0/1024, 2) /ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2)*100,2)AS Free_Percent FROM information_schema.`TABLES` AS T1 WHERE T1.`TABLE_SCHEMA` NOT IN('performance_schema','mysql','information_schema') AND ROUND(ROUND((DATA_FREE)/1024.0/1024, 2) /ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2)*100,2) >10 AND ROUND((DATA_FREE)/1024.0/1024, 2)>100 ORDER BY ROUND(ROUND((DATA_FREE)/1024.0/1024, 2) /ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2)*100,2) DESC LIMIT 10;
==============================================================
查看表當前自增值
## 查看表自增值 SELECT T2.TABLE_SCHEMA, T2.TABLE_NAME, T1.COLUMN_NAME, T1.COLUMN_TYPE, T2.AUTO_INCREMENT FROM information_schema.columns AS T1 INNER JOIN information_schema.tables AS T2 ON T1.TABLE_SCHEMA=T2.TABLE_SCHEMA AND T1.TABLE_NAME=T2.TABLE_NAME WHERE T1.EXTRA='auto_increment' AND T1.DATA_TYPE NOT LIKE '%bigint%' ORDER BY T2.AUTO_INCREMENT DESC LIMIT 100;
==============================================================
查看無主鍵表
## 查看無主鍵表 SELECT TABLE_SCHEMA AS database_name, TABLE_NAME AS table_name, TABLE_ROWS AS table_rows, ENGINE AS table_engine, ROUND((DATA_LENGTH)/1024.0/1024, 2) AS Data_MB, ROUND((INDEX_LENGTH)/1024.0/1024, 2) AS Index_MB, ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2) AS Total_MB, ROUND((DATA_FREE)/1024.0/1024, 2) AS Free_MB FROM information_schema.tables WHERE (table_schema, table_name) NOT IN ( SELECT DISTINCT table_schema, table_name FROM information_schema.columns WHERE COLUMN_KEY = 'PRI' ) AND table_schema NOT IN ('sys', 'mysql', 'information_schema', 'performance_schema');