您可以最佳化 InnoDB
在 Linux 上如何為單表表空間和通用表空間配置空間。預設情況下,當需要額外空間時,InnoDB
會將頁面配置給表空間,並將 NULL 實體寫入這些頁面。如果經常配置新頁面,此行為可能會影響效能。您可以在 Linux 系統上停用 innodb_extend_and_initialize
,以避免將 NULL 實體寫入新配置的表空間頁面。停用 innodb_extend_and_initialize
時,會使用 posix_fallocate()
呼叫將空間配置給表空間檔案,這會保留空間而無需實體寫入 NULL。
當使用 posix_fallocate()
呼叫配置頁面時,預設情況下擴充大小很小,並且通常一次只配置幾個頁面,這可能會導致碎片並增加隨機 I/O。為避免此問題,在啟用 posix_fallocate()
呼叫時,請增加表空間擴充大小。使用 AUTOEXTEND_SIZE
選項,表空間擴充大小最多可以增加 4GB。如需更多資訊,請參閱 第 17.6.3.9 節,「表空間 AUTOEXTEND_SIZE 設定」。
InnoDB
會在新配置表空間頁面之前寫入重做日誌記錄。如果頁面配置操作中斷,則會在復原期間從重做日誌記錄重新執行該操作。(從重做日誌記錄重新執行的頁面配置操作會將 NULL 實體寫入新配置的頁面。)無論 innodb_extend_and_initialize
設定為何,都會在配置頁面之前寫入重做日誌記錄。
在非 Linux 系統和 Windows 上,InnoDB
會將新頁面配置給表空間,並將 NULL 實體寫入這些頁面,這是預設行為。嘗試在這些系統上停用 innodb_extend_and_initialize
會傳回以下錯誤
在此平台上不支援變更 innodb_extend_and_initialize。回復為預設值。