文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  設定 InnoDB 緩衝池預取 (預讀)

17.8.3.4 設定 InnoDB 緩衝池預取 (預讀)

預讀請求是一種 I/O 請求,用於非同步預取緩衝池中的多個頁面,以預期即將需要這些頁面。這些請求會引入一個範圍中的所有頁面。InnoDB 使用兩種預讀演算法來提高 I/O 效能。

線性預讀是一種技術,它會根據緩衝池中依序存取的頁面來預測很快可能需要哪些頁面。您可以透過調整觸發非同步讀取請求所需的依序頁面存取次數,使用設定參數 innodb_read_ahead_threshold 來控制 InnoDB 何時執行預讀操作。在新增此參數之前,InnoDB 僅會在讀取目前範圍的最後一頁時,計算是否針對整個下一個範圍發出非同步預取請求。

設定參數 innodb_read_ahead_threshold 控制 InnoDB 在偵測依序頁面存取模式時的靈敏度。如果從範圍依序讀取的頁面數大於或等於 innodb_read_ahead_threshold,則 InnoDB 會啟動整個後續範圍的非同步預讀操作。innodb_read_ahead_threshold 可以設定為 0-64 的任何值。預設值為 56。值越高,存取模式檢查就越嚴格。例如,如果您將值設定為 48,則只有當目前範圍中有 48 個頁面已依序存取時,InnoDB 才會觸發線性預讀請求。如果該值為 8,則即使僅依序存取範圍中的 8 個頁面,InnoDB 也會觸發非同步預讀。您可以在 MySQL 設定檔中設定此參數的值,或使用 SET GLOBAL 陳述式動態變更它,這需要足夠的權限才能設定全域系統變數。請參閱 第 7.1.9.1 節「系統變數權限」

隨機預讀是一種技術,它會根據緩衝池中已有的頁面來預測很快可能需要哪些頁面,而無論這些頁面的讀取順序為何。如果緩衝池中找到來自同一個範圍的 13 個連續頁面,則 InnoDB 會非同步發出請求以預取該範圍的其餘頁面。若要啟用此功能,請將設定變數 innodb_random_read_ahead 設定為 ON

SHOW ENGINE INNODB STATUS 陳述式會顯示統計資訊,以協助您評估預讀演算法的有效性。統計資訊包括以下全域狀態變數的計數器資訊。

在微調 innodb_random_read_ahead 設定時,此資訊非常有用。

關於 I/O 效能的更多資訊,請參閱第 10.5.8 節「最佳化 InnoDB 磁碟 I/O」第 10.12.1 節「最佳化磁碟 I/O」