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_SCHEMACOLUMNS表格或SHOW COLUMNS陳述式,以檢視有關此表格欄的額外資訊,包括資料類型和預設值。