SHOW TABLE STATUS
[{FROM | IN} db_name]
[LIKE 'pattern' | WHERE expr]
SHOW TABLE STATUS
的運作方式類似 SHOW TABLES
,但提供了有關每個非 TEMPORARY
資料表的大量資訊。您也可以使用 mysqlshow --status db_name
命令取得此列表。如果存在 LIKE
子句,則表示要比對的資料表名稱。WHERE
子句可用於使用更通用的條件來選擇資料列,如 第 28.8 節「擴充 SHOW 敘述」中所述。
此敘述也顯示關於檢視表的資訊。
SHOW TABLE STATUS
輸出具有以下欄位:
Name (名稱)
資料表的名稱。
Engine (引擎)
資料表的儲存引擎。請參閱 第 17 章《InnoDB 儲存引擎》和 第 18 章《替代儲存引擎》。
對於分割資料表,
Engine
顯示所有分割區使用的儲存引擎名稱。Version (版本)
此欄位未使用。隨著 MySQL 8.0 中移除
.frm
檔案,此欄位現在會報告硬式編碼值10
,這是 MySQL 5.7 中使用的最後一個.frm
檔案版本。Row_format (資料列格式)
資料列儲存格式(
Fixed
、Dynamic
、Compressed
、Redundant
、Compact
)。對於MyISAM
資料表,Dynamic
對應於 myisamchk -dvv 報告的Packed
。Rows (資料列數)
資料列數。某些儲存引擎(例如
MyISAM
)會儲存確切的計數。對於其他儲存引擎(例如InnoDB
),此值是近似值,並且可能與實際值相差 40% 到 50%。在這種情況下,請使用SELECT COUNT(*)
來取得準確的計數。對於
INFORMATION_SCHEMA
資料表,Rows
值為NULL
。對於
InnoDB
資料表,資料列計數僅是 SQL 優化中使用的粗略估計值。(如果InnoDB
資料表已分割,情況也是如此。)Avg_row_length (平均資料列長度)
平均資料列長度。
Data_length (資料長度)
對於
MyISAM
,Data_length
是資料檔案的長度(以位元組為單位)。對於
InnoDB
,Data_length
是為叢集索引配置的近似空間量(以位元組為單位)。具體而言,它是叢集索引大小(以頁為單位)乘以InnoDB
頁面大小。請參閱本節結尾的附註,以取得有關其他儲存引擎的資訊。
Max_data_length (最大資料長度)
對於
MyISAM
,Max_data_length
是資料檔案的最大長度。這是資料表可以儲存的資料總位元組數,由使用的資料指標大小決定。未使用於
InnoDB
。請參閱本節結尾的附註,以取得有關其他儲存引擎的資訊。
Index_length (索引長度)
對於
MyISAM
,Index_length
是索引檔案的長度(以位元組為單位)。對於
InnoDB
,Index_length
是為非叢集索引配置的近似空間量(以位元組為單位)。具體而言,它是非叢集索引大小總和(以頁為單位)乘以InnoDB
頁面大小。請參閱本節結尾的附註,以取得有關其他儲存引擎的資訊。
Data_free (可用資料空間)
已配置但未使用的位元組數。
InnoDB
資料表會報告資料表所屬表格空間的可用空間。對於位於共用表格空間中的資料表,這是共用表格空間的可用空間。如果您使用多個表格空間,並且資料表有自己的表格空間,則可用空間僅適用於該資料表。可用空間是指完全可用的區塊中的位元組數,減去安全邊界。即使可用空間顯示為 0,只要不需要配置新的區塊,仍然可以插入資料列。對於 NDB Cluster,
Data_free
顯示在磁碟上為磁碟資料表或磁碟上的片段配置但未使用的空間。(記憶體資料資源使用情況由Data_length
欄位報告。)對於分割資料表,此值僅為估計值,可能不完全正確。在這種情況下,取得此資訊的更準確方法是查詢
INFORMATION_SCHEMA
PARTITIONS
資料表,如本範例所示SELECT SUM(DATA_FREE) FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'mytable';
如需更多資訊,請參閱 第 28.3.21 節「INFORMATION_SCHEMA PARTITIONS 資料表」。
Auto_increment (自動遞增)
下一個
AUTO_INCREMENT
值。Create_time (建立時間)
資料表建立時間。
Update_time (更新時間)
資料檔案上次更新的時間。對於某些儲存引擎,此值為
NULL
。例如,InnoDB
在其系統表格空間中儲存多個資料表,並且資料檔案時間戳記不適用。即使在每個資料表檔案模式下,每個InnoDB
資料表都位於單獨的.ibd
檔案中,變更緩衝可能會延遲寫入資料檔案,因此檔案修改時間與上次插入、更新或刪除的時間不同。對於MyISAM
,會使用資料檔案時間戳記;但是,在 Windows 上,更新不會更新時間戳記,因此該值不準確。Update_time
顯示對未分割的InnoDB
資料表執行上次UPDATE
、INSERT
或DELETE
的時間戳記值。對於 MVCC,時間戳記值反映COMMIT
時間,該時間被視為上次更新時間。當伺服器重新啟動或資料表從InnoDB
資料字典快取中移除時,不會持續儲存時間戳記。Check_time (檢查時間)
上次檢查資料表的時間。並非所有儲存引擎都會更新此時間,在這種情況下,該值始終為
NULL
。對於分割的
InnoDB
資料表,Check_time
始終為NULL
。Collation (排序規則)
資料表預設排序規則。輸出不會明確列出資料表預設字元集,但排序規則名稱以字元集名稱開頭。
Checksum (校驗和)
即時校驗和值(如果有的話)。
Create_options (建立選項)
與
CREATE TABLE
一起使用的額外選項。對於分割資料表,
Create_options
顯示partitioned
。如果資料表已加密,或者指定的加密方式與結構描述加密方式不同,則
Create_options
會顯示每個資料表檔案表格空間的ENCRYPTION
子句。對於在通用表格空間中建立的資料表,不會顯示加密子句。若要識別加密的每個資料表檔案和通用表格空間,請查詢INNODB_TABLESPACES
ENCRYPTION
欄位。當建立資料表時,如果停用了嚴格模式,如果指定的資料列格式不受支援,則會使用儲存引擎的預設資料列格式。資料表的實際資料列格式會報告在
Row_format
欄位中。Create_options
顯示在CREATE TABLE
敘述中指定的資料列格式。當變更資料表的儲存引擎時,不適用於新儲存引擎的資料表選項會保留在資料表定義中,以便在必要時可以使用先前定義的選項將資料表還原回原始儲存引擎。
Create_options
可能會顯示保留的選項。Comment (註解)
建立資料表時使用的註解(或有關 MySQL 無法存取資料表資訊的原因)。
附註
對於
InnoDB
資料表,SHOW TABLE STATUS
不會提供準確的統計資訊,除非是資料表保留的實體大小。資料列計數僅是 SQL 優化中使用的粗略估計值。對於
NDB
資料表,此陳述式的輸出會顯示Avg_row_length
和Data_length
欄位的適當值,但BLOB
欄位不列入計算。對於
NDB
資料表,Data_length
僅包含儲存在主記憶體中的資料;Max_data_length
和Data_free
欄位則適用於磁碟資料。對於 NDB Cluster 磁碟資料表,
Max_data_length
顯示為磁碟資料表或片段的磁碟部分所配置的空間。(記憶體內資料資源使用情況由Data_length
欄位報告。)對於
MEMORY
資料表,Data_length
、Max_data_length
和Index_length
值會近似於實際配置的記憶體量。配置演算法會大量保留記憶體,以減少配置操作的次數。對於檢視表,
SHOW TABLE STATUS
顯示的大多數欄位值為 0 或NULL
,除了Name
表示檢視表名稱,Create_time
表示建立時間,以及Comment
顯示VIEW
。
資料表資訊也可從 INFORMATION_SCHEMA
的 TABLES
資料表取得。請參閱 第 28.3.38 節,「INFORMATION_SCHEMA TABLES 資料表」。