隨著資料字典的引入,以下 INFORMATION_SCHEMA
表格被實作為資料字典表格的檢視表
KEYWORDS
現在對這些表格的查詢效率更高,因為它們是從資料字典表格取得資訊,而不是透過其他較慢的方式。特別是,對於每一個作為資料字典表格檢視表的 INFORMATION_SCHEMA
表格
伺服器不再需要為每個
INFORMATION_SCHEMA
表格的查詢建立暫存表格。當底層資料字典表格儲存先前透過目錄掃描(例如,列舉資料庫名稱或資料庫內的表格名稱)或檔案開啟操作(例如,從
.frm
檔案讀取資訊)取得的值時,現在這些值的INFORMATION_SCHEMA
查詢會改用表格查詢。(此外,即使是非檢視的INFORMATION_SCHEMA
表格,例如資料庫和表格名稱等值也是透過從資料字典查詢來擷取,而不需要目錄或檔案掃描。)底層資料字典表格上的索引允許最佳化工具建構有效率的查詢執行計畫,這對於先前使用每個查詢的暫存表格來處理
INFORMATION_SCHEMA
表格的實作而言並非如此。
先前的改進也適用於顯示對應於資料字典表格檢視表的 INFORMATION_SCHEMA
表格之資訊的 SHOW
陳述式。例如,SHOW DATABASES
顯示的資訊與 SCHEMATA
表格相同。
除了引入資料字典表格的檢視表之外,現在還快取 STATISTICS
和 TABLES
表格中包含的表格統計資料,以提升 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 節,「資料字典使用差異」。