Spec-Zone.ru › MySQL 8.4

17.8.3.7 Исключение или включение страниц буфера пула в файлы кода

Файл кода записывает состояние и образ памяти работающего процесса. Поскольку буферный пул находится в оперативной памяти, а образ памяти работающего процесса сохраняется в файле кода, системы с большими буферными пулами могут создавать большие файлы кода, когда процесс mysqld завершается.

Большие файлы кода могут быть проблематичными по многим причинам, включая время, необходимое для их записи, занимаемое ими дисковое пространство и трудности, связанные с передачей больших файлов.

Исключение страниц буферного пула также может быть желательно с точки зрения безопасности, если у вас есть опасения по поводу сохранения страниц базы данных в файлах кода, которые могут быть общими внутри или за пределами вашей организации в целях отладки.

Примечание

Доступ к данным, присутствующим на страницах буферного пула в момент завершения процесса mysqld, может быть полезен в некоторых сценариях отладки. Если сомневаетесь, следует ли включать или исключать страницы буферного пула, обратитесь в службу поддержки MySQL.

Параметр innodb_buffer_pool_in_core_file имеет значение только в том случае, если переменная core_file включена, и операционная система поддерживает расширение MADV_DONTDUMP для системного вызова madvise(), которое поддерживается в Linux 3.4 и более поздних версиях. Расширение MADV_DONTDUMP заставляет страницы в указанном диапазоне исключаться из дампов кода. Параметр innodb_buffer_pool_in_core_file по умолчанию отключен на системах, поддерживающих MADV_DONTDUMP, в противном случае он по умолчанию равен ON.

Примечание

До MySQL 8.4 innodb_buffer_pool_in_core_file был включен по умолчанию вместо выключения.

Для создания файлов кода со страницами буферного пула запустите сервер с параметрами --core-file и --innodb-buffer-pool-in-core-file=ON.

$> mysqld --core-file --innodb-buffer-pool-in-core-file=ON

Переменная core_file является только для чтения и отключена по умолчанию. Она включается, если при запуске указан параметр --core-file. Переменная innodb_buffer_pool_in_core_file динамическая. Ее можно указать при запуске или настроить во время выполнения с помощью оператора SET.

mysql> SET GLOBAL innodb_buffer_pool_in_core_file=OFF;

Если переменная innodb_buffer_pool_in_core_file отключена, но MADV_DONTDUMP не поддерживается операционной системой, или происходит ошибка madvise(), в журнал ошибок сервера MySQL записывается предупреждение, и переменная core_file отключается, чтобы предотвратить запись файлов кода, которые непреднамеренно включают страницы буферного пула. Если переменная только для чтения core_file становится отключенной, для повторного включения необходимо перезапустить сервер.

В следующей таблице показаны сценарии конфигурации и MADV_DONTDUMP поддержки, определяющие, генерируются ли файлы кода и включают ли они страницы буферного пула.

Таблица 17.4 Сценарии конфигурации файлов кода

Таблица 17.4 Сценарии конфигурации файлов кода
core_file переменная innodb_buffer_pool_in_core_file переменная Поддержка madvise() MADV_DONTDUMP Результат
OFF (по умолчанию) Не имеет значения для результата Не имеет значения для результата Файл кода не генерируется
ON ON (по умолчанию для систем без поддержки MADV_DONTDUMP) Не имеет значения для результата Файл кода генерируется со страницами буферного пула
ON OFF (по умолчанию для систем с поддержкой MADV_DONTDUMP) Да Файл кода генерируется без страниц буферного пула
ON OFF Нет Файл кода не генерируется, core_file отключен и в журнал ошибок сервера записывается предупреждение

Уменьшение размера файла кода, достигнутое отключением переменной innodb_buffer_pool_in_core_file, зависит от размера буферного пула, но также зависит от InnoDB размера страницы. Меньший размер страницы означает, что для одного и того же объема данных требуется больше страниц, а больше страниц означает больше метаданных страниц. В следующей таблице приведены примеры уменьшения размера, которые могут наблюдаться для буферного пула размером 1 ГБ с разными размерами страниц.

Таблица 17.5 Размер файла кода с включенными и исключенными страницами буферного пула

Таблица 17.5 Размер файла кода с включенными и исключенными страницами буферного пула
innodb_page_size Настройка Включение страниц буферного пула (innodb_buffer_pool_in_core_file=ON) Исключение страниц буферного пула (innodb_buffer_pool_in_core_file=OFF)
4 КБ 2,1 ГБ 0,9 ГБ
64 КБ 1,7 ГБ 0,7 ГБ

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/innodb-buffer-pool-in-core-file.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API