INNODB_TABLESTATS
資料表提供關於 InnoDB
資料表低階狀態資訊的檢視表。MySQL 最佳化工具使用此資料來計算在查詢 InnoDB
資料表時要使用的索引。此資訊是從記憶體中的資料結構取得,而不是儲存在磁碟上的資料。沒有對應的內部 InnoDB
系統資料表。
如果 InnoDB
資料表自上次伺服器重新啟動後開啟,且未從資料表快取中過期,則會在該檢視表中顯示。具備持久性統計資料的資料表會一直在此檢視表中顯示。
只有在 DELETE
或 UPDATE
作業修改索引欄位時,才會更新資料表統計資料。修改非索引欄位的作業不會更新統計資料。
ANALYZE TABLE
會清除資料表統計資料,並將 STATS_INITIALIZED
欄設定為 Uninitialized
。下次存取資料表時,會再次收集統計資料。
如需相關使用資訊和範例,請參閱 第 17.15.3 節,「InnoDB INFORMATION_SCHEMA 綱要物件資料表」。
INNODB_TABLESTATS
資料表具有下列欄位
TABLE_ID
代表可取得統計資料的資料表識別碼;與
INNODB_TABLES.TABLE_ID
的值相同。NAME
資料表的名稱;與
INNODB_TABLES.NAME
的值相同。STATS_INITIALIZED
如果已收集統計資料,則值為
Initialized
,否則為Uninitialized
。NUM_ROWS
資料表中目前估計的列數。在每個 DML 作業之後更新。如果有未提交的事務正在插入或從資料表中刪除,則值可能不精確。
CLUST_INDEX_SIZE
磁碟上儲存叢集索引的頁面數,此索引會依主索引鍵順序保留
InnoDB
資料表資料。如果尚未收集資料表的任何統計資料,則此值可能為 Null。OTHER_INDEX_SIZE
磁碟上儲存資料表所有次要索引的頁面數。如果尚未收集資料表的任何統計資料,則此值可能為 Null。
MODIFIED_COUNTER
由 DML 作業修改的列數,例如
INSERT
、UPDATE
、DELETE
,以及來自外部索引鍵的串聯作業。每次重新計算資料表統計資料時,都會重設此欄位。AUTOINC
要針對任何自動遞增作業發行的下一個號碼。
AUTOINC
值變更的速度取決於已要求自動遞增號碼的次數,以及每個要求授與的號碼數。REF_COUNT
當此計數器達到零時,可以從資料表快取中移除資料表的中繼資料。
範例
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESTATS where TABLE_ID = 71\G
*************************** 1. row ***************************
TABLE_ID: 71
NAME: test/t1
STATS_INITIALIZED: Initialized
NUM_ROWS: 1
CLUST_INDEX_SIZE: 1
OTHER_INDEX_SIZE: 0
MODIFIED_COUNTER: 1
AUTOINC: 0
REF_COUNT: 1
注意事項
此資料表主要適用於專家級效能監控,或為 MySQL 開發與效能相關的擴充功能時。
您必須擁有
PROCESS
權限才能查詢此資料表。使用
INFORMATION_SCHEMA
的COLUMNS
資料表,或是使用SHOW COLUMNS
陳述式,來檢視此資料表的欄位額外資訊,包含資料類型和預設值。