MySQL 9.0 參考手冊  /  MySQL 資料字典  /  INFORMATION_SCHEMA 和資料字典整合

16.5 INFORMATION_SCHEMA 和資料字典整合

隨著資料字典的引入,以下 INFORMATION_SCHEMA 表格被實作為資料字典表格的檢視

由於這些表格現在從資料字典表格中獲取資訊,而不是透過其他較慢的方式,因此對這些表格的查詢現在更有效率。特別是,對於每個作為資料字典表格檢視的 INFORMATION_SCHEMA 表格

  • 伺服器不再需要為每個 INFORMATION_SCHEMA 表格的查詢建立暫存表格。

  • 當底層資料字典表格儲存先前透過目錄掃描(例如,列舉資料庫名稱或資料庫內的表格名稱)或檔案開啟作業(例如,從 .frm 檔案讀取資訊)獲得的值時,這些值的 INFORMATION_SCHEMA 查詢現在改為使用表格查找。(此外,即使對於非檢視的 INFORMATION_SCHEMA 表格,諸如資料庫和表格名稱之類的值也是透過資料字典的查找來擷取,而不需要目錄或檔案掃描。)

  • 底層資料字典表格上的索引允許最佳化工具建構有效的查詢執行計畫,這在先前使用每個查詢的暫存表格處理 INFORMATION_SCHEMA 表格的實作中是不成立的。

前面的改進也適用於顯示與資料字典表格檢視的 INFORMATION_SCHEMA 表格相對應的資訊的 SHOW 陳述式。例如,SHOW DATABASES 顯示與 SCHEMATA 表格相同的資訊。

除了引入資料字典表格的檢視之外,現在還會快取包含在 STATISTICSTABLES 表格中的表格統計資料,以改善 INFORMATION_SCHEMA 的查詢效能。information_schema_stats_expiry 系統變數定義快取表格統計資料過期前的時間長度。預設值為 86400 秒(24 小時)。如果沒有快取的統計資料或統計資料已過期,則在查詢表格統計資料欄時,會從儲存引擎擷取統計資料。若要隨時更新指定表格的快取值,請使用 ANALYZE TABLE

可以將 information_schema_stats_expiry 設定為 0,讓 INFORMATION_SCHEMA 查詢直接從儲存引擎擷取最新的統計資料,這不如擷取快取的統計資料快。

如需更多資訊,請參閱第 10.2.3 節,「最佳化 INFORMATION_SCHEMA 查詢」

MySQL 9.0 中的 INFORMATION_SCHEMA 表格與資料字典緊密相連,導致一些使用差異。請參閱第 16.7 節,「資料字典使用差異」