17.8.3.7 Исключение или включение страниц буфера пула в файлы кода
Файл кода записывает состояние и образ памяти запущенного процесса. Поскольку буферный пул находится в оперативной памяти, и образ памяти запущенного процесса выгружается в файл кода, системы с большими буферными пулами могут создавать большие файлы кода при завершении процесса mysqld.
Большие файлы кода могут представлять проблемы по ряду причин, включая время, необходимое для их записи, занимаемое ими дисковое пространство и сложности, связанные с передачей больших файлов.
Исключение страниц буферного пула также может быть желательно с точки зрения безопасности, если у вас есть опасения по поводу выгрузки страниц базы данных в файлы кода, которые могут быть общими внутри или вне вашей организации в целях отладки.
Доступ к данным, присутствующим на страницах буферного пула в момент завершения процесса mysqld, может быть полезен в некоторых сценариях отладки. Если вы сомневаетесь, включать или исключать страницы буферного пула, обратитесь в поддержку MySQL.
Опция innodb_buffer_pool_in_core_file актуальна только в том случае, если переменная core_file включена, а операционная система поддерживает расширение MADV_DONTDUMP не-POSIX для системного вызова madvise(), которое поддерживается в Linux 3.4 и более поздних версиях. Расширение MADV_DONTDUMP приводит к исключению страниц в указанном диапазоне из дампов кода. Опция innodb_buffer_pool_in_core_file по умолчанию отключена в системах, поддерживающих MADV_DONTDUMP, в противном случае она имеет значение ON.
Чтобы сгенерировать файлы кода с страницами буферного пула, запустите сервер с опциями --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 Сценарии конфигурации файлов кода
Переменная core_file | Переменная innodb_buffer_pool_in_core_file | Поддержка madvise() MADV_DONTDUMP | Результат |
|---|---|---|---|
| ВЫКЛ. (по умолчанию) | Не имеет отношения к результату | Не имеет отношения к результату | Файл кода не генерируется |
| ВКЛ. | ВКЛ. (по умолчанию в системах без поддержки MADV_DONTDUMP) | Не имеет отношения к результату | Файл кода генерируется со страницами буферного пула |
| ВКЛ. | ВЫКЛ. (по умолчанию в системах с поддержкой MADV_DONTDUMP) | Да | Файл кода генерируется без страниц буферного пула |
| ВКЛ. | ВЫКЛ. | Нет | Файл кода не генерируется, core_file отключен, и в журнал ошибок сервера записывается предупреждение |
Уменьшение размера файла кода, достигнутое отключением переменной innodb_buffer_pool_in_core_file, зависит от размера буферного пула, но также зависит от размера страницы InnoDB. Меньший размер страницы означает, что для одного и того же объема данных требуется больше страниц, а больше страниц означает больше метаданных страниц. В следующей таблице приведены примеры уменьшения размера, которые вы можете наблюдать для буферного пула объемом 1 ГБ с различными размерами страниц.
Таблица 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.