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陳述式,來檢視此資料表的欄位額外資訊,包含資料類型和預設值。