MySQL 8.4 參考手冊  /  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 8.4 中的 INFORMATION_SCHEMA 表格與資料字典緊密相連,導致一些使用上的差異。請參閱 第 16.7 節,「資料字典使用差異」