17.6.3.8 Оптимизация выделения пространства табличного пространства на Linux
Вы можете оптимизировать, как InnoDB выделяет пространство для файлов на основе таблиц и общих табличных пространств на Linux. По умолчанию, когда требуется дополнительное пространство, InnoDB выделяет страницы в табличном пространстве и физически записывает NULL в эти страницы. Это поведение может повлиять на производительность, если новые страницы выделяется часто. Вы можете отключить innodb_extend_and_initialize на системах Linux, чтобы избежать физической записи NULL в только что выделенные страницы табличного пространства. Когда innodb_extend_and_initialize отключено, пространство выделяется файлам табличного пространства с помощью posix_fallocate() вызовов, которые резервируют пространство без физической записи NULL.
Когда страницы выделяется с помощью posix_fallocate() вызовов, размер расширения по умолчанию небольшой, и часто выделяется только несколько страниц, что может привести к фрагментации и увеличению случайного ввода-вывода. Чтобы избежать этой проблемы, увеличьте размер расширения табличного пространства при включении posix_fallocate() вызовов. Размер расширения табличного пространства может быть увеличен до 4 ГБ с помощью параметра AUTOEXTEND_SIZE. Для получения дополнительной информации см. раздел 17.6.3.9 «Настройка параметра AUTOEXTEND_SIZE табличного пространства».
InnoDB записывает запись журнала отката перед выделением новой страницы табличного пространства. Если операция выделения страницы прерывается, она повторяется из записи журнала отката во время восстановления. (Операция выделения страницы, повторенная из записи журнала отката, физически записывает NULL в только что выделенную страницу.) Запись журнала отката записывается перед выделением страницы независимо от параметра innodb_extend_and_initialize.
На системах, отличных от Linux, и Windows, InnoDB выделяет новые страницы табличного пространства и физически записывает в них NULL, что является стандартным поведением. Попытка отключить innodb_extend_and_initialize на этих системах возвращает следующую ошибку:
Изменение innodb_extend_and_initialize не поддерживается на этой платформе. Возвращаемся к по умолчанию.
© 2025 Oracle
Licensed under the GPLv2 License.