17.14 Параметры запуска InnoDB и системные переменные
Системные переменные, принимающие значения «истина» или «ложь», могут быть включены при запуске сервера, указав их имя, или отключены с помощью префикса
--skip-. Например, для включения или отключения адаптивного индекса хешированияInnoDBможно использовать--innodb-adaptive-hash-indexили--skip-innodb-adaptive-hash-indexв командной строке, илиinnodb_adaptive_hash_indexилиskip_innodb_adaptive_hash_indexв файле опций.Некоторые описания переменных ссылаются на “включение” или “отключение” переменной. Эти переменные могут быть включены с помощью оператора
SET, установив их значения вONили1, или отключены, установив их значения вOFFили0. Булевы переменные могут быть установлены при запуске в значенияON,TRUE,OFFиFALSE(регистр не учитывается), а также1и0. См. Раздел 6.2.2.4, «Модификаторы параметров программы».Системные переменные, принимающие числовое значение, могут быть указаны как
--в командной строке или какvar_name=valueв файлах опций.var_name=valueМногие системные переменные могут быть изменены во время выполнения (см. Раздел 7.1.9.2, «Динамические системные переменные»).
Для получения информации о
GLOBALиSESSIONмодификаторах области действия переменной, обратитесь к документации оператораSET.Некоторые параметры управляют расположением и структурой данных
InnoDBфайлы. Раздел 17.8.1, «Конфигурация запуска InnoDB» описывает, как использовать эти параметры.Некоторые параметры, которые вы, возможно, не будете использовать сразу, помогают настроить характеристики производительности
InnoDBна основе возможностей компьютера и базы данных.Дополнительную информацию о задании параметров и системных переменных см. в Разделе 6.2.2, «Задавание параметров программы».
Таблица 17.23 Справочник по параметрам и переменным InnoDB
| Имя | Командная строка | Файл опций | Системная переменная | Статус переменной | Область действия переменной | Динамическая |
|---|
| innodb_trx_rseg_n_slots_debug | Да | Да | Да | Глобально | Да | |
|---|---|---|---|---|---|---|
| innodb_undo_directory | Да | Да | Да | Глобально | Нет | |
| innodb_undo_log_encrypt | Да | Да | Да | Глобально | Да | |
| innodb_undo_log_truncate | Да | Да | Да | Глобально | Да | |
| innodb_undo_tablespaces | Да | Да | Да | Глобально | Да | |
| Innodb_undo_tablespaces_active | Да | Глобально | Нет | |||
| Innodb_undo_tablespaces_explicit | Да | Глобально | Нет | |||
| Innodb_undo_tablespaces_implicit | Да | Глобально | Нет | |||
| Innodb_undo_tablespaces_total | Да | Глобально | Нет | |||
| innodb_use_fdatasync | Да | Да | Да | Глобально | Да | |
| innodb_use_native_aio | Да | Да | Да | Глобально | Нет | |
| innodb_validate_tablespace_paths | Да | Да | Да | Глобально | Нет | |
| innodb_version | Да | Глобально | Нет | |||
| innodb_write_io_threads | Да | Да | Да | Глобально | Нет | |
| unique_checks | Да | Оба | Да |
Параметры запуска InnoDB
-
Формат командной строки --innodb-dedicated-server[={OFF|ON}]Системная переменная innodb_dedicated_serverОбласть Глобально Динамическая Нет SET_VARПрименение подсказкиНет Тип Булево Значение по умолчанию OFFПри установке этого параметра запуском сервера с
--innodb-dedicated-serverили--innodb-dedicated-server=ON, как в командной строке, так и в файлеmy.cnf,InnoDBавтоматически вычисляет и устанавливает значения следующих переменных:ПримечаниеВ более ранних версиях MySQL 8.0,
innodb_log_file_sizeиinnodb_log_files_in_groupтакже устанавливались с помощью--innodb-dedicated-server.innodb_log_file_sizeиinnodb_log_files_in_groupс тех пор устарели и заменены наinnodb_redo_log_capacity. См. Раздел 17.6.5, «Журнал переигрывания».В MySQL 8.0,
innodb_flush_methodтакже автоматически устанавливался этим параметром, но в MySQL 8.4 это больше не так.Стоит использовать
--innodb-dedicated-serverтолько если экземпляр MySQL находится на выделенном сервере, где он может использовать все доступные системные ресурсы. Использование этого параметра не рекомендуется, если экземпляр MySQL разделяет системные ресурсы с другими приложениями.Настоятельно рекомендуется ознакомиться с Разделом 17.8.12, «Включение автоматической конфигурации InnoDB для выделенного сервера MySQL», перед использованием этого параметра в рабочей среде.
-
Формат командной строки --innodb-status-file[={OFF|ON}]Тип Булево Значение по умолчанию OFFПараметр запуска
--innodb-status-fileуправляет тем, создает лиInnoDBфайл с именемinnodb_status.в каталоге данных и записывает выводpidSHOW ENGINE INNODB STATUSв него каждые 15 секунд, приблизительно.Файл
innodb_status.по умолчанию не создается. Чтобы создать его, запустите mysqld с параметромpid--innodb-status-file.InnoDBудаляет файл при нормальном завершении работы сервера. При ненормальном завершении работы файл статуса может потребоваться удалить вручную.Параметр
--innodb-status-fileпредназначен для временного использования, поскольку генерация выводаSHOW ENGINE INNODB STATUSможет повлиять на производительность, а файлinnodb_status.со временем может стать достаточно большим.pidДополнительная информация находится в Разделе 17.17.2, «Включение мониторов InnoDB».
Системные переменные InnoDB
-
Командная строка --innodb-adaptive-flushing[={OFF|ON}]Системная переменная innodb_adaptive_flushingОбласть действия Глобальная Динамическая Да SET_VARПрименяется ли подсказкаНет Тип Булево Значение по умолчанию ONУказывает, нужно ли динамически корректировать скорость сброса в
InnoDBна основе рабочей нагрузки. Динамическая корректировка скорости сброса предназначена для предотвращения всплесков активности ввода-вывода. Этот параметр включён по умолчанию. Дополнительную информацию см. в разделе 17.8.3.5 «Настройка сброса буфера пула». Общие рекомендации по настройке ввода-вывода см. в разделе 10.5.8 «Оптимизация ввода-вывода InnoDB для диска». -
Командная строка --innodb-adaptive-flushing-lwm=#Системная переменная innodb_adaptive_flushing_lwmОбласть действия Глобальная Динамическая Да SET_VARПрименяется ли подсказкаНет Тип Целое Значение по умолчанию 10Минимальное значение 0Максимальное значение 70Определяет низкую отметку (low water mark), представляющую процент ёмкости, при котором включается динамическая настройка. Дополнительную информацию см. в разделе 17.8.3.5 «Настройка сброса буфера пула».
-
Командная строка --innodb-adaptive-hash-index[={OFF|ON}]Системная переменная innodb_adaptive_hash_indexОбласть действия Глобальная Динамическая Да SET_VARПрименяется ли подсказкаНет Тип Булево Значение по умолчанию OFFВключён или выключён адаптивный хэш-индекс
InnoDB. В зависимости от рабочей нагрузки может быть целесообразно динамически включать или выключать его для повышения производительности запросов. Так как адаптивный хэш-индекс может быть неэффективен для всех типов рабочей нагрузки, необходимо провести бенчмаркинг с ним как включённым, так и выключенным, используя реальные рабочие нагрузки. Подробности см. в разделе 17.5.3 «Адаптивный хэш-индекс».Этот параметр выключен по умолчанию. Можно изменить этот параметр с помощью оператора
SET GLOBAL, не перезапуская сервер. Изменение настроек во время работы требует привилегий, достаточных для изменения глобальных системных переменных. См. раздел 7.1.9.1 «Привилегии на системные переменные». Также можно использовать--innodb-adaptive-hash-indexпри запуске сервера.Выключение адаптивного хэш-индекса немедленно очищает хэш-таблицу. Обычные операции могут продолжаться во время очистки хэш-таблицы, а выполнение запросов, использующих хэш-таблицу, напрямую обращаются к индексам B-деревьев. При повторном включении адаптивного хэш-индекса хэш-таблица вновь заполняется в ходе нормальной работы.
До MySQL 8.4 этот параметр был включён по умолчанию.
-
innodb_adaptive_hash_index_partsКомандная строка --innodb-adaptive-hash-index-parts=#Системная переменная innodb_adaptive_hash_index_partsОбласть действия Глобальная Динамическая Нет SET_VARПрименяется ли подсказкаНет Тип Числовой Значение по умолчанию 8Минимальное значение 1Максимальное значение 512Разделяет систему поиска адаптивного хэш-индекса. Каждый индекс привязан к определённому разделу, и каждый раздел защищён отдельным захватом.
Система поиска адаптивного хэш-индекса разделена по умолчанию на 8 разделов. Максимальное значение — 512.
Дополнительную информацию см. в разделе 17.5.3 «Адаптивный хэш-индекс».
-
innodb_adaptive_max_sleep_delayКомандная строка --innodb-adaptive-max-sleep-delay=#Системная переменная innodb_adaptive_max_sleep_delayОбласть действия Глобальная Динамическая Да SET_VARПрименяется ли подсказкаНет Тип Целое Значение по умолчанию 150000Минимальное значение 0Максимальное значение 1000000Единица измерения микросекунды Позволяет
InnoDBавтоматически изменять значениеinnodb_thread_sleep_delayвверх или вниз в соответствии с текущей рабочей нагрузкой. Любое ненулевое значение включает автоматическую динамическую корректировку значенияinnodb_thread_sleep_delayдо максимального значения, указанного в параметреinnodb_adaptive_max_sleep_delay. Значение представляет количество микросекунд. Этот параметр может быть полезен в загруженных системах, с более чем 16InnoDBпотоками. (На практике он наиболее полезен для систем MySQL с сотнями или тысячами одновременных подключений.)Дополнительную информацию см. в разделе 17.8.4 «Настройка потоковой конкуренции для InnoDB».
-
Командная строка --innodb-autoextend-increment=#Системная переменная innodb_autoextend_incrementОбласть действия Глобальная Динамическая Да SET_VARПрименяется ли подсказкаНет Тип Целое Значение по умолчанию 64Минимальное значение 1Максимальное значение 1000Единица измерения мегабайты Размер приращения (в мегабайтах) для увеличения размера файла с автоматическим расширением
InnoDB, когда он заполняется. Значение по умолчанию — 64. Дополнительную информацию см. в Конфигурация файла данных системной табличной области и Изменение размера системной табличной области.Настройка
innodb_autoextend_incrementне влияет на файлы табличных областей или файлы. Эти файлы расширяются автоматически независимо от настройкиinnodb_autoextend_increment. Первоначальные расширения происходят небольшими порциями, после чего расширения происходят с приращениями по 4 МБ.
-
Формат командной строки --innodb-autoinc-lock-mode=#Системная переменная innodb_autoinc_lock_modeОбласть действия Глобальная Динамическая Нет Применяется подсказка SET_VARНет Тип Целое число Значение по умолчанию 2Допустимые значения 012Способ, используемый для генерации значений. Допустимые значения — 0, 1 или 2, соответственно, для традиционного, последовательного или чередующегося режима.
Значение по умолчанию — 2 (чередующееся), для совместимости с строчно-ориентированной репликацией.
Подробные характеристики каждого режима блокировки см. в Режимах блокировки InnoDB AUTO_INCREMENT.
-
innodb_background_drop_list_emptyФормат командной строки --innodb-background-drop-list-empty[={OFF|ON}]Системная переменная innodb_background_drop_list_emptyОбласть действия Глобальная Динамическая Да Применяется подсказка SET_VARНет Тип Булево Значение по умолчанию OFFВключение параметра отладки
innodb_background_drop_list_emptyпомогает избежать сбоев в тестовых сценариях, отложив создание таблицы до тех пор, пока список отложенных удалений в фоновом режиме не станет пустым. Например, если тестовый сценарий A помещает таблицуt1в список отложенных удалений в фоновом режиме, тестовый сценарий B ожидает, пока список отложенных удалений не станет пустым, перед созданием таблицыt1. -
Формат командной строки --innodb-buffer-pool-chunk-size=#Системная переменная innodb_buffer_pool_chunk_sizeОбласть действия Глобальная Динамическая Нет Применяется подсказка SET_VARНет Тип Целое число Значение по умолчанию 134217728Минимальное значение 1048576Максимальное значение innodb_buffer_pool_size / innodb_buffer_pool_instancesЕдиница измерения байты innodb_buffer_pool_chunk_sizeопределяет размер фрагмента для операций изменения размера кэша буфераInnoDB.Чтобы избежать копирования всех страниц буфера при операциях изменения размера, операция выполняется по “фрагментам”. По умолчанию
innodb_buffer_pool_chunk_sizeсоставляет 128 МБ (134217728 байт). Количество страниц в фрагменте зависит от значенияinnodb_page_size.innodb_buffer_pool_chunk_sizeможно увеличивать или уменьшать на единицы по 1 МБ (1048576 байт).При изменении значения
innodb_buffer_pool_chunk_sizeприменяются следующие условия:Если
innodb_buffer_pool_chunk_size*innodb_buffer_pool_instancesбольше текущего размера буфера при инициализации буфера,innodb_buffer_pool_chunk_sizeусекается доinnodb_buffer_pool_size/innodb_buffer_pool_instances.Размер буфера всегда должен быть равен или кратным
innodb_buffer_pool_chunk_size*innodb_buffer_pool_instances. Если вы изменяетеinnodb_buffer_pool_chunk_size,innodb_buffer_pool_sizeавтоматически округляется до значения, равного или кратногоinnodb_buffer_pool_chunk_size*innodb_buffer_pool_instances. Корректировка происходит при инициализации буфера.
ВажноСледует проявлять осторожность при изменении
innodb_buffer_pool_chunk_size, так как изменение этого значения может автоматически увеличить размер буфера. Перед изменениемinnodb_buffer_pool_chunk_size, рассчитайте его влияние наinnodb_buffer_pool_size, чтобы убедиться, что полученный размер буфера приемлем.Чтобы избежать потенциальных проблем с производительностью, количество фрагментов (
innodb_buffer_pool_size/innodb_buffer_pool_chunk_size) не должно превышать 1000.Переменная
innodb_buffer_pool_sizeявляется динамической, что позволяет изменять размер буфера во время работы сервера. Однако размер буфера должен быть равен или кратенinnodb_buffer_pool_chunk_size*innodb_buffer_pool_instances, и изменение любого из этих параметров требует перезапуска сервера.Более подробную информацию см. в разделе 17.8.3.1, «Настройка размера буфера InnoDB».
-
Формат командной строки --innodb-buffer-pool-debug[={OFF|ON}]Системная переменная innodb_buffer_pool_debugОбласть действия Глобальная Динамическая Нет Применяется подсказка SET_VARНет Тип Булево Значение по умолчанию OFFВключение этого параметра позволяет использовать несколько экземпляров буфера, когда размер буфера меньше 1 ГБ, игнорируя ограничение минимального размера буфера 1 ГБ, наложенное на
innodb_buffer_pool_instances. Параметрinnodb_buffer_pool_debugдоступен только при включенной поддержке отладки с помощью параметраWITH_DEBUGCMake. -
innodb_buffer_pool_dump_at_shutdownФормат командной строки --innodb-buffer-pool-dump-at-shutdown[={OFF|ON}]Системная переменная innodb_buffer_pool_dump_at_shutdownОбласть действия Глобальная Динамическая Да Применяется подсказка SET_VARНет Тип Булево Значение по умолчанию ONУказывает, нужно ли записывать страницы, кэшированные в
InnoDB, при завершении работы сервера MySQL, чтобы сократить процесс при следующем запуске. Обычно используется в сочетании сinnodb_buffer_pool_load_at_startup. Параметрinnodb_buffer_pool_dump_pctопределяет процент наиболее часто используемых страниц буфера, которые нужно сохранить.Оба параметра
innodb_buffer_pool_dump_at_shutdownиinnodb_buffer_pool_load_at_startupвключены по умолчанию.Дополнительную информацию см. в разделе 17.8.3.6, «Сохранение и восстановление состояния буфера».
-
Формат командной строки --innodb-buffer-pool-dump-now[={OFF|ON}]Системная переменная innodb_buffer_pool_dump_nowОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Булево Значение по умолчанию OFFНемедленно создаёт запись страниц, кэшированных в
InnoDB. Обычно используется в сочетании сinnodb_buffer_pool_load_now.Включение
innodb_buffer_pool_dump_nowзапускает действие записи, но не изменяет настройку переменной, которая всегда остаётсяOFFили0. Чтобы просмотреть состояние дампа буферного пула после запуска дампа, запросите переменнуюInnodb_buffer_pool_dump_status.Включение
innodb_buffer_pool_dump_nowзапускает действие дампа, но не изменяет настройку переменной, которая всегда остаётсяOFFили0. Чтобы просмотреть состояние дампа буферного пула после запуска дампа, запросите переменнуюInnodb_buffer_pool_dump_status.Для получения дополнительной информации см. Раздел 17.8.3.6, «Сохранение и восстановление состояния буферного пула».
-
Формат командной строки --innodb-buffer-pool-dump-pct=#Системная переменная innodb_buffer_pool_dump_pctОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 25Минимальное значение 1Максимальное значение 100Задает процент наиболее часто используемых страниц для каждого буферного пула для считывания и дампа. Диапазон от 1 до 100. Значение по умолчанию — 25. Например, если есть 4 буферных пула по 100 страниц каждый, и
innodb_buffer_pool_dump_pctустановлено в 25, то будут сдампированы 25 наиболее часто используемых страниц из каждого буферного пула. -
Формат командной строки --innodb-buffer-pool-filename=file_nameСистемная переменная innodb_buffer_pool_filenameОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Имя файла Значение по умолчанию ib_buffer_poolУказывает имя файла, содержащего список идентификаторов табличных пространств и идентификаторов страниц, созданных
innodb_buffer_pool_dump_at_shutdownилиinnodb_buffer_pool_dump_now. Идентификаторы табличных пространств и идентификаторы страниц сохраняются в следующем формате:space, page_id. По умолчанию файл называетсяib_buffer_poolи находится в каталоге данныхInnoDB. Нестандартное расположение должно быть указано относительно каталога данных.Имя файла можно указать во время выполнения, используя оператор
SET:SET GLOBAL innodb_buffer_pool_filename=
'file_name';Вы также можете указать имя файла при запуске, в строке запуска или конфигурационном файле MySQL. При указании имени файла при запуске файл должен существовать, иначе
InnoDBвозвращает ошибку запуска, указывающую на то, что такого файла или каталога нет.Для получения дополнительной информации см. Раздел 17.8.3.6, «Сохранение и восстановление состояния буферного пула».
-
innodb_buffer_pool_in_core_fileФормат командной строки --innodb-buffer-pool-in-core-file[={OFF|ON}]Системная переменная innodb_buffer_pool_in_core_fileОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Булево Значение по умолчанию OFFОтключение (по умолчанию) переменной
innodb_buffer_pool_in_core_fileуменьшает размер файлов ядра, исключая страницы буферного пулаInnoDB.Для использования этой переменной должна быть включена переменная
core_file, а для отключения этого параметра операционная система должна поддерживать расширениеMADV_DONTDUMPnon-POSIX кmadvise(), которое поддерживается в Linux 3.4 и более поздних версиях. Для получения дополнительной информации см. Раздел 17.8.3.7, «Исключение или включение страниц буферного пула из файлов ядра».По умолчанию отключено в системах, поддерживающих
MADV_DONTDUMP, что обычно относится только к Linux, а не к macOS или Windows.До MySQL 8.4 этот параметр был включен по умолчанию.
-
Формат командной строки --innodb-buffer-pool-instances=#Системная переменная innodb_buffer_pool_instancesОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию see descriptionМинимальное значение 1Максимальное значение 64Количество регионов, на которые разделен
InnoDB. Для систем с буферными пулами в многогигабайтном диапазоне разделение буферного пула на отдельные экземпляры может улучшить параллелизм, уменьшив конкуренцию, поскольку разные потоки читают и записывают кэшированные страницы. Каждая страница, хранящаяся или считываемая из буферного пула, случайным образом назначается одному из экземпляров буферного пула с использованием хэш-функции. Каждый буферный пул управляет своими собственными свободными списками, , , и всеми другими структурами данных, связанными с буферным пулом, и защищается своим собственным буферным пулом.Общий размер буферного пула делится между всеми буферными пулами. Для наилучшей эффективности укажите комбинацию
innodb_buffer_pool_instancesиinnodb_buffer_pool_sizeтак, чтобы каждый экземпляр буферного пула был не менее 1 ГБ.Если
innodb_buffer_pool_size<= 1 GiB, то значениеinnodb_buffer_pool_instancesпо умолчанию равно 1.Если
innodb_buffer_pool_size> 1 GiB, то значениеinnodb_buffer_pool_instancesпо умолчанию — минимальное значение из двух следующих вычисленных подсказок в диапазоне 1-64:Подсказка буферного пула: вычисляется как 1/2 от (
innodb_buffer_pool_size/innodb_buffer_pool_chunk_size)Подсказка процессора: вычисляется как 1/4 от доступных логических процессоров
Для получения дополнительной информации см. Раздел 17.8.3.1, «Настройка размера буферного пула InnoDB».
-
Формат командной строки --innodb-buffer-pool-load-abort[={OFF|ON}]Системная переменная innodb_buffer_pool_load_abortОбласть действия Глобальная Динамическая Да SET_VARПрименимоНет Тип Булево Значение по умолчанию OFFПрерывает процесс восстановления
InnoDBсодержимого, инициированногоinnodb_buffer_pool_load_at_startupилиinnodb_buffer_pool_load_now.Включение
innodb_buffer_pool_load_abortзапускает действие прерывания, но не изменяет настройку переменной, которая всегда остается значениемOFFили0. Для просмотра состояния загрузки буфера пула после запуска действия прерывания, запросите переменнуюInnodb_buffer_pool_load_status.Дополнительную информацию см. в Разделе 17.8.3.6, «Сохранение и восстановление состояния буфера пула».
-
innodb_buffer_pool_load_at_startupФормат командной строки --innodb-buffer-pool-load-at-startup[={OFF|ON}]Системная переменная innodb_buffer_pool_load_at_startupОбласть действия Глобальная Динамическая Нет SET_VARПрименимоНет Тип Булево Значение по умолчанию ONУказывает, что при запуске сервера MySQL,
InnoDBавтоматически загружается, загружая те же страницы, которые он содержал ранее. Обычно используется в сочетании сinnodb_buffer_pool_dump_at_shutdown.И
innodb_buffer_pool_dump_at_shutdown, иinnodb_buffer_pool_load_at_startupвключены по умолчанию.Дополнительную информацию см. в Разделе 17.8.3.6, «Сохранение и восстановление состояния буфера пула».
-
Формат командной строки --innodb-buffer-pool-load-now[={OFF|ON}]Системная переменная innodb_buffer_pool_load_nowОбласть действия Глобальная Динамическая Да SET_VARПрименимоНет Тип Булево Значение по умолчанию OFFНемедленно загружает
InnoDBданные, загружая страницы данных без ожидания перезагрузки сервера. Может быть полезно для возвращения к известному состоянию кэша памяти во время бенчмаркинга или для подготовки сервера MySQL к возобновлению обычной рабочей нагрузки после выполнения запросов для отчетов или обслуживания.Включение
innodb_buffer_pool_load_nowзапускает действие загрузки, но не изменяет настройку переменной, которая всегда остается значениемOFFили0. Для просмотра прогресса загрузки буфера пула после запуска загрузки, запросите переменнуюInnodb_buffer_pool_load_status.Дополнительную информацию см. в Разделе 17.8.3.6, «Сохранение и восстановление состояния буфера пула».
-
Формат командной строки --innodb-buffer-pool-size=#Системная переменная innodb_buffer_pool_sizeОбласть действия Глобальная Динамическая Да SET_VARПрименимоНет Тип Целое Значение по умолчанию 134217728Минимальное значение 5242880Максимальное значение (64-разрядные платформы) 2**64-1Максимальное значение (32-разрядные платформы) 2**32-1Единица измерения байты Размер в байтах буфера пула, области памяти, в которой
InnoDBкэширует табличные и индексные данные. Значение по умолчанию составляет 134217728 байт (128 МБ). Максимальное значение зависит от архитектуры процессора; максимальное значение составляет 4294967295 (232-1) на 32-разрядных системах и 18446744073709551615 (264-1) на 64-разрядных системах. На 32-разрядных системах архитектура процессора и операционная система могут накладывать более низкое практическое максимальное значение, чем указанное максимальное значение. Когда размер буфера пула превышает 1 ГБ, установкаinnodb_buffer_pool_instancesна значение, большее 1, может повысить масштабируемость на загруженном сервере.Более крупный буфер пула требует меньшего ввода-вывода с диска для доступа к тем же данным таблицы более одного раза. На выделенном сервере базы данных вы можете установить размер буфера пула на 80% от размера физической памяти машины. Имейте в виду следующие потенциальные проблемы при конфигурации размера буфера пула и будьте готовы уменьшить размер буфера пула при необходимости.
Конкуренция за физическую память может привести к подкачке в операционной системе.
InnoDBрезервирует дополнительную память для буферов и управляющих структур, таким образом, общий выделенный объем примерно на 10% больше, чем указанный размер буфера пула.Пространство адресов для буфера пула должно быть непрерывным, что может быть проблемой на системах Windows с DLL, которые загружаются по определенным адресам.
Время инициализации буфера пула примерно пропорционально его размеру. На экземплярах с большими буферами пула время инициализации может быть значительным. Для сокращения периода инициализации вы можете сохранить состояние буфера пула при выключении сервера и восстановить его при запуске сервера. См. Раздел 17.8.3.6, «Сохранение и восстановление состояния буфера пула».
При увеличении или уменьшении размера буфера пула операция выполняется частями. Размер части определяется переменной
innodb_buffer_pool_chunk_size, которая имеет значение по умолчанию 128 МБ.Размер буфера пула всегда должен быть равен или кратным
innodb_buffer_pool_chunk_size*innodb_buffer_pool_instances. Если вы измените размер буфера пула на значение, которое не равно или не кратноinnodb_buffer_pool_chunk_size*innodb_buffer_pool_instances, размер буфера пула автоматически корректируется до значения, которое равно или кратноinnodb_buffer_pool_chunk_size*innodb_buffer_pool_instances.innodb_buffer_pool_sizeможет быть установлено динамически, что позволяет изменять размер буфера пула без перезапуска сервера. Переменная состоянияInnodb_buffer_pool_resize_statusотображает состояние операций динамического изменения размера буфера пула. Дополнительную информацию см. в Разделе 17.8.3.1, «Настройка размера буфера пула InnoDB».Если сервер запускается с
--innodb-dedicated-server, значениеinnodb_buffer_pool_sizeустанавливается автоматически, если оно не определено явно. Дополнительную информацию см. в Разделе 17.8.12, «Включение автоматической конфигурации InnoDB для выделенного сервера MySQL».
-
Формат командной строки --innodb-change-buffer-max-size=#Системная переменная innodb_change_buffer_max_sizeОбласть действия Глобальная Динамическая Да SET_VARПрименимо ли подсказкаНет Тип Целое число Значение по умолчанию 25Минимальное значение 0Максимальное значение 50Максимальный размер для
InnoDB, в процентах от общего размера . Можно увеличить это значение для сервера MySQL с интенсивной деятельностью по вставке, обновлению и удалению или уменьшить для сервера MySQL с неизменными данными, используемыми для отчетов. Дополнительную информацию см. в разделе 17.5.2, «Буфер изменений». Советы по общей настройке ввода-вывода см. в разделе 10.5.8, «Оптимизация ввода-вывода InnoDB». -
Формат командной строки --innodb-change-buffering=valueСистемная переменная innodb_change_bufferingОбласть действия Глобальная Динамическая Да SET_VARПрименимо ли подсказкаНет Тип Перечисление Значение по умолчанию noneДопустимые значения noneinsertsdeleteschangespurgesallБудет ли
InnoDBвыполнять , оптимизацию, откладывающую операции записи во вторичные индексы, чтобы операции ввода-вывода можно было выполнить последовательно. Допустимые значения описаны в следующей таблице. Значения также можно указать численно.Таблица 17.24 Допустимые значения для innodb_change_buffering
Таблица 17.24 Допустимые значения для innodb_change_buffering Значение Числовое значение Описание none0По умолчанию. Не буферизовать никакие операции. inserts1Буферизовать операции вставки. deletes2Буферизовать операции помечания удаления; строго говоря, записи, помечающие записи индекса для последующего удаления во время операции очистки. changes3Буферизовать операции вставки и помечания удаления. purges4Буферизовать физические операции удаления, которые происходят в фоновом режиме. all5Буферизовать операции вставки, помечания удаления и очистки. До MySQL 8.4 значение по умолчанию было
all.Дополнительную информацию см. в разделе 17.5.2, «Буфер изменений». Советы по общей настройке ввода-вывода см. в разделе 10.5.8, «Оптимизация ввода-вывода InnoDB».
-
Формат командной строки --innodb-change-buffering-debug=#Системная переменная innodb_change_buffering_debugОбласть действия Глобальная Динамическая Да SET_VARПрименимо ли подсказкаНет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 2Устанавливает флаг отладки для
InnoDBбуферизации изменений. Значение 1 принудительно вызывает все изменения в буфере изменений. Значение 2 вызывает неожиданный выход при слиянии. Значение по умолчанию 0 указывает, что флаг отладки буферизации изменений не установлен. Эта опция доступна только при включенной поддержке отладки с помощью опцииWITH_DEBUGCMake. -
Формат командной строки --innodb-checkpoint-disabled[={OFF|ON}]Системная переменная innodb_checkpoint_disabledОбласть действия Глобальная Динамическая Да SET_VARПрименимо ли подсказкаНет Тип Булево Значение по умолчанию OFFЭто опция отладки, предназначенная только для экспертной отладки. Она отключает контрольные точки, чтобы преднамеренный выход сервера всегда инициировал
InnoDBвосстановление. Ее следует включать только на короткий промежуток времени, обычно перед выполнением операций DML, которые записывают записи журнала повторения, что потребует восстановления после выхода сервера. Эта опция доступна только при включенной поддержке отладки с помощью опцииWITH_DEBUGCMake.
-
Формат командной строки --innodb-checksum-algorithm=valueСистемная переменная innodb_checksum_algorithmОбласть действия Глобальная Динамическая Да SET_VARПрименяется ли подсказкаНет Тип Перечисление Значение по умолчанию crc32Допустимые значения crc32strict_crc32innodbstrict_innodbnonestrict_noneОпределяет способ генерации и проверки контрольных сумм, хранящихся в блоках диска
InnoDB. Значение по умолчанию дляinnodb_checksum_algorithmравноcrc32.Значение
innodbсовместимо со старыми версиями MySQL. Значениеcrc32использует алгоритм, который быстрее вычисляет контрольную сумму для каждого изменённого блока и проверяет контрольные суммы при каждом чтении с диска. Он сканирует блоки по 64 бита, что быстрее, чем алгоритм контрольной суммыinnodb, который сканирует блоки по 8 бит. Значениеnoneзаписывает постоянное значение в поле контрольной суммы вместо вычисления значения на основе данных блока. Блоки в табличном пространстве могут использовать смесь старых, новых и без контрольных сумм, постепенно обновляясь по мере изменения данных; после того, как блоки в табличном пространстве будут изменены на использование алгоритмаcrc32, связанные таблицы не смогут быть прочитаны более ранними версиями MySQL.Строгий вариант алгоритма контрольной суммы сообщает об ошибке, если встречается валидное, но не соответствующее контрольной сумме значение в табличном пространстве. Рекомендуется использовать только строгие настройки в новом экземпляре для первоначального создания табличных пространств. Строгие настройки немного быстрее, потому что им не нужно вычислять все значения контрольных сумм при чтении с диска.
Следующая таблица показывает разницу между значениями опций
none,innodbиcrc32и их строгими аналогами.none,innodbиcrc32записывают указанный тип значения контрольной суммы в каждый блок данных, но для совместимости принимают другие значения контрольных сумм при проверке блока во время операции чтения. Строгие настройки также принимают валидные значения контрольных сумм, но выдают сообщение об ошибке, когда встречается валидное, но не соответствующее контрольной сумме значение. Использование строгого варианта может ускорить проверку, если все файлы данныхInnoDBв экземпляре были созданы при одинаковом значенииinnodb_checksum_algorithm.Таблица 17.25 Допустимые значения innodb_checksum_algorithm
Таблица 17.25 Допустимые значения innodb_checksum_algorithm Значение Вычисленная контрольная сумма (при записи) Допустимые контрольные суммы (при чтении) none Постоянное число. Любые контрольные суммы, сгенерированные none,innodbилиcrc32.innodb Контрольная сумма, вычисленная в программном обеспечении, с использованием оригинального алгоритма из InnoDB.Любые контрольные суммы, сгенерированные none,innodbилиcrc32.crc32 Контрольная сумма, вычисленная с помощью алгоритма crc32, возможно с помощью аппаратной поддержки.Любые контрольные суммы, сгенерированные none,innodbилиcrc32.strict_none Постоянное число Любые контрольные суммы, сгенерированные none,innodbилиcrc32.InnoDBвыводит сообщение об ошибке, если встречается валидная, но не соответствующая контрольная сумма.strict_innodb Контрольная сумма, вычисленная в программном обеспечении, с использованием оригинального алгоритма из InnoDB.Любые контрольные суммы, сгенерированные none,innodbилиcrc32.InnoDBвыводит сообщение об ошибке, если встречается валидная, но не соответствующая контрольная сумма.strict_crc32 Контрольная сумма, вычисленная с помощью алгоритма crc32, возможно с помощью аппаратной поддержки.Любые контрольные суммы, сгенерированные none,innodbилиcrc32.InnoDBвыводит сообщение об ошибке, если встречается валидная, но не соответствующая контрольная сумма.
-
Формат командной строки --innodb-cmp-per-index-enabled[={OFF|ON}]Системная переменная innodb_cmp_per_index_enabledОбласть действия Глобальная Динамическая Да SET_VARПрименяется ли подсказкаНет Тип Булево Значение по умолчанию OFFВключает статистику сжатия по индексу в таблице Информационной схемы
INNODB_CMP_PER_INDEX. Поскольку сбор этой статистики может быть затратным, включайте эту опцию только в средах разработки, тестирования или реплик во время настройки производительности, связанной с таблицамиInnoDB.Дополнительную информацию см. в Разделе 28.4.8, «Таблицы INFORMATION_SCHEMA INNODB_CMP_PER_INDEX и INNODB_CMP_PER_INDEX_RESET» и Разделе 17.9.1.4, «Мониторинг сжатия таблиц InnoDB во время выполнения».
-
Формат командной строки --innodb-commit-concurrency=#Системная переменная innodb_commit_concurrencyОбласть действия Глобальная Динамическая Да SET_VARПрименяется ли подсказкаНет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 1000Количество может выполняться одновременно. Значение 0 (по умолчанию) разрешает любое количество для одновременного выполнения.
Значение
innodb_commit_concurrencyне может быть изменено во время выполнения с нуля на ненулевое значение или наоборот. Значение может быть изменено с одного ненулевого значения на другое. -
Формат командной строки --innodb-compress-debug=valueСистемная переменная innodb_compress_debugОбласть действия Глобальная Динамическая Да SET_VARПрименяется ли подсказкаНет Тип Перечисление Значение по умолчанию noneДопустимые значения nonezliblz4lz4hcСжимает все таблицы с использованием указанного алгоритма сжатия, без необходимости определения атрибута
COMPRESSIONдля каждой таблицы. Эта опция доступна только в том случае, если поддержка отладки скомпилирована с помощью опцииWITH_DEBUGCMake.Для получения дополнительной информации см. Раздел 17.9.2, «Сжатие страниц InnoDB».
-
innodb_compression_failure_threshold_pctФормат командной строки --innodb-compression-failure-threshold-pct=#Системная переменная innodb_compression_failure_threshold_pctОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 5Минимальное значение 0Максимальное значение 100Определяет пороговое значение уровня сбоев сжатия для таблицы в процентах, при достижении которого MySQL начинает добавлять заполнение внутри страниц, чтобы избежать дорогостоящих операций. Когда этот порог превышен, MySQL начинает оставлять дополнительное свободное пространство в каждой новой сжатой странице, динамически регулируя объем свободного пространства до процента размера страницы, указанного в
innodb_compression_pad_pct_max. Значение ноль отключает механизм, который отслеживает эффективность сжатия и динамически регулирует объем заполнения.Для получения дополнительной информации см. Раздел 17.9.1.6, «Сжатие для OLTP-нагрузок».
-
Формат командной строки --innodb-compression-level=#Системная переменная innodb_compression_levelОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 6Минимальное значение 0Максимальное значение 9Указывает уровень сжатия zlib для использования в таблицах и индексах
InnoDB. Более высокое значение позволяет разместить больше данных на устройстве хранения, за счет больших накладных расходов ЦП во время сжатия. Более низкое значение позволяет уменьшить накладные расходы ЦП, когда пространство хранения не является критичным, или вы ожидаете, что данные не очень хорошо сжимаются.Для получения дополнительной информации см. Раздел 17.9.1.6, «Сжатие для OLTP-нагрузок».
-
innodb_compression_pad_pct_maxФормат командной строки --innodb-compression-pad-pct-max=#Системная переменная innodb_compression_pad_pct_maxОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 50Минимальное значение 0Максимальное значение 75Указывает максимальный процент, который может быть зарезервирован как свободное пространство в каждой сжатой странице, оставляя место для реорганизации данных и журнала изменений в странице, когда таблица или индекс обновляются, и данные могут быть пережаты. Применяется только тогда, когда
innodb_compression_failure_threshold_pctустановлено в ненулевое значение, и уровень сбоев превышает пороговое значение.Для получения дополнительной информации см. Раздел 17.9.1.6, «Сжатие для OLTP-нагрузок».
-
Формат командной строки --innodb-concurrency-tickets=#Системная переменная innodb_concurrency_ticketsОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 5000Минимальное значение 1Максимальное значение 4294967295Определяет количество потоков, которые могут одновременно войти в
InnoDB. Поток помещается в очередь, когда он пытается войти вInnoDB, если количество потоков уже достигло предела параллелизма. Когда потоку разрешено войти вInnoDB, ему выдается количество “билетов”, равное значениюinnodb_concurrency_tickets, и поток может свободно входить и выходить изInnoDB, пока не израсходует свои билеты. После этого поток снова становится объектом проверки параллелизма (и возможного помещения в очередь) в следующий раз, когда он попытается войти вInnoDB. Значение по умолчанию равно 5000.При небольшом значении
innodb_concurrency_ticketsнебольшие транзакции, которым нужно обработать только несколько строк, конкурируют достаточно честно с большими транзакциями, которые обрабатывают много строк. Недостатком небольшого значенияinnodb_concurrency_ticketsявляется то, что большие транзакции должны многократно проходить через очередь, прежде чем они смогут завершиться, что увеличивает время, необходимое для выполнения их задачи.При большом значении
innodb_concurrency_ticketsбольшие транзакции тратят меньше времени на ожидание позиции в конце очереди (контролируетсяinnodb_thread_concurrency) и больше времени на извлечение строк. Большие транзакции также требуют меньше проходов через очередь для завершения своей задачи. Недостатком большого значенияinnodb_concurrency_ticketsявляется то, что слишком много больших транзакций, работающих одновременно, могут «голодать» меньшие транзакции, заставляя их ждать дольше перед выполнением.При ненулевом значении
innodb_thread_concurrencyможет потребоваться настроить значениеinnodb_concurrency_ticketsвверх или вниз, чтобы найти оптимальный баланс между большими и меньшими транзакциями. ОтчетSHOW ENGINE INNODB STATUSпоказывает количество оставшихся билетов для выполняемой транзакции в ее текущем проходе через очередь. Эти данные также можно получить из столбцаTRX_CONCURRENCY_TICKETSтаблицы Information SchemaINNODB_TRX.Для получения дополнительной информации см. Раздел 17.8.4, «Настройка параллелизма потоков для InnoDB».
-
Формат командной строки --innodb-data-file-path=file_nameСистемная переменная innodb_data_file_pathОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Строка Значение по умолчанию ibdata1:12M:autoextendОпределяет имя, размер и атрибуты файлов данных системного табличного пространства
InnoDB. Если вы не укажете значение дляinnodb_data_file_path, по умолчанию будет создан один автоматически расширяемый файл данных, немного больше 12 МБ, с именемibdata1.Полный синтаксис для спецификации файла данных включает имя файла, размер файла, атрибут
autoextendи атрибутmax:file_name:file_size[:autoextend[:max:max_file_size]]Размеры файлов указываются в килобайтах, мегабайтах или гигабайтах путем добавления
K,MилиGк значению размера. При указании размера файла данных в килобайтах делайте это кратно 1024. В противном случае значения КБ округляются до ближайшей границы мегабайта (МБ). Сумма размеров файлов должна быть как минимум немного больше 12 МБ.Для получения дополнительной информации о конфигурации см. Конфигурация файлов данных системного табличного пространства. Инструкции по изменению размера см. в разделе Изменение размера системного табличного пространства.
-
Формат командной строки --innodb-data-home-dir=dir_nameСистемная переменная innodb_data_home_dirОбласть Глобальная Динамическая Нет SET_VARПодсказка применимаНет Тип Имя каталога Общая часть пути к каталогу для файлов данных
InnoDB. Значение по умолчанию — каталог MySQLdata. Настройка конкатенируется с настройкойinnodb_data_file_path, если та не определена с абсолютным путем.Требуется конечный слэш при указании значения для
innodb_data_home_dir. Например:[mysqld] innodb_data_home_dir = /path/to/myibdata/
Данная настройка не влияет на расположение табличных пространств.
Для получения дополнительной информации см. Раздел 17.8.1, «Настройка запуска InnoDB».
-
Формат командной строки --innodb-ddl-buffer-size=#Системная переменная innodb_ddl_buffer_sizeОбласть Сеанс Динамическая Да SET_VARПодсказка применимаНет Тип Целое число Значение по умолчанию 1048576Минимальное значение 65536Максимальное значение 4294967295Единица измерения байты Определяет максимальный размер буфера для операций DDL. Значение по умолчанию — 1048576 байт (приблизительно 1 МБ). Применяется к операциям online DDL, которые создают или перестраивают вторичные индексы. См. Раздел 17.12.4, «Управление памятью online DDL». Максимальный размер буфера на поток DDL равен максимальному размеру буфера, деленному на количество потоков DDL (
innodb_ddl_buffer_size/innodb_ddl_threads). -
innodb_ddl_log_crash_reset_debugФормат командной строки --innodb-ddl-log-crash-reset-debug[={OFF|ON}]Системная переменная innodb_ddl_log_crash_reset_debugОбласть Глобальная Динамическая Да SET_VARПодсказка применимаНет Тип Булево Значение по умолчанию OFFВключите этот параметр отладки, чтобы сбросить счётчики инжекции аварийного состояния журнала DDL до 1. Этот параметр доступен только при компиляции поддержки отладки с помощью параметра
WITH_DEBUGCMake. -
Формат командной строки --innodb-ddl-threads=#Системная переменная innodb_ddl_threadsОбласть Сеанс Динамическая Да SET_VARПодсказка применимаНет Тип Целое число Значение по умолчанию 4Минимальное значение 1Максимальное значение 64Определяет максимальное количество параллельных потоков для фаз сортировки и построения при создании индексов. Применяется к операциям online DDL, которые создают или перестраивают вторичные индексы. Для получения дополнительной информации см. Раздел 17.12.5, «Настройка параллельных потоков для онлайн-операций DDL» и Раздел 17.12.4, «Управление памятью online DDL».
-
Формат командной строки --innodb-deadlock-detect[={OFF|ON}]Системная переменная innodb_deadlock_detectОбласть Глобальная Динамическая Да SET_VARПодсказка применимаНет Тип Булево Значение по умолчанию ONЭтот параметр используется для отключения обнаружения тупиков. В системах с высокой конкурентностью обнаружение тупиков может привести к замедлению, когда множество потоков ожидают одного и того же блокирования. В некоторых случаях может быть эффективнее отключить обнаружение тупиков и полагаться на настройку
innodb_lock_wait_timeoutдля отката транзакции при возникновении тупика.Для получения дополнительной информации см. Раздел 17.7.5.2, «Обнаружение тупиков».
-
Формат командной строки --innodb-default-row-format=valueСистемная переменная innodb_default_row_formatОбласть Глобальная Динамическая Да SET_VARПодсказка применимаНет Тип Перечисление Значение по умолчанию DYNAMICДопустимые значения REDUNDANTCOMPACTDYNAMICПараметр
innodb_default_row_formatопределяет формат строк по умолчанию для таблицInnoDBи временных таблиц, созданных пользователем. Значение по умолчанию —DYNAMIC. Другие допустимые значения —COMPACTиREDUNDANT. Формат строкCOMPRESSED, который не поддерживается для использования в , не может быть определён как стандартный.Новые таблицы используют формат строк, определенный параметром
innodb_default_row_format, если явно не указан другой параметр или используется параметрROW_FORMAT.При отсутствии явного указания параметра
ROW_FORMATили при использовании параметраROW_FORMAT=DEFAULTлюбая операция, перестраивающая таблицу, также молчаливо изменяет формат строк таблицы на формат, определенный параметромinnodb_default_row_format. Для получения дополнительной информации, см. Определение формата строк таблицы.Внутренние временные таблицы
InnoDB, созданные сервером для обработки запросов, используют формат строкDYNAMIC, независимо от настройкиinnodb_default_row_format.
-
Формат командной строки --innodb-directories=dir_nameСистемная переменная innodb_directoriesОбласть действия Глобальная Динамическая Нет SET_VARПрименяется подсказкаНет Тип Имя каталога Значение по умолчанию NULLОпределяет каталоги, которые нужно просканировать при запуске для поиска файлов табличных пространств. Этот параметр используется при перемещении или восстановлении файлов табличных пространств в новое расположение, когда сервер выключен. Он также используется для указания каталогов файлов табличных пространств, созданных с абсолютным путем или находящихся за пределами каталога данных.
Обнаружение табличных пространств во время восстановления после сбоя зависит от параметра
innodb_directoriesдля идентификации табличных пространств, указанных в журналах редо. Дополнительную информацию см. в разделе Обнаружение табличных пространств во время восстановления после сбоя.Значение по умолчанию — NULL, но каталоги, определённые параметрами
innodb_data_home_dir,innodb_undo_directoryиdatadir, всегда добавляются к аргументуinnodb_directoriesпри составлении списка каталогов для сканирования при запуске. Эти каталоги добавляются независимо от того, указан ли параметрinnodb_directoriesявно.innodb_directoriesможет быть указан как параметр в команде запуска или в файле параметров MySQL. Значение аргумента заключено в кавычки, так как в противном случае некоторые интерпретаторы команд воспринимают точку с запятой (;) как специальный символ. (Например, оболочки Unix используют её в качестве терминатора команд).Команда запуска:
mysqld --innodb-directories="
directory_path_1;directory_path_2"Файл параметров MySQL:
[mysqld] innodb_directories="
directory_path_1;directory_path_2"Для указания каталогов нельзя использовать выражения с подстановкой символов.
Сканирование
innodb_directoriesтакже проходит по подкаталогам указанных каталогов. Дублирующиеся каталоги и подкаталоги удаляются из списка каталогов, которые необходимо просканировать.Дополнительную информацию см. в разделе Раздел 17.6.3.6, «Перемещение файлов табличных пространств, когда сервер выключен».
-
innodb_disable_sort_file_cacheФормат командной строки --innodb-disable-sort-file-cache[={OFF|ON}]Системная переменная innodb_disable_sort_file_cacheОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Булево Значение по умолчанию OFFОтключает кэш файловой системы операционной системы для временных файлов сортировки методом слияния. Эффект эквивалентен открытию таких файлов с помощью
O_DIRECT. -
Формат командной строки --innodb-doublewrite=valueСистемная переменная innodb_doublewriteОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Перечисление Значение по умолчанию ONДопустимые значения ONOFFDETECT_AND_RECOVERDETECT_ONLYПеременная
innodb_doublewriteуправляет буферизацией doublewrite. Буферизация doublewrite включена по умолчанию в большинстве случаев.Вы можете установить
innodb_doublewriteнаONилиOFFпри запуске сервера для включения или выключения буферизации doublewrite соответственно.DETECT_AND_RECOVERравносильноON. С этим параметром, за исключением того, что буфер doublewrite полностью включен, с записью содержимого страницы базы данных в буфер doublewrite, к которому обращаются при восстановлении для исправления неполных записей страниц. СDETECT_ONLY, в буфер doublewrite записываются только метаданные. Содержимое страницы базы данных в буфер doublewrite не записывается, и восстановление не использует буфер doublewrite для исправления неполных записей страниц. Этот облегчённый параметр предназначен только для обнаружения неполных записей страниц.MySQL поддерживает динамические изменения параметра
innodb_doublewrite, которые включают буфер doublewrite, междуON,DETECT_AND_RECOVERиDETECT_ONLY. MySQL не поддерживает динамические изменения между параметром, включающим буфер doublewrite, иOFFили наоборот.Если буфер doublewrite расположен на устройстве Fusion-io, поддерживающем атомарные записи, буфер doublewrite автоматически отключен, а записи в файлы данных выполняются с использованием атомарных записей Fusion-io вместо этого. Однако помните, что параметр
innodb_doublewriteявляется глобальным. При отключении буфера doublewrite он отключается для всех файлов данных, включая те, которые не находятся на оборудовании Fusion-io. Эта функция поддерживается только на оборудовании Fusion-io и только включена для Fusion-io NVMFS в Linux. Для максимальной пользы от этой функции рекомендуется значениеinnodb_flush_methodO_DIRECT.Подробную информацию см. в разделе Раздел 17.6.4, «Буфер doublewrite».
-
Формат командной строки --innodb-doublewrite-batch-size=#Системная переменная innodb_doublewrite_batch_sizeОбласть действия Глобальная Динамическая Нет SET_VARПрименяется подсказкаНет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 256Эта переменная предназначалась для представления количества страниц doublewrite для записи в пакет. Эта функциональность была заменена параметром
innodb_doublewrite_pages.Дополнительную информацию см. в разделе Раздел 17.6.4, «Буфер doublewrite».
-
Формат командной строки --innodb-doublewrite-dir=dir_nameСистемная переменная innodb_doublewrite_dirОбласть действия Глобальная Динамическая Нет SET_VARПрименяется подсказкаНет Тип Имя каталога Определяет каталог для файлов doublewrite. Если каталог не указан, файлы doublewrite создаются в каталоге
innodb_data_home_dir, который по умолчанию равен каталогу данных, если не указан иначе.Дополнительную информацию см. в разделе Раздел 17.6.4, «Буфер doublewrite».
-
Формат командной строки --innodb-doublewrite-files=#Системная переменная innodb_doublewrite_filesОбласть действия Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 2Минимальное значение 1Максимальное значение 256Определяет количество файлов doublewrite. По умолчанию создаются два файла doublewrite для каждого экземпляра буферного пула.
Как минимум, существуют два файла doublewrite. Максимальное количество файлов doublewrite в два раза превышает количество экземпляров буферного пула. (Количество экземпляров буферного пула контролируется переменной
innodb_buffer_pool_instances.)Для получения дополнительной информации см. Раздел 17.6.4, «Буфер Doublewrite».
-
Формат командной строки --innodb-doublewrite-pages=#Системная переменная innodb_doublewrite_pagesОбласть действия Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 128Минимальное значение 1Максимальное значение 512Определяет максимальное количество страниц doublewrite на поток для пакетной записи. Если значение не указано,
innodb_doublewrite_pagesпринимает значение по умолчанию 128.До MySQL 8.4 значение по умолчанию было равно значению
innodb_write_io_threads, которое по умолчанию равно 4.Для получения дополнительной информации см. Раздел 17.6.4, «Буфер Doublewrite».
-
Формат командной строки --innodb=extend-and-initialize[={OFF|ON}]Системная переменная innodb_extend_and_initializeОбласть действия Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Логическое Значение по умолчанию ONУправляет тем, как пространство выделяется для таблиц file-per-table и общих табличных пространств в системах Linux.
Когда включено,
InnoDBзаписывает NULL в недавно выделенные страницы. Когда отключено, пространство выделяется с помощью вызововposix_fallocate(), которые резервируют пространство без физической записи NULL.Для получения дополнительной информации см. Раздел 17.6.3.8, «Оптимизация выделения пространства табличного пространства в Linux».
-
Формат командной строки --innodb-fast-shutdown=#Системная переменная innodb_fast_shutdownОбласть действия Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 1Допустимые значения 012Режим
InnoDB. Если значение равно 0,InnoDBвыполняет , полную и слияние буфера изменений перед завершением работы. Если значение равно 1 (по умолчанию),InnoDBпропускает эти операции при завершении работы, процесс, известный как . Если значение равно 2,InnoDBочищает свои журналы и завершает работу аварийно, как если бы MySQL произошел сбой; никакие подтвержденные транзакции не теряются, но операция делает следующий запуск более длительным.Медленное завершение работы может занять минуты или даже часы в крайних случаях, когда значительные объемы данных все еще находятся в буфере. Используйте метод медленного завершения работы перед обновлением или понижением версии между основными выпусками MySQL, чтобы все файлы данных были полностью подготовлены в случае, если процесс обновления обновит формат файла.
Используйте
innodb_fast_shutdown=2в чрезвычайных ситуациях или при устранении неполадок, чтобы получить максимально быстрое завершение работы, если данные подвергаются риску повреждения. -
innodb_fil_make_page_dirty_debugФормат командной строки --innodb-fil-make-page-dirty-debug=#Системная переменная innodb_fil_make_page_dirty_debugОбласть действия Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 2**32-1По умолчанию установка
innodb_fil_make_page_dirty_debugв ID табличного пространства немедленно делает первую страницу табличного пространства грязной. Еслиinnodb_saved_page_number_debugустановлено в значение, отличное от значения по умолчанию, установкаinnodb_fil_make_page_dirty_debugделает указанную страницу грязной. Параметрinnodb_fil_make_page_dirty_debugдоступен только в том случае, если поддержка отладки скомпилирована с использованием параметраWITH_DEBUGCMake. -
Формат командной строки --innodb-file-per-table[={OFF|ON}]Системная переменная innodb_file_per_tableОбласть действия Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Логическое Значение по умолчанию ONКогда
innodb_file_per_tableвключено, таблицы создаются в табличных пространствах file-per-table по умолчанию. Когда отключено, таблицы создаются в системном табличном пространстве по умолчанию. Для получения информации о табличных пространствах file-per-table см. Раздел 17.6.3.2, «Табличные пространства File-Per-Table». Для получения информации о системном табличном пространствеInnoDBсм. Раздел 17.6.3.1, «Системное табличное пространство».Переменную
innodb_file_per_tableможно настроить во время выполнения с помощью оператораSET GLOBAL, указанного в командной строке при запуске или указанного в файле параметров. Настройка во время выполнения требует прав, достаточных для установки глобальных системных переменных (см. Раздел 7.1.9.1, «Права на системные переменные»), и немедленно влияет на работу всех подключений.Когда таблица, которая находится в табличном пространстве file-per-table, усекается или удаляется, освобожденное пространство возвращается операционной системе. Усечение или удаление таблицы, которая находится в системном табличном пространстве, освобождает только пространство в системном табличном пространстве. Освобожденное пространство в системном табличном пространстве может быть использовано снова для данных
InnoDB, но не возвращается операционной системе, поскольку файлы данных системного табличного пространства никогда не уменьшаются.Настройка
innodb_file_per-tableне влияет на создание временных таблиц; временные таблицы создаются во временных табличных пространствах сеанса. См. Раздел 17.6.3.5, «Временные табличные пространства».
-
Формат командной строки --innodb-fill-factor=#Системная переменная innodb_fill_factorОбласть действия Глобальная Динамическая Да SET_VARПрименяется как подсказкаНет Тип Целое число Значение по умолчанию 100Минимальное значение 10Максимальное значение 100InnoDBвыполняет массовую загрузку при создании или перестроении индексов. Этот метод создания индексов известен как “сортированное создание индекса”.innodb_fill_factorопределяет процент заполнения каждой страницы B-дерева при сортированном создании индекса, остальная часть пространства резервируется для будущего роста индекса. Например, установкаinnodb_fill_factorна 80 резервирует 20 процентов пространства на каждой странице B-дерева для будущего роста индекса. Фактические проценты могут отличаться. Значениеinnodb_fill_factorинтерпретируется как подсказка, а не как жёсткое ограничение.Значение
innodb_fill_factorравное 100 оставляет 1/16 пространства в страницах кластеризованного индекса свободным для будущего роста индекса.innodb_fill_factorприменяется к страницам B-дерева, как листов, так и нелистов. Она не применяется к внешним страницам, используемым дляTEXTилиBLOBзаписей.Для получения дополнительной информации см. Раздел 17.6.2.3, «Сортированное создание индексов».
-
Формат командной строки --innodb-flush-log-at-timeout=#Системная переменная innodb_flush_log_at_timeoutОбласть действия Глобальная Динамическая Да SET_VARПрименяется как подсказкаНет Тип Целое число Значение по умолчанию 1Минимальное значение 1Максимальное значение 2700Единица измерения секунд Записывать и очищать журналы каждые
Nсекунды.innodb_flush_log_at_timeoutпозволяет увеличить временной интервал между очистками, чтобы уменьшить количество операций записи и не влиять на производительность группового коммита двоичного журнала. Значение по умолчанию дляinnodb_flush_log_at_timeout— раз в секунду. -
innodb_flush_log_at_trx_commitФормат командной строки --innodb-flush-log-at-trx-commit=#Системная переменная innodb_flush_log_at_trx_commitОбласть действия Глобальная Динамическая Да SET_VARПрименяется как подсказкаНет Тип Перечисление Значение по умолчанию 1Допустимые значения 012Управляет балансом между строгой совместимостью операций и большей производительностью, достижимой при перегруппировке и выполнении операций ввода/вывода, связанных с коммитом, партиями. Вы можете добиться лучшей производительности, изменив значение по умолчанию, но тогда вы можете потерять транзакции при сбое.
Значение по умолчанию 1 необходимо для полной ACID-совместимости. Журналы записываются и очищаются на диск при каждом коммите транзакции.
При значении 0, журналы записываются и очищаются на диск один раз в секунду. Транзакции, журналы которых не были очищены, могут быть потеряны при сбое.
При значении 2, журналы записываются после каждого коммита транзакции, и очищаются на диск один раз в секунду. Транзакции, журналы которых не были очищены, могут быть потеряны при сбое.
Для значений 0 и 2 очистка раз в секунду не гарантируется на 100%. Очистка может происходить чаще из-за изменений DDL и других внутренних
InnoDBактивностей, которые вызывают очистку журналов независимо от значенияinnodb_flush_log_at_trx_commit, а иногда и реже из-за проблем с планированием. Если журналы очищаются один раз в секунду, до одной секунды транзакций могут быть потеряны при сбое. Если журналы очищаются чаще или реже, чем один раз в секунду, количество потерянных транзакций соответственно изменяется.Частота очистки журналов регулируется параметром
innodb_flush_log_at_timeout, который позволяет установить частоту очистки журналов вNсекунды (гдеNравно1 ... 2700, со значением по умолчанию 1). Однако любой непредвиденный выход процесса mysqld может стереть доNсекунд транзакций.Изменения DDL и другие внутренние
InnoDBактивности очищают журнал независимо от значенияinnodb_flush_log_at_trx_commit.InnoDBработает независимо от значенияinnodb_flush_log_at_trx_commit. Транзакции либо полностью применяются, либо полностью удаляются.
Для обеспечения долговечности и согласованности в настройке репликации, использующей
InnoDBс транзакциями:Если включена запись двоичных журналов, установите
sync_binlog=1.Всегда устанавливайте
innodb_flush_log_at_trx_commit=1.
Для получения информации о комбинации параметров на реплике, наиболее устойчивой к непредвиденным остановкам, см. Раздел 19.4.2, «Обработка непредвиденной остановки реплики».
ПредупреждениеМногие операционные системы и некоторые накопители подделывают операцию очистки на диск. Они могут сообщать mysqld, что очистка произошла, даже если это не так. В этом случае долговечность транзакций не гарантируется даже с рекомендуемыми параметрами, и в худшем случае отключение питания может повредить данные
InnoDB. Использование кэша диска с батарейным питанием в контроллере SCSI диска или в самом диске ускоряет очистку файлов и делает операцию безопаснее. Вы также можете попробовать отключить кэширование операций записи на диск в кэшах оборудования.
-
Формат командной строки --innodb-flush-method=valueСистемная переменная innodb_flush_methodОбласть действия Глобальная Динамическая Нет SET_VARПрименяется подсказкаНет Тип Строка Значение по умолчанию (Unix) O_DIRECT if supported, otherwise fsyncЗначение по умолчанию (Windows) unbufferedДопустимые значения (Unix) fsyncO_DSYNClittlesyncnosyncO_DIRECTO_DIRECT_NO_FSYNCДопустимые значения (Windows) unbufferednormalОпределяет метод, используемый для записи данных в
InnoDB, что может повлиять на пропускную способность ввода-вывода.В системах Unix значение по умолчанию равно
O_DIRECT, если поддерживается, иначе по умолчаниюfsync. В Windows значение по умолчанию равноunbuffered.Доступные варианты для метода сброса данных InnoDB в системах Unix-подобных систем:
fsyncили0:InnoDBиспользует системный вызовfsync()для сброса данных и журнальных файлов.O_DSYNCили1:InnoDBиспользуетO_SYNCдля открытия и сброса журнальных файлов иfsync()для сброса файлов данных.InnoDBне используетO_DSYNCнапрямую, потому что в различных версиях Unix были проблемы.littlesyncили2: Этот вариант используется для внутренних тестов производительности и в настоящее время не поддерживается. Используйте на свой страх и риск.nosyncили3: Этот вариант используется для внутренних тестов производительности и в настоящее время не поддерживается. Используйте на свой страх и риск.O_DIRECTили4:InnoDBиспользуетO_DIRECT(илиdirectio()в Solaris) для открытия файлов данных и используетfsync()для сброса файлов данных и журнальных файлов. Этот вариант доступен в некоторых версиях GNU/Linux, FreeBSD и Solaris.-
O_DIRECT_NO_FSYNC:InnoDBиспользуетO_DIRECTпри сбросе операций ввода-вывода, но пропускает системный вызовfsync()после каждой операции записи.MySQL вызывает
fsync()после создания нового файла, после увеличения размера файла и после закрытия файла, чтобы обеспечить синхронизацию изменений метаданных файловой системы. Системный вызовfsync()по-прежнему пропускается после каждой операции записи.Возможность потери данных существует, если файлы журнала redo и файлы данных находятся на разных устройствах хранения, и происходит неожиданное завершение работы до того, как записи в файлы данных будут сброшены из кэша устройства, который не поддерживает питание. Если вы используете или планируете использовать разные устройства хранения для файлов журнала redo и файлов данных, и файлы данных находятся на устройстве с кэшем, который не поддерживает питание, используйте
O_DIRECT.
На платформах, которые поддерживают системные вызовы
fdatasync(), переменнаяinnodb_use_fdatasyncпозволяет использовать вариантыinnodb_flush_method, которые используютfsync()для использованияfdatasync(). Системный вызовfdatasync()не сбрасывает изменения в метаданные файла, если это не требуется для последующего извлечения данных, что обеспечивает потенциальное преимущество производительности.Варианты
innodb_flush_methodдля систем Windows включают:-
unbufferedили0:InnoDBиспользует небуферизованный ввод-вывод.ПримечаниеЗапуск MySQL сервера на жёстком диске с сектором 4К в Windows не поддерживается с
unbuffered. Решение — использоватьinnodb_flush_method=normal. normalили1:InnoDBиспользует буферизованный ввод-вывод.
Как каждое значение влияет на производительность, зависит от конфигурации оборудования и рабочей нагрузки. Сделайте бенчмаркинг вашей конкретной конфигурации, чтобы определить, какое значение использовать, или оставить значение по умолчанию. Просмотрите переменную состояния
Innodb_data_fsyncs, чтобы увидеть общее количество вызововfsync()(или вызововfdatasync(), еслиinnodb_use_fdatasyncвключён) для каждого значения. Смесь операций чтения и записи в вашей рабочей нагрузке может повлиять на производительность значения. Например, в системе с контроллером RAID и кэшем записи с батарейным питаниемO_DIRECTможет помочь избежать двойного буферизации между буфером пуломInnoDBи кэшем файловой системы операционной системы. В некоторых системах, где файлы данных и журнальных файловInnoDBнаходятся на SAN, значение по умолчанию илиO_DSYNCможет быть быстрее для рабочей нагрузки с большим количеством операций чтения и преимущественноSELECT-запросов. Всегда тестируйте этот параметр с оборудованием и рабочей нагрузкой, отражающей вашу производственную среду. Дополнительные советы по настройке ввода-вывода см. в Разделе 10.5.8, «Оптимизация ввода-вывода InnoDB». -
Формат командной строки --innodb-flush-neighbors=#Системная переменная innodb_flush_neighborsОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Перечисление Значение по умолчанию 0Допустимые значения 012Указывает, сбрасывает ли страница из
InnoDBтакже другие страницы в том же .Значение 0 отключает
innodb_flush_neighbors. Мусорные страницы в одном и том же объёме не сбрасываются.Значение 1 сбрасывает смежные грязные страницы в одном и том же объёме.
Значение 2 сбрасывает грязные страницы в одном и том же объёме.
При хранении данных таблицы на традиционном устройстве хранения сброс таких страниц в одной операции уменьшает накладные расходы ввода-вывода (в основном для операций поиска по диску) по сравнению со сбросом отдельных страниц в разное время. При хранении данных таблицы на , время поиска не является значимым фактором, и вы можете установить этот параметр в 0, чтобы рассредоточить операции записи. Для дополнительной информации см. Раздел 17.8.3.5, «Настройка сброса буфера пула».
-
Формат командной строки --innodb-flush-sync[={OFF|ON}]Системная переменная innodb_flush_syncОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Булево Значение по умолчанию ONПеременная
innodb_flush_sync, которая включена по умолчанию, приводит к игнорированию параметровinnodb_io_capacityиinnodb_io_capacity_maxво время пиковых операций ввода-вывода, которые происходят при . Чтобы соблюдать скорость ввода-вывода, определённуюinnodb_io_capacityиinnodb_io_capacity_max, отключитеinnodb_flush_sync.Дополнительную информацию о конфигурации переменной
innodb_flush_syncсм. в Разделе 17.8.7, «Настройка пропускной способности ввода-вывода InnoDB».
-
Формат командной строки --innodb-flushing-avg-loops=#Системная переменная innodb_flushing_avg_loopsОбласть действия Глобальная Динамическая Да SET_VARПрименимо к подсказкамНет Тип Целое число Значение по умолчанию 30Минимальное значение 1Максимальное значение 1000Число итераций, в течение которых
InnoDBсохраняет ранее вычисленную моментальную фотографию состояния сброса, контролируя, насколько быстро он реагирует на изменяющиеся . Увеличение значения делает скорость операций плавной и постепенной при изменении рабочей нагрузки. Уменьшение значения позволяет адаптивному сбросу быстро реагировать на изменения рабочей нагрузки, что может привести к скачкам активности сброса, если рабочая нагрузка резко увеличивается и уменьшается.Для получения дополнительной информации см. Раздел 17.8.3.5, «Настройка сброса буфера пула».
-
Формат командной строки --innodb-force-load-corrupted[={OFF|ON}]Системная переменная innodb_force_load_corruptedОбласть действия Глобальная Динамическая Нет SET_VARПрименимо к подсказкамНет Тип Булево Значение по умолчанию OFFРазрешает
InnoDBзагружать таблицы при запуске, помеченные как поврежденные. Используйте только во время устранения неполадок, для восстановления данных, которые в противном случае недоступны. По завершении устранения неполадок отключите эту настройку и перезапустите сервер. -
Формат командной строки --innodb-force-recovery=#Системная переменная innodb_force_recoveryОбласть действия Глобальная Динамическая Нет SET_VARПрименимо к подсказкамНет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 6Режим , обычно изменяется только при серьезных ситуациях устранения неполадок. Возможные значения от 0 до 6. Для понимания значений и важной информации о
innodb_force_recoveryсм. Раздел 17.20.3, «Вынужденное восстановление InnoDB».ПредупреждениеУстанавливайте эту переменную только в случае чрезвычайной ситуации, чтобы вы могли начать
InnoDBи сохранить свои таблицы. В целях безопасностиInnoDBпредотвращает операцииINSERT,UPDATEилиDELETE, когдаinnodb_force_recoveryбольше 0. Настройкаinnodb_force_recovery4 или выше переводитInnoDBв режим только для чтения.Эти ограничения могут привести к ошибке команд администрирования репликации, поскольку репликация сохраняет журналы состояния реплики в
InnoDBтаблицах. -
Формат командной строки --innodb-fsync-threshold=#Системная переменная innodb_fsync_thresholdОбласть действия Глобальная Динамическая Да SET_VARПрименимо к подсказкамНет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 2**64-1По умолчанию, когда
InnoDBсоздает новый файл данных, например, новый файл журнала или файл табличного пространства, файл полностью записывается в кэш операционной системы, прежде чем он будет записан на диск, что может привести к большому количеству операций записи на диск одновременно. Чтобы принудительно выполнять более мелкие периодические сбросы данных из кэша операционной системы, можно использовать переменнуюinnodb_fsync_threshold, чтобы определить пороговое значение в байтах. Когда пороговое значение в байтах достигается, содержимое кэша операционной системы сбрасывается на диск. Значение по умолчанию 0 принуждает к стандартному поведению, при котором данные записываются на диск только после полного заполнения кэша.Указание порога для принудительного выполнения более мелких периодических сбросов может быть полезно в тех случаях, когда несколько экземпляров MySQL используют одни и те же устройства хранения. Например, создание нового экземпляра MySQL и связанных с ним файлов данных может привести к значительным всплескам операций записи на диск, что негативно сказывается на производительности других экземпляров MySQL, использующих те же устройства хранения. Настройка порога помогает избежать таких всплесков активности записи.
-
Системная переменная innodb_ft_aux_tableОбласть действия Глобальная Динамическая Да SET_VARПрименимо к подсказкамНет Тип Строка Указывает полное имя таблицы с
InnoDB, содержащей индексFULLTEXT. Эта переменная предназначена для диагностических целей и может быть установлена только во время выполнения. Например:SET GLOBAL innodb_ft_aux_table = 'test/t1';
После установки этой переменной в формате
таблицыdb_name/table_nameINFORMATION_SCHEMAINNODB_FT_INDEX_TABLE,INNODB_FT_INDEX_CACHE,INNODB_FT_CONFIG,INNODB_FT_DELETEDиINNODB_FT_BEING_DELETEDотображают информацию об индексе поиска для указанной таблицы.Дополнительную информацию см. в Разделе 17.15.4, «Индекс таблиц InnoDB INFORMATION_SCHEMA FULLTEXT».
-
Формат командной строки --innodb-ft-cache-size=#Системная переменная innodb_ft_cache_sizeОбласть действия Глобальная Динамическая Нет SET_VARПрименимо к подсказкамНет Тип Целое число Значение по умолчанию 8000000Минимальное значение 1600000Максимальное значение 80000000Единица измерения байты Память, выделенная в байтах, для кэша индекса поиска
InnoDBFULLTEXT, хранящего разобранный документ в памяти во время создания индексаInnoDBFULLTEXT. Вставки и обновления индексов сохраняются на диске только при достижении ограничения размера кэшаinnodb_ft_cache_size.innodb_ft_cache_sizeопределяет размер кэша на основе каждой таблицы. Чтобы установить глобальное ограничение для всех таблиц, см.innodb_ft_total_cache_size.Дополнительную информацию см. в Кэше индекса InnoDB полнотекстового поиска.
-
Формат командной строки --innodb-ft-enable-diag-print[={OFF|ON}]Системная переменная innodb_ft_enable_diag_printОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Булево Значение по умолчанию OFFВключает ли дополнительный вывод диагностической информации для поиска по полнотекстовому индексу (FTS). Этот параметр предназначен в первую очередь для расширенной отладки FTS и не представляет интереса для большинства пользователей. Вывод печатается в журнал ошибок и включает в себя информацию, такую как:
-
Прогресс синхронизации индекса FTS (когда достигнут предел кеша FTS). Например:
FTS SYNC for table test, deleted count: 100 size: 10000 bytes SYNC words: 100
-
Прогресс оптимизации FTS. Например:
FTS start optimize test FTS_OPTIMIZE: optimize "mysql" FTS_OPTIMIZE: processed "mysql"
-
Прогресс построения индекса FTS. Например:
Number of doc processed: 1000
-
Для запросов FTS выводится дерево разбора запроса, вес слов, время обработки запроса и использование памяти. Например:
FTS Search Processing time: 1 secs: 100 millisec: row(s) 10000 Full Search Memory: 245666 (bytes), Row: 10000
-
-
Формат командной строки --innodb-ft-enable-stopword[={OFF|ON}]Системная переменная innodb_ft_enable_stopwordОбласть видимости Глобальная, сеанса Динамическая Да SET_VARПодсказка применяетсяНет Тип Булево Значение по умолчанию ONУказывает, что набор связан с индексом
InnoDBFULLTEXTво время создания индекса. Если указан параметрinnodb_ft_user_stopword_table, стоп-слова берутся из этой таблицы. В противном случае, если указан параметрinnodb_ft_server_stopword_table, стоп-слова берутся из этой таблицы. В противном случае используется встроенный набор стоп-слов по умолчанию.Для получения дополнительной информации см. Раздел 14.9.4, «Стоп-слова для полнотекстового поиска».
-
Формат командной строки --innodb-ft-max-token-size=#Системная переменная innodb_ft_max_token_sizeОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 84Минимальное значение 10Максимальное значение 84Максимальная длина слов в символах, которые хранятся в индексе
InnoDBFULLTEXT. Установка ограничения на это значение уменьшает размер индекса, тем самым ускоряя запросы, за счет пропуска длинных ключевых слов или произвольных наборов букв, которые не являются настоящими словами и вряд ли будут поисковыми терминами.Для получения дополнительной информации см. Раздел 14.9.6, «Тонкая настройка полнотекстового поиска MySQL».
-
Формат командной строки --innodb-ft-min-token-size=#Системная переменная innodb_ft_min_token_sizeОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 3Минимальное значение 0Максимальное значение 16Минимальная длина слов, которые хранятся в индексе
InnoDBFULLTEXT. Увеличение этого значения уменьшает размер индекса, тем самым ускоряя запросы, за счет пропуска распространенных слов, которые вряд ли будут значимыми в контексте поиска, таких как английские слова “a” и “to”. Для контента, использующего кодировку CJK (китайский, японский, корейский), укажите значение 1.Для получения дополнительной информации см. Раздел 14.9.6, «Тонкая настройка полнотекстового поиска MySQL».
-
Формат командной строки --innodb-ft-num-word-optimize=#Системная переменная innodb_ft_num_word_optimizeОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 2000Минимальное значение 1000Максимальное значение 10000Количество слов для обработки во время каждой операции
OPTIMIZE TABLEдля индексаInnoDBFULLTEXT. Поскольку операция массовой вставки или обновления таблицы, содержащей полнотекстовый индекс поиска, может потребовать существенного обслуживания индекса для учета всех изменений, вы можете выполнить серию инструкцийOPTIMIZE TABLE, каждая из которых будет продолжать с того места, где остановилась предыдущая.Для получения дополнительной информации см. Раздел 14.9.6, «Тонкая настройка полнотекстового поиска MySQL».
-
Формат командной строки --innodb-ft-result-cache-limit=#Системная переменная innodb_ft_result_cache_limitОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 2000000000Минимальное значение 1000000Максимальное значение 2**32-1Единица измерения байты Предел кэша результатов полнотекстового поиска
InnoDB(определяется в байтах) для каждого запроса полнотекстового поиска или для каждого потока. Промежуточные и окончательные результаты запросов полнотекстового поискаInnoDBобрабатываются в памяти. Используйтеinnodb_ft_result_cache_limit, чтобы установить ограничение размера для кэша результатов запросов полнотекстового поиска, чтобы избежать чрезмерного потребления памяти в случае очень больших результатов запросов полнотекстового поискаInnoDB(например, миллионы или сотни миллионов строк). Память выделяется по мере необходимости при обработке запроса полнотекстового поиска. Если достигнут предел размера кэша результатов, возвращается ошибка, указывающая на то, что запрос превышает максимально допустимый объем памяти.Максимальное значение
innodb_ft_result_cache_limitдля всех типов платформ и разрядностей равно 2**32-1.
-
innodb_ft_server_stopword_tableФормат командной строки --innodb-ft-server-stopword-table=db_name/table_nameСистемная переменная innodb_ft_server_stopword_tableОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Строка Значение по умолчанию NULLЭтот параметр используется для указания собственного списка стоп-слов для индекса
InnoDBFULLTEXTдля всех таблицInnoDB. Для настройки собственного списка стоп-слов для конкретной таблицыInnoDBиспользуйтеinnodb_ft_user_stopword_table.Установите
innodb_ft_server_stopword_tableв имя таблицы, содержащей список стоп-слов в формате.db_name/table_nameТаблица стоп-слов должна существовать до настройки
innodb_ft_server_stopword_table.innodb_ft_enable_stopwordдолжен быть включен, и параметрinnodb_ft_server_stopword_tableдолжен быть настроен до создания индексаFULLTEXT.Таблица стоп-слов должна быть таблицей
InnoDB, содержащей один столбецVARCHARс именемvalue.Для получения дополнительной информации см. Раздел 14.9.4, «Стоп-слова полного текста».
-
Формат командной строки --innodb-ft-sort-pll-degree=#Системная переменная innodb_ft_sort_pll_degreeОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 2Минимальное значение 1Максимальное значение 16Количество потоков, используемых параллельно для индексирования и токенизации текста в индексе
InnoDBFULLTEXTпри построении .Для получения дополнительной информации см. Раздел 17.6.2.4, «Индексы полного текста InnoDB», и
innodb_sort_buffer_size. -
Формат командной строки --innodb-ft-total-cache-size=#Системная переменная innodb_ft_total_cache_sizeОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 640000000Минимальное значение 32000000Максимальное значение 1600000000Единица измерения байты Общий объем выделенной памяти в байтах для кэша индекса поиска полного текста
InnoDBдля всех таблиц. Создание многочисленных таблиц, каждая из которых имеет индекс поискаFULLTEXT, может потреблять значительную часть доступной памяти.innodb_ft_total_cache_sizeопределяет глобальный предел памяти для всех индексов поиска полного текста, чтобы избежать чрезмерного потребления памяти. Если глобальный предел достигнут операцией индексации, запускается принудительная синхронизация.Для получения дополнительной информации см. Кэш индекса полного текста InnoDB.
-
Формат командной строки --innodb-ft-user-stopword-table=db_name/table_nameСистемная переменная innodb_ft_user_stopword_tableОбласть видимости Глобальная, сеанса Динамическая Да SET_VARПодсказка применяетсяНет Тип Строка Значение по умолчанию NULLЭтот параметр используется для указания собственного списка стоп-слов для индекса
InnoDBFULLTEXTдля конкретной таблицы. Для настройки собственного списка стоп-слов для всех таблицInnoDBиспользуйтеinnodb_ft_server_stopword_table.Установите
innodb_ft_user_stopword_tableв имя таблицы, содержащей список стоп-слов в формате.db_name/table_nameТаблица стоп-слов должна существовать до настройки
innodb_ft_user_stopword_table.innodb_ft_enable_stopwordдолжен быть включен, и параметрinnodb_ft_user_stopword_tableдолжен быть настроен до создания индексаFULLTEXT.Таблица стоп-слов должна быть таблицей
InnoDB, содержащей один столбецVARCHARс именемvalue.Для получения дополнительной информации см. Раздел 14.9.4, «Стоп-слова полного текста».
-
Формат командной строки --innodb-idle-flush-pct=#Системная переменная innodb_idle_flush_pctОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 100Минимальное значение 0Максимальное значение 100Ограничивает очистку страниц, когда
InnoDBбездействует. Значениеinnodb_idle_flush_pctпредставляет собой процент от настройкиinnodb_io_capacity, которая определяет количество операций ввода-вывода в секунду, доступных дляInnoDB. Для получения дополнительной информации см. Ограничение очистки буфера во время периодов простоя. -
Формат командной строки --innodb-io-capacity=#Системная переменная innodb_io_capacityОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 10000Минимальное значение 100Максимальное значение (64-битные платформы, 8.4.0) 2**64-1Максимальное значение 2**32-1Переменная
innodb_io_capacityопределяет количество операций ввода-вывода в секунду (IOPS), доступных для фоновых задачInnoDB, таких как страниц из и слияние данных из .Для получения информации о настройке переменной
innodb_io_capacityсм. Раздел 17.8.7, «Настройка производительности ввода-вывода InnoDB».
-
Формат командной строки --innodb-io-capacity-max=#Системная переменная innodb_io_capacity_maxОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 2 * innodb_io_capacityМинимальное значение 100Максимальное значение 2**32-1Если активность очистки отстает,
InnoDBможет выполнять очистку более агрессивно, с более высокой скоростью операций ввода-вывода в секунду (IOPS), чем определено переменнойinnodb_io_capacity. Переменнаяinnodb_io_capacity_maxопределяет максимальное количество операций IOPS, выполняемых фоновыми задачамиInnoDBв таких ситуациях. Этот параметр не управляет поведениемinnodb_flush_sync.Значение по умолчанию вдвое больше значения
innodb_io_capacity.Информация о настройке переменной
innodb_io_capacity_maxприведена в разделе 17.8.7, «Настройка производительности ввода-вывода InnoDB». -
innodb_limit_optimistic_insert_debugФормат командной строки --innodb-limit-optimistic-insert-debug=#Системная переменная innodb_limit_optimistic_insert_debugОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 2**32-1Ограничивает количество записей на страницу. Значение по умолчанию 0 означает, что ограничение не накладывается. Этот параметр доступен только в том случае, если поддержка отладки компилируется с использованием параметра
WITH_DEBUGCMake. -
Формат командной строки --innodb-lock-wait-timeout=#Системная переменная innodb_lock_wait_timeoutОбласть видимости Глобальная, сеанса Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 50Минимальное значение 1Максимальное значение 1073741824Единица измерения секунды Время в секундах, в течение которого
InnoDBожидает прежде чем отказаться. Значение по умолчанию — 50 секунд. Транзакция, пытающаяся получить доступ к строке, заблокированной другой транзакциейInnoDB, ожидает не более указанного количества секунд доступа на запись к строке, прежде чем выдать следующую ошибку:ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
Когда происходит тайм-аут ожидания блокировки, текущее утверждение (не вся транзакция). Чтобы выполнить откат всей транзакции, запустите сервер с параметром
--innodb-rollback-on-timeout. См. также раздел 17.20.5, «Обработка ошибок InnoDB».Вы можете уменьшить это значение для высокоинтерактивных приложений или систем, чтобы быстро отображать обратную связь пользователю или помещать обновление в очередь для последующей обработки. Вы можете увеличить это значение для длительных фоновых операций, таких как этап преобразования в хранилище данных, который ожидает завершения других крупных операций вставки или обновления.
innodb_lock_wait_timeoutприменяется к строковым блокировкамInnoDB. MySQL не происходит внутриInnoDB, и это ограничение времени ожидания не применяется к ожиданиям блокировок таблиц.Значение тайм-аута ожидания блокировки не применяется к когда включен параметр
innodb_deadlock_detect(по умолчанию), посколькуInnoDBнемедленно обнаруживает тупиковые ситуации и откатывает одну из заблокированных транзакций. Когдаinnodb_deadlock_detectотключен,InnoDBполагается наinnodb_lock_wait_timeoutдля отката транзакции при возникновении тупиковой ситуации. См. раздел 17.7.5.2, «Обнаружение тупиковых ситуаций».innodb_lock_wait_timeoutможно установить во время выполнения с помощью оператораSET GLOBALилиSET SESSION. Изменение параметраGLOBALтребует прав, достаточных для установки глобальных системных переменных (см. раздел 7.1.9.1, «Привилегии системных переменных»), и влияет на работу всех клиентов, которые подключаются впоследствии. Любой клиент может изменить параметрSESSIONдляinnodb_lock_wait_timeout, что влияет только на этого клиента. -
Формат командной строки --innodb-log-buffer-size=#Системная переменная innodb_log_buffer_sizeОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 67108864Минимальное значение 1048576Максимальное значение 4294967295Размер в байтах буфера, который
InnoDBиспользует для записи на диск. Значение по умолчанию — 64 МБ. Большой позволяет выполнять большие без необходимости записи журнала на диск до завершения транзакций. Таким образом, если у вас есть транзакции, которые обновляют, вставляют или удаляют много строк, увеличение размера буфера журнала экономит операции ввода-вывода на диске. Дополнительная информация приведена в разделе Настройка памяти, и разделе 10.5.4, «Оптимизация повторной записи журналов InnoDB». Общие советы по настройке ввода-вывода см. в разделе 10.5.8, «Оптимизация операций ввода-вывода на диске InnoDB». -
innodb_log_checkpoint_fuzzy_nowФормат командной строки --innodb-log-checkpoint-fuzzy-now[={OFF|ON}]Системная переменная innodb_log_checkpoint_fuzzy_nowОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Логическое Значение по умолчанию OFFВключите этот параметр отладки, чтобы принудительно заставить
InnoDBзаписать нечеткую контрольную точку. Этот параметр доступен только в том случае, если поддержка отладки компилируется с использованием параметраWITH_DEBUGCMake. -
Формат командной строки --innodb-log-checkpoint-now[={OFF|ON}]Системная переменная innodb_log_checkpoint_nowОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Логическое Значение по умолчанию OFFВключите этот параметр отладки, чтобы принудительно заставить
InnoDBзаписать контрольную точку. Этот параметр доступен только в том случае, если поддержка отладки компилируется с использованием параметраWITH_DEBUGCMake.
-
Формат командной строки --innodb-log-checksums[={OFF|ON}]Системная переменная innodb_log_checksumsОбласть действия Глобальная Динамическая Да Применяется подсказка SET_VARНет Тип Булево Значение по умолчанию ONВключает или выключает контрольные суммы для страниц журнала переписывания.
innodb_log_checksums=ONвключает алгоритм контрольной суммыCRC-32Cдля страниц журнала переписывания. Когдаinnodb_log_checksumsотключен, содержимое поля контрольной суммы страницы журнала переписывания игнорируется.Контрольные суммы для страницы заголовка журнала переписывания и страниц контрольных точек журнала переписывания никогда не отключаются.
-
Формат командной строки --innodb-log-compressed-pages[={OFF|ON}]Системная переменная innodb_log_compressed_pagesОбласть действия Глобальная Динамическая Да Применяется подсказка SET_VARНет Тип Булево Значение по умолчанию ONУказывает, записываются ли изображения на диск. При внесении изменений в сжатые данные может произойти повторное сжатие.
innodb_log_compressed_pagesвключен по умолчанию, чтобы предотвратить повреждение, которое может возникнуть, если при восстановлении используется другая версия алгоритма сжатияzlib. Если вы уверены, что версияzlibне изменится, вы можете отключитьinnodb_log_compressed_pages, чтобы уменьшить генерацию журнала переписывания для рабочих нагрузок, изменяющих сжатые данные.Чтобы оценить эффект включения или выключения
innodb_log_compressed_pages, сравните генерацию журнала переписывания для обоих настроек в рамках одной рабочей нагрузки. Для измерения генерации журнала переписывания можно наблюдатьLog sequence number(LSN) в разделеLOGвыводаSHOW ENGINE INNODB STATUSили отслеживать состояниеInnodb_os_log_writtenдля количества байтов, записанных в файлы журнала переписывания.Для получения дополнительной информации см. Раздел 17.9.1.6, «Сжатие для рабочих нагрузок OLTP».
-
Формат командной строки --innodb-log-file-size=#Устаревший Да Системная переменная innodb_log_file_sizeОбласть действия Глобальная Динамическая Нет Применяется подсказка SET_VARНет Тип Целое число Значение по умолчанию 50331648Минимальное значение 4194304Максимальное значение 512GB / innodb_log_files_in_groupЕдиницы измерения байты Примечаниеinnodb_log_file_sizeиinnodb_log_files_in_groupбыли заменены наinnodb_redo_log_capacity; см. Раздел 17.6.5, «Журнал переписывания».Размер в байтах каждого файла в группе. Общий размер файлов журнала (
innodb_log_file_size*innodb_log_files_in_group) не может превышать максимального значения, немного меньшего 512 ГБ. Например, пара файлов журнала размером 255 ГБ приближается к этому пределу, но не превышает его. Значение по умолчанию составляет 48 МБ.В целом, общий размер файлов журнала должен быть достаточно большим, чтобы сервер мог сглаживать пики и спады активности рабочей нагрузки, что часто означает, что есть достаточно места в журнале переписывания, чтобы обработать более чем часовую активность записи. Чем больше значение, тем меньше требуется очистка контрольных точек в буферном пуле, экономя дисковые I/O. Более крупные файлы журнала также замедляют работу .
Минимальное значение
innodb_log_file_sizeсоставляет 4 МБ.Для получения дополнительной информации см. Настройка журнала переписывания. Общие рекомендации по настройке I/O см. в Разделе 10.5.8, «Оптимизация I/O InnoDB».
Если сервер запускается с
--innodb-dedicated-server, значениеinnodb_log_file_sizeустанавливается автоматически, если оно не определено явно. Для получения дополнительной информации см. Раздел 17.8.12, «Включение автоматической настройки InnoDB для выделенного сервера MySQL». -
Формат командной строки --innodb-log-files-in-group=#Устаревший Да Системная переменная innodb_log_files_in_groupОбласть действия Глобальная Динамическая Нет Применяется подсказка SET_VARНет Тип Целое число Значение по умолчанию 2Минимальное значение 2Максимальное значение 100Примечаниеinnodb_log_file_sizeиinnodb_log_files_in_groupбыли заменены наinnodb_redo_log_capacity; см. Раздел 17.6.5, «Журнал переписывания».Количество файлов журнала в группе. Записи выполняются в файлах по круговой схеме. Значение по умолчанию (и рекомендуемое) равно 2. Путь к файлам задается параметром
innodb_log_group_home_dir. Общий размер файлов журнала (innodb_log_file_size*innodb_log_files_in_group) может составлять до 512 ГБ.Для получения дополнительной информации см. Настройка журнала переписывания.
Если сервер запускается с
--innodb-dedicated-server, значениеinnodb_log_files_in_groupустанавливается автоматически, если оно не определено явно. Для получения дополнительной информации см. Раздел 17.8.12, «Включение автоматической настройки InnoDB для выделенного сервера MySQL». -
Формат командной строки --innodb-log-group-home-dir=dir_nameСистемная переменная innodb_log_group_home_dirОбласть действия Глобальная Динамическая Нет Применяется подсказка SET_VARНет Тип Имя каталога Путь к каталогу с файлами журнала переписывания.
Для получения дополнительной информации см. Настройка журнала переписывания.
-
Формат командной строки --innodb-log-spin-cpu-abs-lwm=#Системная переменная innodb_log_spin_cpu_abs_lwmОбласть действия Глобальная Динамическая Да Применяется подсказка SET_VARНет Тип Целое число Значение по умолчанию 80Минимальное значение 0Максимальное значение 4294967295Определяет минимальное количество использования ЦП, ниже которого пользовательские потоки больше не ожидают, вращаясь в ожидании списания записи redo. Значение выражается как сумма использования ядер ЦП. Например, значение по умолчанию 80 соответствует 80% от одного ядра ЦП. В системе с многоядерным процессором значение 150 соответствует 100% использования одного ядра ЦП плюс 50% использования второго ядра ЦП.
Для получения дополнительной информации см. Раздел 10.5.4, «Оптимизация журналирования InnoDB redo».
-
Формат командной строки --innodb-log-spin-cpu-pct-hwm=#Системная переменная innodb_log_spin_cpu_pct_hwmОбласть действия Глобальная Динамическая Да Применяется подсказка SET_VARНет Тип Целое число Значение по умолчанию 50Минимальное значение 0Максимальное значение 100Определяет максимальное значение использования ЦП, выше которого пользовательские потоки больше не ожидают, вращаясь в ожидании списания записи redo. Значение выражается в процентах от объединенной общей вычислительной мощности всех ядер ЦП. Значение по умолчанию составляет 50%. Например, 100% использования двух ядер ЦП составляет 50% объединенной вычислительной мощности ЦП на сервере с четырьмя ядрами ЦП.
Переменная
innodb_log_spin_cpu_pct_hwmучитывает сродство процессора. Например, если сервер имеет 48 ядер, но процесс mysqld привязан только к четырем ядрам ЦП, остальные 44 ядра игнорируются.Для получения дополнительной информации см. Раздел 10.5.4, «Оптимизация журналирования InnoDB redo».
-
innodb_log_wait_for_flush_spin_hwmФормат командной строки --innodb-log-wait-for-flush-spin-hwm=#Системная переменная innodb_log_wait_for_flush_spin_hwmОбласть действия Глобальная Динамическая Да Применяется подсказка SET_VARНет Тип Целое число Значение по умолчанию 400Минимальное значение 0Максимальное значение (64-разрядные платформы, 8.4.0) 2**64-1Максимальное значение 2**32-1Единица измерения микросекунды Определяет максимальное среднее время списания журнала, по истечении которого пользовательские потоки больше не ожидают, вращаясь в ожидании списания записи redo. Значение по умолчанию составляет 400 микросекунд.
Для получения дополнительной информации см. Раздел 10.5.4, «Оптимизация журналирования InnoDB redo».
-
Формат командной строки --innodb-log-write-ahead-size=#Системная переменная innodb_log_write_ahead_sizeОбласть действия Глобальная Динамическая Да Применяется подсказка SET_VARНет Тип Целое число Значение по умолчанию 8192Минимальное значение 512 (log file block size)Максимальное значение Equal to innodb_page_sizeЕдиница измерения байты Определяет размер блока предварительной записи для журнала redo в байтах. Для предотвращения «“чтения при записи” установите
innodb_log_write_ahead_sizeв соответствии с размером блока кэша операционной системы или файловой системы. Значение по умолчанию — 8192 байта. Чтение при записи происходит, когда блоки журнала redo не полностью кешируются в операционной системе или файловой системе из-за несоответствия между размером блока предварительной записи для журнала redo и размером блока кэша операционной системы или файловой системы.Допустимые значения для
innodb_log_write_ahead_size— кратные размеру блока файла журнала (2n). Минимальное значение — размер блока файла журнала (512). Предварительная запись не выполняется при указании минимального значения. Максимальное значение равно значениюinnodb_page_size. Если вы укажете значениеinnodb_log_write_ahead_size, которое больше значенияinnodb_page_size, настройкаinnodb_log_write_ahead_sizeусекается до значенияinnodb_page_size.Установка значения
innodb_log_write_ahead_sizeслишком низким по отношению к размеру блока кэша операционной системы или файловой системы приводит к «“чтению при записи”. Установка слишком высокого значения может незначительно повлиять на производительность операций записи в файл журнала из-за записи сразу нескольких блоков.Для получения дополнительной информации см. Раздел 10.5.4, «Оптимизация журналирования InnoDB redo».
-
Формат командной строки --innodb-log-writer-threads[={OFF|ON}]Системная переменная innodb_log_writer_threadsОбласть действия Глобальная Динамическая Да Применяется подсказка SET_VARНет Тип Булево Значение по умолчанию ONВключает выделенные потоки записи журнала для записи записей redo-журнала из буфера журнала в системные буферы и списания системных буферов в файлы журнала redo. Выделенные потоки записи журнала могут повысить производительность в системах с высокой конкурентностью, но для систем с низкой конкурентностью отключение выделенных потоков записи журнала обеспечивает лучшую производительность.
Для получения дополнительной информации см. Раздел 10.5.4, «Оптимизация журналирования InnoDB redo».
-
Формат командной строки --innodb-lru-scan-depth=#Системная переменная innodb_lru_scan_depthОбласть действия Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 1024Минимальное значение 100Максимальное значение (64-битные платформы, 8.4.0) 2**64-1Максимальное значение 2**32-1Параметр, влияющий на алгоритмы и эвристику работы для
InnoDB. В основном представляет интерес для экспертов по производительности, настраивающих рабочие нагрузки с интенсивным вводом-выводом. Он указывает для каждого экземпляра буферного пула, насколько глубоко в список страниц LRU буферного пула сканирует поток очистки страниц в поисках для очистки. Это фоновая операция, выполняемая один раз в секунду.Настройка, меньшая, чем значение по умолчанию, обычно подходит для большинства рабочих нагрузок. Значение, значительно превышающее необходимое, может повлиять на производительность. Рассмотрите возможность увеличения значения только в том случае, если у вас есть избыточная емкость ввода-вывода при типичной рабочей нагрузке. И наоборот, если рабочая нагрузка с интенсивной записью насыщает вашу емкость ввода-вывода, уменьшите значение, особенно в случае большого буферного пула.
При настройке
innodb_lru_scan_depth, начните с низкого значения и настраивайте параметр вверх с целью редко видеть ноль свободных страниц. Также рассмотрите возможность корректировкиinnodb_lru_scan_depthпри изменении количества экземпляров буферного пула, посколькуinnodb_lru_scan_depth*innodb_buffer_pool_instancesопределяет объем работы, выполняемый потоком очистки страниц каждую секунду.Для получения дополнительной информации см. Раздел 17.8.3.5, «Настройка очистки буферного пула». Для получения общих рекомендаций по настройке ввода-вывода см. Раздел 10.5.8, «Оптимизация ввода-вывода InnoDB на диск».
-
Формат командной строки --innodb-max-dirty-pages-pct=#Системная переменная innodb_max_dirty_pages_pctОбласть действия Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Числовое Значение по умолчанию 90Минимальное значение 0Максимальное значение 99.999InnoDBпытается данные из так, чтобы процент не превышал этого значения.Параметр
innodb_max_dirty_pages_pctустанавливает целевое значение для активности очистки. Он не влияет на скорость очистки. Для получения информации об управлении скоростью очистки см. Раздел 17.8.3.5, «Настройка очистки буферного пула».Для получения дополнительной информации см. Раздел 17.8.3.5, «Настройка очистки буферного пула». Для получения общих рекомендаций по настройке ввода-вывода см. Раздел 10.5.8, «Оптимизация ввода-вывода InnoDB на диск».
-
innodb_max_dirty_pages_pct_lwmФормат командной строки --innodb-max-dirty-pages-pct-lwm=#Системная переменная innodb_max_dirty_pages_pct_lwmОбласть действия Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Числовое Значение по умолчанию 10Минимальное значение 0Максимальное значение 99.999Определяет нижнюю границу, представляющую процент , при котором включается предварительная очистка для управления соотношением грязных страниц. Значение 0 полностью отключает поведение предварительной очистки. Настроенное значение должно всегда быть меньше значения
innodb_max_dirty_pages_pct. Для получения дополнительной информации см. Раздел 17.8.3.5, «Настройка очистки буферного пула». -
Формат командной строки --innodb-max-purge-lag=#Системная переменная innodb_max_purge_lagОбласть действия Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 4294967295Определяет желаемую максимальную задержку очистки. Если это значение превышено, к операциям
INSERT,UPDATEиDELETEприменяется задержка, чтобы дать время для завершения очистки. Значение по умолчанию равно 0, что означает отсутствие максимальной задержки очистки и отсутствия задержки.Для получения дополнительной информации см. Раздел 17.8.9, «Настройка очистки».
-
Формат командной строки --innodb-max-purge-lag-delay=#Системная переменная innodb_max_purge_lag_delayОбласть действия Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 10000000Единица измерения микросекунды Указывает максимальную задержку в микросекундах для задержки, применяемой при превышении порога
innodb_max_purge_lag. Указанное значениеinnodb_max_purge_lag_delayявляется верхним пределом периода задержки, вычисляемого по формулеinnodb_max_purge_lag.Для получения дополнительной информации см. Раздел 17.8.9, «Настройка очистки».
-
Формат командной строки --innodb-max-undo-log-size=#Системная переменная innodb_max_undo_log_sizeОбласть действия Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 1073741824Минимальное значение 10485760Максимальное значение 2**64-1Единица измерения байты Определяет пороговый размер для табличных пространств отката. Если табличное пространство отката превышает порог, оно может быть помечено для усечения, когда включен параметр
innodb_undo_log_truncate. Значение по умолчанию — 1073741824 байта (1024 МБ).Для получения дополнительной информации см. Усечение табличных пространств отката.
-
innodb_merge_threshold_set_all_debugФормат командной строки --innodb-merge-threshold-set-all-debug=#Системная переменная innodb_merge_threshold_set_all_debugОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 50Минимальное значение 1Максимальное значение 50Определяет процентное значение, заполняющее страницу для индексных страниц, которое переопределяет текущую настройку
MERGE_THRESHOLDдля всех индексов, которые в настоящее время находятся в кэше словаря. Эта опция доступна только в том случае, если поддержка отладки скомпилирована с использованием параметраWITH_DEBUGCMake. Для получения дополнительной информации см. Раздел 17.8.11, «Настройка порогового значения слияния для индексных страниц». -
Формат командной строки --innodb-monitor-disable={counter|module|pattern|all}Системная переменная innodb_monitor_disableОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Строка Эта переменная выступает в качестве переключателя, отключающего
InnoDB. Данные счетчиков можно запрашивать с помощью таблицы Information SchemaINNODB_METRICS. Для получения информации об использовании см. Раздел 17.15.6, «Таблица метрик InnoDB INFORMATION_SCHEMA».innodb_monitor_disable='latch'отключает сбор статистики дляSHOW ENGINE INNODB MUTEX. Для получения дополнительной информации см. Раздел 15.7.7.16, «Инструкция SHOW ENGINE». -
Формат командной строки --innodb-monitor-enable={counter|module|pattern|all}Системная переменная innodb_monitor_enableОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Строка Эта переменная выступает в качестве переключателя, включающего
InnoDB. Данные счетчиков можно запрашивать с помощью таблицы Information SchemaINNODB_METRICS. Для получения информации об использовании см. Раздел 17.15.6, «Таблица метрик InnoDB INFORMATION_SCHEMA».innodb_monitor_enable='latch'включает сбор статистики дляSHOW ENGINE INNODB MUTEX. Для получения дополнительной информации см. Раздел 15.7.7.16, «Инструкция SHOW ENGINE». -
Формат командной строки --innodb-monitor-reset={counter|module|pattern|all}Системная переменная innodb_monitor_resetОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Перечисление Значение по умолчанию NULLДопустимые значения countermodulepatternallЭта переменная выступает в качестве переключателя, сбрасывающего значение счетчика для
InnoDBдо нуля. Данные счетчиков можно запрашивать с помощью таблицы Information SchemaINNODB_METRICS. Для получения информации об использовании см. Раздел 17.15.6, «Таблица метрик InnoDB INFORMATION_SCHEMA».innodb_monitor_reset='latch'сбрасывает статистику, предоставляемуюSHOW ENGINE INNODB MUTEX. Для получения дополнительной информации см. Раздел 15.7.7.16, «Инструкция SHOW ENGINE». -
Формат командной строки --innodb-monitor-reset-all={counter|module|pattern|all}Системная переменная innodb_monitor_reset_allОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Перечисление Значение по умолчанию NULLДопустимые значения countermodulepatternallЭта переменная выступает в качестве переключателя, сбрасывающего все значения (минимальное, максимальное и т.д.) для
InnoDB. Данные счетчиков можно запрашивать с помощью таблицы Information SchemaINNODB_METRICS. Для получения информации об использовании см. Раздел 17.15.6, «Таблица метрик InnoDB INFORMATION_SCHEMA». -
Формат командной строки --innodb-numa-interleave[={OFF|ON}]Системная переменная innodb_numa_interleaveОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Логическое Значение по умолчанию ONВключает политику памяти NUMA interleave для распределения пула буферов
InnoDB. Когда включенinnodb_numa_interleave, политика памяти NUMA устанавливается вMPOL_INTERLEAVEдля процесса mysqld. После выделения пула буферовInnoDBполитика памяти NUMA возвращается кMPOL_DEFAULT. Для того чтобы опцияinnodb_numa_interleaveбыла доступна, MySQL должен быть скомпилирован в системе Linux с поддержкой NUMA. Значение по умолчанию равноON, если система поддерживает его, в противном случае значение по умолчанию равноOFF.CMake устанавливает значение по умолчанию
WITH_NUMAв зависимости от того, поддерживает ли текущая платформаNUMA. Для получения дополнительной информации см. Раздел 2.8.7, «Параметры конфигурации исходного кода MySQL».
-
Формат командной строки --innodb-old-blocks-pct=#Системная переменная innodb_old_blocks_pctОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 37Минимальное значение 5Максимальное значение 95Указывает приблизительный процент
InnoDB, используемый для старого блока. Диапазон значений составляет от 5 до 95. Значение по умолчанию — 37 (то есть 3/8 пула). Часто используется в сочетании сinnodb_old_blocks_time.Для получения дополнительной информации см. Раздел 17.8.3.3, «Повышение устойчивости буферного пула к сканированию». Для получения информации об управлении буферным пулом, алгоритме и политиках см. Раздел 17.5.1, «Буферный пул».
-
Формат командной строки --innodb-old-blocks-time=#Системная переменная innodb_old_blocks_timeОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 1000Минимальное значение 0Максимальное значение 2**32-1Единица измерения миллисекунды Значения, отличные от нуля, защищают от заполнения данными, которые ссылаются только в течение короткого периода, например, во время . Увеличение этого значения обеспечивает большую защиту от полного сканирования таблиц, мешающего данным, кэшированным в буферном пуле.
Указывает, как долго в миллисекундах блок, вставленный в старый , должен оставаться там после своего первого доступа, прежде чем его можно будет переместить в новый подсписок. Если значение равно 0, блок, вставленный в старый подсписок, немедленно перемещается в новый подсписок при первом обращении к нему, независимо от того, насколько скоро после вставки происходит доступ. Если значение больше 0, блоки остаются в старом подсписке до тех пор, пока доступ не произойдет как минимум через такое количество миллисекунд после первого доступа. Например, значение 1000 приводит к тому, что блоки остаются в старом подсписке в течение 1 секунды после первого доступа, прежде чем они смогут переместиться в новый подсписок.
Значение по умолчанию — 1000.
Эта переменная часто используется в сочетании с
innodb_old_blocks_pct. Для получения дополнительной информации см. Раздел 17.8.3.3, «Повышение устойчивости буферного пула к сканированию». Для получения информации об управлении буферным пулом, алгоритме и политиках см. Раздел 17.5.1, «Буферный пул». -
innodb_online_alter_log_max_sizeФормат командной строки --innodb-online-alter-log-max-size=#Системная переменная innodb_online_alter_log_max_sizeОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 134217728Минимальное значение 65536Максимальное значение 2**64-1Единица измерения байты Указывает верхний предел в байтах размера временных файлов журнала, используемых во время операций для таблиц
InnoDB. Для каждого создаваемого индекса или изменяемой таблицы существует один такой файл журнала. Этот файл журнала хранит данные, вставленные, обновленные или удаленные в таблице во время операции DDL. Временный файл журнала расширяется по мере необходимости на значениеinnodb_sort_buffer_sizeдо максимума, указанногоinnodb_online_alter_log_max_size. Если временный файл журнала превышает верхний предел размера, операцияALTER TABLEзавершается неудачей, и все незафиксированные параллельные операции DML отменяются. Таким образом, большое значение для этого параметра позволяет выполнять больше операций DML во время операции онлайн-DDL, но также продлевает период времени в конце операции DDL, когда таблица заблокирована для применения данных из журнала. -
Формат командной строки --innodb-open-files=#Системная переменная innodb_open_filesОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию -1(обозначает автоматическое изменение размера; не присваивайте это литеральное значение)Минимальное значение 10Максимальное значение 2147483647Указывает максимальное количество файлов, которые
InnoDBмогут быть открыты одновременно. Минимальное значение — 10. Еслиinnodb_file_per_tableотключен, значение по умолчанию равно 300; в противном случае значение по умолчанию равно 300 или параметруtable_open_cache, в зависимости от того, какое из них больше.Предел
innodb_open_filesможет быть установлен во время выполнения с помощью оператораSELECT innodb_set_open_files_limit(, гдеN)N— желаемый пределinnodb_open_files; например:mysql>
SELECT innodb_set_open_files_limit(1000);Оператор выполняет хранимую процедуру, которая устанавливает новый предел. Если процедура выполняется успешно, она возвращает значение вновь установленного предела; в противном случае возвращается сообщение об ошибке.
Не разрешается устанавливать
innodb_open_filesс помощью оператораSET. Чтобы установитьinnodb_open_filesво время выполнения, используйте операторSELECT innodb_set_open_files_limit(, описанный выше.N)Установка
innodb_open_files=defaultне поддерживается. Допускаются только целые значения.Чтобы предотвратить потребление всего предела
innodb_open_filesфайлами, не управляемыми LRU, файлы, не управляемые LRU, ограничены 90 процентами этого предела, что резервирует 10 процентов для файлов, управляемых LRU. -
Формат командной строки --innodb-optimize-fulltext-only[={OFF|ON}]Системная переменная innodb_optimize_fulltext_onlyОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Булево Значение по умолчанию OFFИзменяет способ работы
OPTIMIZE TABLEс таблицамиInnoDB. Предназначен для временного включения во время операций технического обслуживания для таблицInnoDBс индексамиFULLTEXT.По умолчанию
OPTIMIZE TABLEреорганизует данные в таблицы. Когда этот параметр включен,OPTIMIZE TABLEпропускает реорганизацию данных таблицы и вместо этого обрабатывает недавно добавленные, удаленные и обновленные данные токенов для индексовInnoDBFULLTEXT. Для получения дополнительной информации см. Оптимизация полнотекстовых индексов InnoDB.
-
Формат командной строки --innodb-page-cleaners=#Системная переменная innodb_page_cleanersОбласть действия Глобальная Динамическая Нет SET_VARПрименяется ли подсказкаНет Тип Целое число Значение по умолчанию innodb_buffer_pool_instancesМинимальное значение 1Максимальное значение 64Количество потоков очистителей страниц, которые очищают грязные страницы из экземпляров буфера пула. Потоки очистителей страниц выполняют очистку списков вытеснения и LRU-вытеснение. При наличии нескольких потоков очистителей страниц задачи очистки буфера пула для каждого экземпляра буфера пула распределяются между неактивными потоками очистителей страниц. Значение по умолчанию для
innodb_page_cleanersустанавливается в то же значение, что иinnodb_buffer_pool_instances. Если указанное количество потоков очистителей страниц превышает количество экземпляров буфера пула,innodb_page_cleanersавтоматически устанавливается в то же значение, что иinnodb_buffer_pool_instances.Если ваша рабочая нагрузка ограничена ввода/вывода записи при очистке грязных страниц из экземпляров буфера пула в файлы данных и если ваше оборудование имеет доступную емкость, увеличение количества потоков очистителей страниц может помочь улучшить пропускную способность ввода/вывода записи.
Поддержка многопоточных очистителей страниц расширена на фазы завершения и восстановления.
Системный вызов
setpriority()используется на платформах Linux, где он поддерживается, и где пользователь, выполняющий mysqld, имеет разрешение назначить потокамpage_cleanerприоритет над другими потоками MySQL иInnoDB, чтобы помочь очистке страниц соответствовать текущей рабочей нагрузке. Поддержкаsetpriority()показана этим сообщением об инициализацииInnoDB:[Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
Для систем, где запуск и остановка сервера не управляются системой systemd, разрешение пользователя, выполняющего mysqld, можно настроить в
/etc/security/limits.conf. Например, если mysqld выполняется под пользователемmysql, вы можете предоставить разрешение пользователюmysql, добавив эти строки в/etc/security/limits.conf:mysql hard nice -20 mysql soft nice -20
Для управляемых systemd систем это можно добиться, указав
LimitNICE=-20в локальном файле конфигурации systemd. Например, создайте файл с именемoverride.confв/etc/systemd/system/mysqld.service.d/override.confи добавьте эту запись:[Service] LimitNICE=-20
После создания или изменения
override.confперезагрузите конфигурацию systemd, а затем попросите systemd перезапустить службу MySQL:systemctl daemon-reload systemctl restart mysqld # RPM platforms systemctl restart mysql # Debian platforms
Для получения дополнительной информации об использовании локального файла конфигурации systemd, см. Настройка systemd для MySQL.
После предоставления разрешения пользователю, выполняющему mysqld, используйте команду cat для проверки настроенных ограничений
Niceдля процесса mysqld:$> cat /proc/
mysqld_pid/limits | grep nice Max nice priority 18446744073709551596 18446744073709551596 -
Формат командной строки --innodb-page-size=#Системная переменная innodb_page_sizeОбласть действия Глобальная Динамическая Нет SET_VARПрименяется ли подсказкаНет Тип Перечисление Значение по умолчанию 16384Допустимые значения 40968192163843276865536Указывает размер страницы для
InnoDB. Значения можно указывать в байтах или килобайтах. Например, значение размера страницы 16 килобайт можно указать как 16384, 16KB или 16k.innodb_page_sizeможно настроить только перед инициализацией экземпляра MySQL и нельзя изменить после этого. Если значение не указано, экземпляр инициализируется с использованием значения размера страницы по умолчанию. См. Раздел 17.8.1, «Конфигурация запуска InnoDB».Для размеров страниц 32KB и 64KB максимальная длина строки составляет приблизительно 16000 байт.
ROW_FORMAT=COMPRESSEDне поддерживается, когдаinnodb_page_sizeустанавливается в 32KB или 64KB. Дляinnodb_page_size=32KBразмер протяженности составляет 2 МБ. Дляinnodb_page_size=64KBразмер протяженности составляет 4 МБ.innodb_log_buffer_sizeследует установить не менее 16 МБ (по умолчанию 64 МБ) при использовании размеров страниц 32KB или 64KB.Размер страницы по умолчанию 16KB или больше подходит для широкого спектра сценариев, особенно для запросов, включающих сканирование таблиц и операции DML, включающие массовые обновления. Меньшие размеры страниц могут быть эффективнее для сценариев рабочей нагрузки, связанной с множеством мелких записей, где конкуренция может быть проблемой, когда одиночные страницы содержат много строк. Меньшие страницы также могут быть эффективными с устройствами хранения данных, которые обычно используют небольшие размеры блоков. Сохранение размера страницы
InnoDBблизким к размеру блока устройства хранения минимизирует количество неизмененных данных, которые переписываются на диск.Минимальный размер файла для первого файла данных системного табличного пространства (
ibdata1) отличается в зависимости от значенияinnodb_page_size. См. описание параметраinnodb_data_file_pathдля получения дополнительной информации.Экземпляр MySQL, использующий определенный размер страницы
InnoDB, не может использовать файлы данных или журнальные файлы из экземпляра, использующего другой размер страницы.Для общего совета по настройке ввода/вывода см. Раздел 10.5.8, «Оптимизация ввода/вывода InnoDB на диске».
-
Формат командной строки --innodb-parallel-read-threads=#Системная переменная innodb_parallel_read_threadsОбласть действия Сессия Динамическая Да SET_VARПрименяется ли подсказкаНет Тип Целое число Значение по умолчанию (available logical processors / 8), min of 4Минимальное значение 1Максимальное значение 256Определяет количество потоков, которые могут использоваться для параллельного чтения индексов кластеризации. Поддерживается также параллельное сканирование партиций. Параллельные потоки чтения могут улучшить производительность
CHECK TABLE.InnoDBдважды считывает индекс кластеризации во время операцииCHECK TABLE. Второе чтение можно выполнить параллельно. Эта функция не применяется к сканированию вторичных индексов. Переменная сессииinnodb_parallel_read_threadsдолжна быть установлена в значение, большее 1, для выполнения параллельного чтения индексов кластеризации. Фактическое количество потоков, используемых для выполнения параллельного чтения индекса кластеризации, определяется значениемinnodb_parallel_read_threadsили количеством поддеревьев индекса для сканирования, в зависимости от того, какое из них меньше. Страницы, считанные в буфер пула во время сканирования, сохраняются в конце списка LRU буфера пула, чтобы их можно было быстро удалить при необходимости свободных страниц буфера пула.Максимальное количество параллельных потоков чтения (256) — это общее количество потоков для всех подключений клиентов. Если предел потоков достигнут, подключения возвращаются к использованию одного потока. Значение по умолчанию вычисляется путем деления числа доступных логических процессоров системы на 8, с минимальным значением по умолчанию 4.
До MySQL 8.4 значение по умолчанию всегда составляло 4.
-
Командная строка --innodb-print-all-deadlocks[={OFF|ON}]Системная переменная innodb_print_all_deadlocksОбласть действия Глобальная Динамическая Да SET_VARПрименимо ли ограничениеНет Тип Булево Значение по умолчанию OFFПри включении этого параметра информация обо всех тупиковых ситуациях в транзакциях пользователей записывается в журнал ошибок. В противном случае отображается информация только о последнем тупике, используя оператор
SHOW ENGINE INNODB STATUS. Временный тупик не обязательно является проблемой, посколькуInnoDBобнаруживает состояние сразу и отменяет одну из транзакций автоматически. Этот параметр можно использовать для устранения неполадок, если приложение не имеет соответствующей логики обработки ошибок для обнаружения отмены и повторной попытки операции. Большое количество тупиковых ситуаций может указывать на необходимость перестройки транзакций, которые выдают илиSELECT ... FOR UPDATEоператоры для нескольких таблиц, чтобы каждая транзакция обращалась к таблицам в одном и том же порядке, тем самым избегая тупиков.Для получения дополнительной информации см. раздел 17.7.5, «Тупики в InnoDB».
-
Командная строка --innodb-print-ddl-logs[={OFF|ON}]Системная переменная innodb_print_ddl_logsОбласть действия Глобальная Динамическая Да SET_VARПрименимо ли ограничениеНет Тип Булево Значение по умолчанию OFFВключение этого параметра заставляет MySQL записывать логи DDL в
stderr. Для получения дополнительной информации см. Просмотр логов DDL. -
Командная строка --innodb-purge-batch-size=#Системная переменная innodb_purge_batch_sizeОбласть действия Глобальная Динамическая Да SET_VARПрименимо ли ограничениеНет Тип Целое число Значение по умолчанию 300Минимальное значение 1Максимальное значение 5000Определяет количество страниц журнала отката, которые обрабатываются и обрабатываются в одной группе системой очистки. В многопоточной конфигурации очистки координатор потока очистки делит
innodb_purge_batch_sizeнаinnodb_purge_threadsи назначает это количество страниц каждому потоку очистки. Переменнаяinnodb_purge_batch_sizeтакже определяет количество страниц журнала отката, которые освобождаются системой очистки после каждой итерации в 128.Параметр
innodb_purge_batch_sizeпредназначен для повышения производительности в сочетании с настройкойinnodb_purge_threads. Большинству пользователей не нужно изменять значениеinnodb_purge_batch_sizeот его значения по умолчанию.Для получения дополнительной информации см. раздел 17.8.9, «Настройка очистки».
-
Командная строка --innodb-purge-threads=#Системная переменная innodb_purge_threadsОбласть действия Глобальная Динамическая Нет SET_VARПрименимо ли ограничениеНет Тип Целое число Значение по умолчанию 1 if # of available logical processors is <= 16; otherwise 4Минимальное значение 1Максимальное значение 32Количество фоновых потоков, выделенных для операции
InnoDB. Увеличение значения создает дополнительные потоки очистки, что может повысить эффективность на системах, где операции выполняются для нескольких таблиц.Для получения дополнительной информации см. раздел 17.8.9, «Настройка очистки».
-
innodb_purge_rseg_truncate_frequencyКомандная строка --innodb-purge-rseg-truncate-frequency=#Системная переменная innodb_purge_rseg_truncate_frequencyОбласть действия Глобальная Динамическая Да SET_VARПрименимо ли ограничениеНет Тип Целое число Значение по умолчанию 128Минимальное значение 1Максимальное значение 128Определяет частоту, с которой система очистки освобождает сегменты отката, в терминах количества вызовов очистки. Таблицу undo нельзя усечь, пока её сегменты отката не будут освобождены. Обычно система очистки освобождает сегменты отката один раз каждые 128 вызовов очистки. Значение по умолчанию составляет 128. Уменьшение этого значения увеличивает частоту, с которой поток очистки освобождает сегменты отката.
innodb_purge_rseg_truncate_frequencyпредназначен для использования сinnodb_undo_log_truncate. Для получения дополнительной информации см. Усечение таблиц отката. -
Командная строка --innodb-random-read-ahead[={OFF|ON}]Системная переменная innodb_random_read_aheadОбласть действия Глобальная Динамическая Да SET_VARПрименимо ли ограничениеНет Тип Булево Значение по умолчанию OFFВключает случайный метод для оптимизации ввода-вывода.
Подробности о соображениях производительности для различных типов запросов предварительной выборки см. в разделе 17.8.3.4, «Настройка предварительной выборки буфера пула InnoDB (предварительная выборка)». Советы по общей настройке ввода-вывода см. в разделе 10.5.8, «Оптимизация ввода-вывода InnoDB на диске».
-
Формат командной строки --innodb-read-ahead-threshold=#Системная переменная innodb_read_ahead_thresholdОбласть действия Глобальная Динамическая Да Применимо для подсказки SET_VARНет Тип Целое число Значение по умолчанию 56Минимальное значение 0Максимальное значение 64Управляет чувствительностью линейного алгоритма, который
InnoDBиспользует для предварительной выборки страниц в буферный пул. ЕслиInnoDBчитает не менееinnodb_read_ahead_thresholdстраниц последовательно из одного диапазона (64 страницы), он инициирует асинхронное чтение всего следующего диапазона. Допустимый диапазон значений — от 0 до 64. Значение 0 отключает предварительное чтение. Для значения по умолчанию 56,InnoDBдолжен прочитать не менее 56 страниц последовательно из диапазона, чтобы инициировать асинхронное чтение следующего диапазона.Знание того, сколько страниц читается через механизм предварительного чтения и сколько из этих страниц извлекается из буферного пула без доступа к ним, может быть полезно при тонкой настройке значения
innodb_read_ahead_threshold. Вывод командыSHOW ENGINE INNODB STATUSотображает информацию о счётчиках из глобальных системных переменныхInnodb_buffer_pool_read_aheadиInnodb_buffer_pool_read_ahead_evicted, которые соответственно сообщают о количестве страниц, загруженных в буферный пул запросами предварительного чтения, и количестве таких страниц, извлечённых из буферного пула без доступа к ним. Системные переменные сообщают о глобальных значениях с момента последнего перезапуска сервера.SHOW ENGINE INNODB STATUSтакже показывает скорость чтения страниц предварительного чтения и скорость извлечения таких страниц без доступа к ним. Средние значения за секунду основаны на статистике, собранной с момента последнего выполненияSHOW ENGINE INNODB STATUS, и отображаются в разделеBUFFER POOL AND MEMORYвывода командыSHOW ENGINE INNODB STATUS.Дополнительную информацию см. в Разделе 17.8.3.4 «Настройка предварительной выборки буферного пула InnoDB (предварительное чтение)». Советы по общей настройке ввода-вывода см. в Разделе 10.5.8 «Оптимизация ввода-вывода на диске InnoDB».
-
Формат командной строки --innodb-read-io-threads=#Системная переменная innodb_read_io_threadsОбласть действия Глобальная Динамическая Нет Применимо для подсказки SET_VARНет Тип Целое число Значение по умолчанию (available logical processors / 2), min of 4Минимальное значение 1Максимальное значение 64Количество потоков ввода-вывода для операций чтения в
InnoDB. Его аналогом для потоков записи являетсяinnodb_write_io_threads. Дополнительную информацию см. в Разделе 17.8.5 «Настройка количества фоновых потоков ввода-вывода InnoDB». Советы по общей настройке ввода-вывода см. в Разделе 10.5.8 «Оптимизация ввода-вывода на диске InnoDB». Значение по умолчанию равно количеству доступных логических процессоров системы, делённому на 2, с минимальным значением по умолчанию 4.Перед MySQL 8.4 значение по умолчанию всегда было 4.
ПримечаниеВ системах Linux запуск нескольких серверов MySQL (обычно более 12) с параметрами по умолчанию для
innodb_read_io_threads,innodb_write_io_threadsи настройкой Linuxaio-max-nrможет превысить системные ограничения. В идеале, увеличьте значениеaio-max-nr; в качестве обходного решения вы можете уменьшить значения для одной или обеих переменных MySQL. -
Формат командной строки --innodb-read-only[={OFF|ON}]Системная переменная innodb_read_onlyОбласть действия Глобальная Динамическая Нет Применимо для подсказки SET_VARНет Тип Булево Значение по умолчанию OFFЗапускает
InnoDBв режиме только для чтения. Для распределения баз данных или наборов данных на носителях только для чтения. Также может использоваться в хранилищах данных для совместного использования одного каталога данных между несколькими экземплярами. Дополнительную информацию см. в Разделе 17.8.2 «Настройка InnoDB для работы только с чтением».Включение
innodb_read_onlyпредотвращает создание и удаление таблиц для всех типов хранилищ данных, а не толькоInnoDB. Операции создания и удаления таблиц для любого типа хранилища данных изменяют таблицы словаря данных в базе данныхmysql, но эти таблицы используют тип хранилища данныхInnoDBи не могут быть изменены, когда включеноinnodb_read_only. То же самое относится и к другим операциям с таблицами, требующим изменения таблиц словаря данных. Примеры:Если системная переменная
innodb_read_onlyвключена, операцияANALYZE TABLEможет завершиться неудачей, так как она не может обновить таблицы статистики в словаре данных, которые используютInnoDB. Для операцийANALYZE TABLE, которые обновляют распределение ключей, ошибка может произойти даже если операция обновляет саму таблицу (например, если это таблицаMyISAM). Для получения обновлённых статистических данных распределения установитеinformation_schema_stats_expiry=0.ALTER TABLEзавершается неудачей, потому что она обновляет обозначение типа хранилища данных, которое хранится в словаре данных.tbl_nameENGINE=engine_name
Кроме того, другие таблицы в базе данных
mysqlиспользуют тип хранилища данныхInnoDB. Делание этих таблиц только для чтения приводит к ограничениям на операции, которые их изменяют. Примеры:Управление учётными записями, такие как
CREATE USERиGRANT, завершаются неудачей, потому что таблицы разрешений используютInnoDB.Операции управления плагинами, такие как
INSTALL PLUGINиUNINSTALL PLUGIN, завершаются неудачей, потому что таблица системыmysql.pluginиспользует тип хранилища данныхInnoDB.Операции управления загружаемыми функциями, такие как
CREATE FUNCTIONиDROP FUNCTION, завершаются неудачей, потому что таблица системыmysql.funcиспользует тип хранилища данныхInnoDB.
-
Формат командной строки --innodb-redo-log-archive-dirsСистемная переменная innodb_redo_log_archive_dirsОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Строка Значение по умолчанию NULLОпределяет помеченные каталоги, в которых могут быть созданы архивные файлы журнала redo. Можно определить несколько помеченных каталогов в списке, разделенном точкой с запятой. Например:
innodb_redo_log_archive_dirs='label1:/backups1;label2:/backups2'
Метка может быть любой строкой символов, за исключением двоеточий (:), которые не допускаются. Пустая метка также допускается, но в этом случае двоеточие (:) все равно необходимо.
Необходимо указать путь, и каталог должен существовать. Путь может содержать двоеточия (':'), но точки с запятой (;) не допускаются.
-
Формат командной строки --innodb-redo-log-capacity=#Системная переменная innodb_redo_log_capacityОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 104857600Минимальное значение 8388608Максимальное значение 549755813888Единица измерения байты Определяет объем дискового пространства, занимаемого файлами журнала redo.
innodb_redo_log_capacityзаменяет переменныеinnodb_log_files_in_groupиinnodb_log_file_size, которые игнорируются, если определенаinnodb_redo_log_capacity.Если
innodb_redo_log_capacityне определена, и если ниinnodb_log_file_size, ниinnodb_log_files_in_groupне определены, то используется значение по умолчаниюinnodb_redo_log_capacity.Если
innodb_redo_log_capacityне определена, и еслиinnodb_log_file_sizeи/илиinnodb_log_files_in_groupопределена, то емкость журнала redo InnoDB вычисляется как (innodb_log_files_in_group * innodb_log_file_size). Этот расчет не изменяет значение неиспользуемой настройкиinnodb_redo_log_capacity.Переменная состояния сервера
Innodb_redo_log_capacity_resizedуказывает общую емкость журнала redo для всех файлов журнала redo.Если сервер запущен с
--innodb-dedicated-server, значениеinnodb_redo_log_capacityустанавливается автоматически, если оно не определено явно. Для получения дополнительной информации см. Раздел 17.8.12, «Включение автоматической конфигурации InnoDB для выделенного сервера MySQL».Для получения дополнительной информации см. Раздел 17.6.5, «Журнал redo».
-
Формат командной строки --innodb-redo-log-encrypt[={OFF|ON}]Системная переменная innodb_redo_log_encryptОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Логическое Значение по умолчанию OFFУправляет шифрованием данных журнала redo для таблиц, зашифрованных с помощью функции шифрования данных в состоянии покоя
InnoDBdata-at-rest encryption feature. Шифрование данных журнала redo отключено по умолчанию. Для получения дополнительной информации см. Шифрование журнала redo. -
Формат командной строки --innodb-replication-delay=#Системная переменная innodb_replication_delayОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 4294967295Единица измерения миллисекунды Задержка потока репликации в миллисекундах на сервере реплики, если достигнут предел
innodb_thread_concurrency. -
Формат командной строки --innodb-rollback-on-timeout[={OFF|ON}]Системная переменная innodb_rollback_on_timeoutОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Логическое Значение по умолчанию OFFInnoDBтолько последнее утверждение при тайм-ауте транзакции по умолчанию. Если указана--innodb-rollback-on-timeout, тайм-аут транзакции приводит к тому, чтоInnoDBпрерывается и откатывает всю транзакцию.Для получения дополнительной информации см. Раздел 17.20.5, «Обработка ошибок InnoDB».
-
Формат командной строки --innodb-rollback-segments=#Системная переменная innodb_rollback_segmentsОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 128Минимальное значение 1Максимальное значение 128innodb_rollback_segmentsопределяет количество, выделяемых для каждого пространства таблиц отката и глобального временного пространства таблиц для транзакций, которые генерируют записи отката. Количество транзакций, которые поддерживает каждый сегмент отката, зависит от размера страницыInnoDBи количества журналов отката, назначенных каждой транзакции. Для получения дополнительной информации см. Раздел 17.6.6, «Журналы отката».Для получения дополнительной информации см. Раздел 17.3, «Многоверсионность InnoDB». Для получения информации о пространствах таблиц отката см. Раздел 17.6.3.4, «Пространства таблиц отката».
-
innodb_saved_page_number_debugФормат командной строки --innodb-saved-page-number-debug=#Системная переменная innodb_saved_page_number_debugОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 2**32-1Сохраняет номер страницы. Установка параметра
innodb_fil_make_page_dirty_debugделает страницу, определеннуюinnodb_saved_page_number_debug, грязной. Параметрinnodb_saved_page_number_debugдоступен только в том случае, если поддержка отладки скомпилирована с использованием параметраWITH_DEBUGCMake.
-
Формат командной строки --innodb-segment-reserve-factor=#Системная переменная innodb_segment_reserve_factorОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Числовая Значение по умолчанию 12.5Минимальное значение 0.03Максимальное значение 40Определяет процент страниц сегментов табличного пространства, зарезервированных как пустые страницы. Настройка применима к табличным пространствам file-per-table и общим табличным пространствам. Значение по умолчанию для
innodb_segment_reserve_factorсоставляет 12,5%, что соответствует проценту зарезервированных страниц в предыдущих выпусках MySQL.Для получения дополнительной информации см. Настройка процента зарезервированных страниц сегмента файла.
-
Формат командной строки --innodb-sort-buffer-size=#Системная переменная innodb_sort_buffer_sizeОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Целочисленная Значение по умолчанию 1048576Минимальное значение 65536Максимальное значение 67108864Единица измерения байты Эта переменная определяет величину, на которую расширяется временный файл журнала при записи параллельных операций DML во время операции, а также размер буфера чтения и буфера записи временного файла журнала.
Для получения дополнительной информации см. Раздел 17.12.3, «Требования к дисковому пространству для Online DDL».
-
Формат командной строки --innodb-spin-wait-delay=#Системная переменная innodb_spin_wait_delayОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целочисленная Значение по умолчанию 6Минимальное значение 0Максимальное значение 1000Максимальная задержка между опросами блокировки. Низкоуровневая реализация этого механизма варьируется в зависимости от сочетания оборудования и операционной системы, поэтому задержка не соответствует фиксированному интервалу времени.
Может использоваться в сочетании с переменной
innodb_spin_wait_pause_multiplierдля более точного управления продолжительностью задержек опроса спин-блокировок.Для получения дополнительной информации см. Раздел 17.8.8, «Настройка опроса спин-блокировок».
-
innodb_spin_wait_pause_multiplierФормат командной строки --innodb-spin-wait-pause-multiplier=#Системная переменная innodb_spin_wait_pause_multiplierОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целочисленная Значение по умолчанию 50Минимальное значение 0Максимальное значение 100Определяет значение множителя, используемое для определения количества инструкций PAUSE в циклах ожидания со спином, которые происходят, когда поток ожидает приобретения мьютекса или rw-блокировки.
Для получения дополнительной информации см. Раздел 17.8.8, «Настройка опроса спин-блокировок».
-
Формат командной строки --innodb-stats-auto-recalc[={OFF|ON}]Системная переменная innodb_stats_auto_recalcОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Булевый Значение по умолчанию ONЗаставляет
InnoDBавтоматически пересчитывать после существенного изменения данных в таблице. Пороговое значение составляет 10% строк в таблице. Эта настройка применяется к таблицам, созданным при включенной опцииinnodb_stats_persistent. Автоматический пересчет статистики также может быть настроен путем указанияSTATS_AUTO_RECALC=1в оператореCREATE TABLEилиALTER TABLE. Объем данных, используемый для получения статистики, контролируется переменнойinnodb_stats_persistent_sample_pages.Для получения дополнительной информации см. Раздел 17.8.10.1, «Настройка параметров постоянной статистики оптимизатора».
-
innodb_stats_include_delete_markedФормат командной строки --innodb-stats-include-delete-marked[={OFF|ON}]Системная переменная innodb_stats_include_delete_markedОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Булевый Значение по умолчанию OFFПо умолчанию,
InnoDBсчитывает неподтвержденные данные при вычислении статистики. В случае неподтвержденной транзакции, которая удаляет строки из таблицы,InnoDBисключает записи, помеченные как удаленные, при вычислении оценок строк и статистики индексов, что может привести к неоптимальным планам выполнения для других транзакций, которые одновременно работают с таблицей, используя уровень изоляции транзакций, отличный отREAD UNCOMMITTED. Чтобы избежать этого сценария, можно включитьinnodb_stats_include_delete_marked, чтобы гарантировать, чтоInnoDBвключает записи, помеченные как удаленные, при вычислении постоянной статистики оптимизатора.Когда включен
innodb_stats_include_delete_marked,ANALYZE TABLEучитывает записи, помеченные как удаленные, при пересчете статистики.innodb_stats_include_delete_marked— это глобальная настройка, которая влияет на все таблицыInnoDB. Она применима только к постоянной статистике оптимизатора.Для получения дополнительной информации см. Раздел 17.8.10.1, «Настройка параметров постоянной статистики оптимизатора».
-
Формат командной строки --innodb-stats-method=valueСистемная переменная innodb_stats_methodОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Перечисление Значение по умолчанию nulls_equalДопустимые значения nulls_equalnulls_unequalnulls_ignoredКак сервер обрабатывает значения
NULLпри сборе информации о распределении значений индекса для таблицInnoDB. Разрешенные значения —nulls_equal,nulls_unequalиnulls_ignored. Дляnulls_equalвсе значения индексаNULLсчитаются равными и образуют одну группу значений размером, равным количеству значенийNULL. Дляnulls_unequalзначенияNULLсчитаются неравными, и каждое значениеNULLобразует отдельную группу значений размером 1. Дляnulls_ignoredзначенияNULLигнорируются.Используемый метод генерации статистики таблицы влияет на то, как оптимизатор выбирает индексы для выполнения запросов, как описано в разделе 10.3.8, «Сбор статистики индексов InnoDB и MyISAM».
-
Формат командной строки --innodb-stats-on-metadata[={OFF|ON}]Системная переменная innodb_stats_on_metadataОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Булево Значение по умолчанию OFFЭтот параметр применяется только тогда, когда оптимизатор настроен на неперсистентное хранение. Статистика оптимизатора не сохраняется на диск, когда
innodb_stats_persistentотключено или когда отдельные таблицы создаются или изменяются с помощьюSTATS_PERSISTENT=0. Дополнительную информацию см. в разделе 17.8.10.2, «Настройка параметров неперсистентной статистики оптимизатора».Если
innodb_stats_on_metadataвключено,InnoDBобновляет неперсистентные данные при выполнении метаданных, таких какSHOW TABLE STATUS, или при обращении к таблицам Information SchemaTABLESилиSTATISTICS. (Эти обновления аналогичны тому, что происходит приANALYZE TABLE.) При отключенииInnoDBне обновляет статистику при выполнении этих операций. Отключение параметра может улучшить скорость доступа к схемам с большим количеством таблиц или индексов. Также может повысить стабильность при работе с запросами, которые включают в себяInnoDBтаблицы.Для изменения настройки выполните оператор
SET GLOBAL innodb_stats_on_metadata=, гдеmode— это либоmodeONилиOFF(или1или0). Изменение настройки требует привилегий для установки глобальных системных переменных (см. раздел 7.1.9.1, «Привилегии на системные переменные») и немедленно влияет на работу всех подключений. -
Формат командной строки --innodb-stats-persistent[={OFF|ON}]Системная переменная innodb_stats_persistentОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Булево Значение по умолчанию ONУказывает, сохраняются ли данные статистики индекса
InnoDBна диск. В противном случае статистика может часто пересчитываться, что может привести к вариациям в результатах. Этот параметр сохраняется вместе с каждой таблицей при ее создании. Можно установитьinnodb_stats_persistentна глобальном уровне до создания таблицы или использовать ключевое словоSTATS_PERSISTENTоператоровCREATE TABLEиALTER TABLEдля переопределения системной настройки и настройки постоянной статистики для отдельных таблиц.Дополнительную информацию см. в разделе 17.8.10.1, «Настройка параметров постоянной статистики оптимизатора».
-
innodb_stats_persistent_sample_pagesФормат командной строки --innodb-stats-persistent-sample-pages=#Системная переменная innodb_stats_persistent_sample_pagesОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Целое число Значение по умолчанию 20Минимальное значение 1Максимальное значение 18446744073709551615Количество индексных страниц для выборки при оценке эффективности и других параметров для индексированного столбца, таких как те, которые вычисляются с помощью
ANALYZE TABLE. Увеличение значения улучшает точность статистики индекса, что может улучшить производительность, за счет увеличения I/O во время выполненияANALYZE TABLEдля таблицыInnoDB. Дополнительную информацию см. в разделе 17.8.10.1, «Настройка параметров постоянной статистики оптимизатора».ПримечаниеУказание высокого значения для
innodb_stats_persistent_sample_pagesможет привести к длительному времени выполненияANALYZE TABLE. Для оценки количества страниц базы данных, доступных дляANALYZE TABLE, см. раздел 17.8.10.3, «Оценка сложности ANALYZE TABLE для таблиц InnoDB».innodb_stats_persistent_sample_pagesприменяется только в том случае, еслиinnodb_stats_persistentвключен для таблицы; когдаinnodb_stats_persistentотключен, применяетсяinnodb_stats_transient_sample_pages.
-
innodb_stats_transient_sample_pagesФормат командной строки --innodb-stats-transient-sample-pages=#Системная переменная innodb_stats_transient_sample_pagesОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 8Минимальное значение 1Максимальное значение 18446744073709551615Количество индексов для выборки при оценке и других для индексированного столбца, таких как те, которые вычисляются с помощью
ANALYZE TABLE. Значение по умолчанию равно 8. Увеличение значения повышает точность статистики индексов, что может улучшить производительность за счет увеличения операций ввода-вывода при открытии таблицыInnoDBили пересчете статистики. Для получения дополнительной информации см. Раздел 17.8.10.2, «Настройка параметров статистики оптимизатора без сохранения».ПримечаниеУстановка высокого значения для
innodb_stats_transient_sample_pagesможет привести к длительному времени выполненияANALYZE TABLE. Чтобы оценить количество страниц базы данных, к которым обращаетсяANALYZE TABLE, см. Раздел 17.8.10.3, «Оценка сложности ANALYZE TABLE для таблиц InnoDB».innodb_stats_transient_sample_pagesприменяется только тогда, когдаinnodb_stats_persistentотключен для таблицы; когдаinnodb_stats_persistentвключен, вместо этого применяетсяinnodb_stats_persistent_sample_pages. Заменяетinnodb_stats_sample_pages, который был удален в MySQL 8.0. Для получения дополнительной информации см. Раздел 17.8.10.2, «Настройка параметров статистики оптимизатора без сохранения». -
Формат командной строки --innodb-status-output[={OFF|ON}]Системная переменная innodb_status_outputОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Логическое Значение по умолчанию OFFВключает или отключает периодический вывод для стандартного монитора
InnoDB. Также используется в сочетании сinnodb_status_output_locksдля включения или отключения периодического вывода для монитора блокировокInnoDB. Для получения дополнительной информации см. Раздел 17.17.2, «Включение мониторов InnoDB». -
Формат командной строки --innodb-status-output-locks[={OFF|ON}]Системная переменная innodb_status_output_locksОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Логическое Значение по умолчанию OFFВключает или отключает монитор блокировок
InnoDB. При включении монитор блокировокInnoDBвыводит дополнительную информацию о блокировках в выводеSHOW ENGINE INNODB STATUSи в периодическом выводе, записываемом в журнал ошибок MySQL. Периодический вывод для монитора блокировокInnoDBпечатается как часть вывода стандартного монитораInnoDB. Поэтому стандартный мониторInnoDBдолжен быть включен, чтобы монитор блокировокInnoDBпериодически выводил данные в журнал ошибок MySQL. Для получения дополнительной информации см. Раздел 17.17.2, «Включение мониторов InnoDB». -
Формат командной строки --innodb-strict-mode[={OFF|ON}]Системная переменная innodb_strict_modeОбласть видимости Глобальная, сеанса Динамическая Да SET_VARПодсказка применяетсяНет Тип Логическое Значение по умолчанию ONКогда
innodb_strict_modeвключен,InnoDBвозвращает ошибки, а не предупреждения при проверке на наличие недопустимых или несовместимых параметров таблицы.Он проверяет, что параметры
KEY_BLOCK_SIZE,ROW_FORMAT,DATA DIRECTORY,TEMPORARYиTABLESPACEсовместимы друг с другом и другими настройками.innodb_strict_mode=ONтакже включает проверку размера строки при создании или изменении таблицы, чтобы предотвратить сбойINSERTилиUPDATEиз-за слишком большого размера записи для выбранного размера страницы.Вы можете включить или отключить
innodb_strict_modeв командной строке при запускеmysqldили в файле конфигурации MySQL. Вы также можете включить или отключитьinnodb_strict_modeво время выполнения с помощью оператораSET [GLOBAL|SESSION] innodb_strict_mode=, гдеmode- это либоmodeON, либоOFF. Изменение настройкиGLOBALтребует прав, достаточных для установки глобальных системных переменных (см. Раздел 7.1.9.1, «Права на системные переменные»), и влияет на работу всех клиентов, которые подключаются позже. Любой клиент может изменить настройкуSESSIONдляinnodb_strict_mode, и эта настройка влияет только на этого клиента.Установка значения сеанса этой системной переменной является ограниченной операцией. Пользователь сеанса должен иметь права, достаточные для установки ограниченных переменных сеанса. См. Раздел 7.1.9.1, «Права на системные переменные».
-
Формат командной строки --innodb-sync-array-size=#Системная переменная innodb_sync_array_sizeОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 1Минимальное значение 1Максимальное значение 1024Определяет размер массива ожидания мьютекса/блокировки. Увеличение значения разделяет внутреннюю структуру данных, используемую для координации потоков, для повышения параллелизма в рабочих нагрузках с большим количеством ожидающих потоков. Эта настройка должна быть настроена при запуске экземпляра MySQL и не может быть изменена позже. Увеличение значения рекомендуется для рабочих нагрузок, которые часто создают большое количество ожидающих потоков, обычно больше 768.
-
Формат командной строки --innodb-sync-spin-loops=#Системная переменная innodb_sync_spin_loopsОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 30Минимальное значение 0Максимальное значение 4294967295Количество раз, которое поток ожидает освобождения мьютекса
InnoDB, прежде чем поток будет приостановлен.
-
Формат командной строки --innodb-sync-debug[={OFF|ON}]Переменная системы innodb_sync_debugОбласть действия Глобальная Динамическая Нет SET_VARПрименяется ли подсказкаНет Тип Булево Значение по умолчанию OFFВключает проверку синхронизации отладки для движка хранения
InnoDB. Этот параметр доступен только в том случае, если поддержка отладки скомпилирована с помощью опцииWITH_DEBUGCMake. -
Формат командной строки --innodb-table-locks[={OFF|ON}]Переменная системы innodb_table_locksОбласть действия Глобальная, сессия Динамическая Да SET_VARПрименяется ли подсказкаНет Тип Булево Значение по умолчанию ONЕсли
autocommit = 0,InnoDBучитываетLOCK TABLES; MySQL не возвращается изLOCK TABLES ... WRITE, пока все другие потоки не освободят все свои блокировки для таблицы. Значение по умолчаниюinnodb_table_locksравно 1, что означает, чтоLOCK TABLESприводит к внутреннему блокированию таблицы InnoDB, еслиautocommit = 0.innodb_table_locks = 0не оказывает влияния на таблицы, заблокированные явно с помощьюLOCK TABLES ... WRITE. Оно оказывает влияние на таблицы, заблокированные для чтения или записи с помощьюLOCK TABLES ... WRITEнеявно (например, через триггеры) или с помощьюLOCK TABLES ... READ.Для получения дополнительной информации см. Раздел 17.7, «InnoDB Блокировка и модель транзакций».
-
Формат командной строки --innodb-temp-data-file-path=file_nameПеременная системы innodb_temp_data_file_pathОбласть действия Глобальная Динамическая Нет SET_VARПрименяется ли подсказкаНет Тип Строка Значение по умолчанию ibtmp1:12M:autoextendОпределяет относительный путь, имя, размер и атрибуты файлов данных временного глобального пространства таблиц. Глобальное временное пространство таблиц хранит сегменты отката для изменений, внесенных в созданные пользователем временные таблицы.
Если для
innodb_temp_data_file_pathне указано значение, по умолчанию создается один автоматически расширяющийся файл данных с именемibtmp1в каталогеinnodb_data_home_dir. Начальный размер файла немного больше 12 МБ.Синтаксис спецификации файла данных глобального временного пространства таблиц включает имя файла, размер файла и
autoextendиmaxатрибуты:file_name:file_size[:autoextend[:max:max_file_size]]Файл данных глобального временного пространства таблиц не может иметь то же имя, что и другой файл данных
InnoDB. Любое невозможность или ошибка при создании файла данных глобального временного пространства таблиц обрабатывается как критическая ошибка, и запуск сервера запрещается.Размеры файлов задаются в КБ, МБ или ГБ путем добавления
K,MилиGк значению размера. Сумма размеров файлов должна быть немного больше 12 МБ.Предел размера отдельных файлов определяется операционной системой. Размер файла может быть больше 4 ГБ на операционных системах, поддерживающих большие файлы. Использование сырых разделов дисков для файлов данных глобального временного пространства таблиц не поддерживается.
Атрибуты
autoextendиmaxмогут использоваться только для файла данных, указанного последним в настройкеinnodb_temp_data_file_path. Например:[mysqld] innodb_temp_data_file_path=ibtmp1:50M;ibtmp2:12M:autoextend:max:500M
Опция
autoextendзаставляет файл данных автоматически увеличивать свой размер, когда в нем закончится свободное место. Приращениеautoextendпо умолчанию составляет 64 МБ. Чтобы изменить приращение, измените значение переменнойinnodb_autoextend_increment.Путь к каталогу файлов данных глобального временного пространства таблиц формируется путем конкатенации путей, определенных
innodb_data_home_dirиinnodb_temp_data_file_path.Перед запуском
InnoDBв режиме только для чтения, установитеinnodb_temp_data_file_pathв расположение за пределами каталога данных. Путь должен быть относительным к каталогу данных. Например:--innodb-temp-data-file-path=../../../tmp/ibtmp1:12M:autoextend
Дополнительную информацию см. в разделе «Глобальное временное пространство таблиц».
-
Формат командной строки --innodb-temp-tablespaces-dir=dir_nameПеременная системы innodb_temp_tablespaces_dirОбласть действия Глобальная Динамическая Нет SET_VARПрименяется ли подсказкаНет Тип Имя каталога Значение по умолчанию #innodb_tempОпределяет местоположение, где
InnoDBсоздает пул временных пространств таблиц сессии при запуске. По умолчанию это каталог#innodb_tempв каталоге данных. Разрешается полностью квалифицированный путь или путь, относительный к каталогу данных.Временные пространства таблиц сессии всегда хранят созданные пользователем временные таблицы и внутренние временные таблицы, созданные оптимизатором с использованием
InnoDB. (Ранее движок хранения на диске для внутренних временных таблиц определялся переменной системы, которая больше не поддерживается. См. Движок хранения на диске для внутренних временных таблиц.)Дополнительную информацию см. в разделе «Временные пространства таблиц сессии».
-
Командная строка --innodb-thread-concurrency=#Системная переменная innodb_thread_concurrencyОбласть действия Глобальная Динамическая Да SET_VARПрименимоНет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 1000Определяет максимальное количество потоков, разрешенных внутри
InnoDB. Значение 0 (по умолчанию) интерпретируется как бесконечная одновременность (без ограничения). Эта переменная предназначена для оптимизации производительности в системах с высокой одновременностью.InnoDBпытается поддерживать количество потоков внутриInnoDBменьше или равно пределуinnodb_thread_concurrency. Потоки, ожидающие блокировок, не учитываются при подсчете одновременно выполняемых потоков.Правильное значение зависит от рабочей нагрузки и вычислительной среды. Установите эту переменную, если ваш экземпляр MySQL разделяет ресурсы процессора с другими приложениями или если ваша рабочая нагрузка или количество одновременных пользователей растет. Протестируйте различные значения, чтобы определить настройку, обеспечивающую наилучшую производительность.
innodb_thread_concurrency- динамическая переменная, что позволяет экспериментировать с различными настройками в живой тестовой системе. Если какая-то настройка имеет плохую производительность, вы можете быстро установитьinnodb_thread_concurrencyобратно в 0.Используйте следующие рекомендации, чтобы найти и поддерживать подходящую настройку:
Если количество одновременных пользовательских потоков для рабочей нагрузки постоянно невелико и не влияет на производительность, установите
innodb_thread_concurrency=0(без ограничений).Если ваша рабочая нагрузка постоянно высокая или периодически возрастает, установите значение
innodb_thread_concurrencyи настройте его, пока не найдете количество потоков, которое обеспечивает наилучшую производительность. Например, предположим, что ваша система обычно имеет от 40 до 50 пользователей, но периодически количество увеличивается до 60, 70 или более. После тестирования вы обнаруживаете, что производительность в основном остается стабильной при ограничении в 80 одновременных пользователей. В этом случае установитеinnodb_thread_concurrencyна 80.-
Если вы не хотите, чтобы
InnoDBиспользовал больше определенного числа виртуальных процессоров для пользовательских потоков (например, 20 виртуальных процессоров), установитеinnodb_thread_concurrencyна это число (или возможно меньше, в зависимости от результатов тестирования производительности). Если ваша цель состоит в изоляции MySQL от других приложений, рассмотрите возможность привязки процессаmysqldисключительно к виртуальным процессорам. Однако имейте в виду, что эксклюзивная привязка может привести к не оптимальному использованию аппаратных ресурсов, если процессmysqldне постоянно занят. В этом случае вы можете привязать процессmysqldк виртуальным процессорам, но разрешить другим приложениям использовать некоторые или все виртуальные процессоры.ПримечаниеС точки зрения операционной системы, использование решения для управления ресурсами для управления тем, как время процессора делится между приложениями, может быть предпочтительнее, чем привязка процесса
mysqld. Например, вы можете назначить 90% времени виртуального процессора определенному приложению, в то время как другие критические процессы не выполняются, и масштабировать это значение до 40%, когда другие критические процессы выполняются. В некоторых случаях оптимальное значение
innodb_thread_concurrencyможет быть меньше, чем количество виртуальных процессоров.Слишком высокое значение
innodb_thread_concurrencyможет привести к снижению производительности из-за увеличения конкуренции за системные внутренние ресурсы и ресурсы.Регулярно отслеживайте и анализируйте свою систему. Изменения в рабочей нагрузке, количестве пользователей или вычислительной среде могут потребовать корректировки значения
innodb_thread_concurrency.
Значение 0 отключает счетчики
queries inside InnoDBиqueries in queueв разделеROW OPERATIONSвыводаSHOW ENGINE INNODB STATUS.Для получения дополнительной информации см. Раздел 17.8.4, «Настройка одновременности потоков для InnoDB».
-
Командная строка --innodb-thread-sleep-delay=#Системная переменная innodb_thread_sleep_delayОбласть действия Глобальная Динамическая Да SET_VARПрименимоНет Тип Целое число Значение по умолчанию 10000Минимальное значение 0Максимальное значение 1000000Единица измерения микросекунды Сколько времени
InnoDBпотоки спят перед присоединением к очередиInnoDB, в микросекундах. Значение по умолчанию составляет 10000. Значение 0 отключает ожидание. Можно установитьinnodb_adaptive_max_sleep_delayна максимальное разрешенное значение дляinnodb_thread_sleep_delay, иInnoDBавтоматически настраиваетinnodb_thread_sleep_delayвверх или вниз в зависимости от текущей активности планирования потоков. Эта динамическая настройка помогает механизму планирования потоков работать гладко в периоды небольшой загрузки системы или в периоды работы близкой к полной загрузке.Для получения более подробной информации см. Раздел 17.8.4, «Настройка одновременности потоков для InnoDB».
-
Формат командной строки --innodb-tmpdir=dir_nameСистемная переменная innodb_tmpdirОбласть действия Глобальная, Сеанс Динамическая Да SET_VARПрименяется ли подсказкаНет Тип Имя каталога Значение по умолчанию NULLИспользуется для определения альтернативного каталога для временных файлов сортировки, создаваемых во время онлайн-операций
ALTER TABLEпо перестроению таблицы.Онлайн-операции
ALTER TABLEпо перестроению таблицы также создают файл временной таблицы в том же каталоге, что и исходная таблица. Опцияinnodb_tmpdirне применяется к файлам временных таблиц.Допустимое значение — любой путь к каталогу, кроме пути к каталогу данных MySQL. Если значение равно NULL (значение по умолчанию), временные файлы создаются в каталоге временных файлов MySQL (
$TMPDIRв Unix,%TEMP%в Windows или в каталоге, указанном в параметре конфигурации--tmpdir). Если указан каталог, существование каталога и разрешения проверяются только при настройкеinnodb_tmpdirс помощью оператораSET. Если в строке каталога указана символическая ссылка, она разрешается и сохраняется как абсолютный путь. Путь не должен превышать 512 байт. Онлайн-операцияALTER TABLEсообщает об ошибке, еслиinnodb_tmpdirзадан на недопустимый каталог.innodb_tmpdirпереопределяет параметр MySQLtmpdir, но только для онлайн-операцийALTER TABLEпо перестроению таблицы.Для настройки
innodb_tmpdirтребуется привилегияFILE.Опция
innodb_tmpdirбыла введена для предотвращения переполнения каталога временных файлов, расположенного на файловой системеtmpfs. Такие переполнения могут произойти из-за больших временных файлов сортировки, создаваемых во время онлайн-операцийALTER TABLEпо перестроению таблицы.В средах репликации следует учитывать репликацию параметра
innodb_tmpdirтолько если на всех серверах одинаковая операционная среда. В противном случае репликация параметраinnodb_tmpdirможет привести к сбою репликации при выполнении онлайн-операцийALTER TABLEпо перестроению таблицы. Если операционные среды серверов отличаются, рекомендуется настраиватьinnodb_tmpdirна каждом сервере индивидуально.Дополнительную информацию см. в Разделе 17.12.3, «Требования к онлайн-пространству DDL». Сведения об онлайн-операциях
ALTER TABLEсм. в Разделе 17.12, «InnoDB и онлайн-DDL». -
innodb_trx_purge_view_update_only_debugФормат командной строки --innodb-trx-purge-view-update-only-debug[={OFF|ON}]Системная переменная innodb_trx_purge_view_update_only_debugОбласть действия Глобальная Динамическая Да SET_VARПрименяется ли подсказкаНет Тип Булево Значение по умолчанию OFFПриостанавливает очистку помеченных удалением записей, позволяя обновлять представление очистки. Эта опция искусственно создает ситуацию, в которой представление очистки обновляется, но очистки еще не выполнены. Эта опция доступна только при наличии поддержки отладки, скомпилированной с помощью опции
WITH_DEBUGCMake. -
Формат командной строки --innodb-trx-rseg-n-slots-debug=#Системная переменная innodb_trx_rseg_n_slots_debugОбласть действия Глобальная Динамическая Да SET_VARПрименяется ли подсказкаНет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 1024Устанавливает флаг отладки, который ограничивает
TRX_RSEG_N_SLOTSзаданным значением для функцииtrx_rsegf_undo_find_free, которая ищет свободные слоты для сегментов журнала отмены. Эта опция доступна только при наличии поддержки отладки, скомпилированной с помощью опцииWITH_DEBUGCMake. -
Формат командной строки --innodb-undo-directory=dir_nameСистемная переменная innodb_undo_directoryОбласть действия Глобальная Динамическая Нет SET_VARПрименяется ли подсказкаНет Тип Имя каталога Путь, где
InnoDBсоздает пространства имен отмены. Обычно используется для размещения пространств имен отмены на другом устройстве хранения.Значения по умолчанию нет (NULL). Если переменная
innodb_undo_directoryне определена, пространства имен отмены создаются в каталоге данных.Пространства имен отмены по умолчанию (
innodb_undo_001иinnodb_undo_002), созданные при инициализации экземпляра MySQL, всегда находятся в каталоге, определенном переменнойinnodb_undo_directory.Пространства имен отмены, созданные с помощью синтаксиса
CREATE UNDO TABLESPACE, создаются в каталоге, определенном переменнойinnodb_undo_directory, если не указан другой путь.Дополнительную информацию см. в Разделе 17.6.3.4, «Пространства имен отмены».
-
Формат командной строки --innodb-undo-log-encrypt[={OFF|ON}]Системная переменная innodb_undo_log_encryptОбласть действия Глобальная Динамическая Да SET_VARПрименяется ли подсказкаНет Тип Булево Значение по умолчанию OFFУправляет шифрованием данных журнала отмены для таблиц, зашифрованных с помощью функции
InnoDBшифрования данных. Применяется только к журналам отмены, которые находятся в отдельных файлах. См. Раздел 17.6.3.4, «Пространства имен отмены». Шифрование не поддерживается для данных журналов отмены, которые находятся в системном пространстве имен. Дополнительную информацию см. в Разделе о шифровании журнала отмены.
-
Формат командной строки --innodb-undo-log-truncate[={OFF|ON}]Системная переменная innodb_undo_log_truncateОбласть Глобальная Динамическая Да SET_VARПрименяется ли подсказкаНет Тип Булево Значение по умолчанию ONПри включении, пространства таблиц отката, которые превышают пороговое значение, определённое переменной
innodb_max_undo_log_size, помечаются для усечения. Усечению могут подвергаться только пространства таблиц отката. Усечение журналов отката, находящихся в системной табличной области, не поддерживается. Для усечения должно быть как минимум два пространства таблиц отката.Переменная
innodb_purge_rseg_truncate_frequencyможет быть использована для ускорения усечения пространств таблиц отката.Для получения дополнительной информации см. Усечение пространств таблиц отката.
-
Формат командной строки --innodb-undo-tablespaces=#Устаревшая Да Системная переменная innodb_undo_tablespacesОбласть Глобальная Динамическая Да SET_VARПрименяется ли подсказкаНет Тип Целое число Значение по умолчанию 2Минимальное значение 2Максимальное значение 127Определяет количество используемых
InnoDB. Значение по умолчанию и минимальное значение равно 2.ПримечаниеПеременная
innodb_undo_tablespacesустарела; её установка не оказывает никакого эффекта. Ожидается, что она будет удалена в будущих выпусках MySQL.Для получения дополнительной информации см. Раздел 17.6.3.4, «Пространства таблиц отката».
-
Формат командной строки --innodb-use-fdatasync[={OFF|ON}]Системная переменная innodb_use_fdatasyncОбласть Глобальная Динамическая Да SET_VARПрименяется ли подсказкаНет Тип Булево Значение по умолчанию ONНа платформах, поддерживающих
fdatasync()системные вызовы, включениеinnodb_use_fdatasyncпозволяет использоватьfdatasync()вместоfsync()системных вызовов для операционных системных сбросов. Вызовfdatasync()не сбрасывает изменения в метаданные файлов, если это не требуется для последующего извлечения данных, что может обеспечить потенциальную производительность.Подмножество настроек
innodb_flush_method, таких какfsync,O_DSYNCиO_DIRECTиспользуютfsync()системные вызовы. Переменнаяinnodb_use_fdatasyncприменима при использовании этих настроек.До MySQL 8.4 этот параметр по умолчанию был отключен.
-
Формат командной строки --innodb-use-native-aio[={OFF|ON}]Системная переменная innodb_use_native_aioОбласть Глобальная Динамическая Нет SET_VARПрименяется ли подсказкаНет Тип Булево Значение по умолчанию ONУказывает, использовать ли подсистему асинхронных ввода-вывода. Эту переменную нельзя изменить во время работы сервера. Обычно настраивать этот параметр не нужно, так как он включён по умолчанию.
Эта функция повышает масштабируемость систем с интенсивным вводом-выводом, которые обычно показывают много ожидающих операций чтения/записи в выводе
SHOW ENGINE INNODB STATUS.Запуск с большим количеством потоков ввода-вывода
InnoDB, особенно запуск нескольких таких экземпляров на одном серверном компьютере, может превысить пределы возможностей на системах Linux. В этом случае вы можете получить следующую ошибку:EAGAIN: The specified maxevents exceeds the user's limit of available events.
Обычно эту ошибку можно устранить, установив более высокое ограничение для
/proc/sys/fs/aio-max-nr.Однако, если проблема с подсистемой асинхронного ввода-вывода в ОС препятствует запуску
InnoDB, вы можете запустить сервер сinnodb_use_native_aio=0. Этот параметр также может быть автоматически отключен во время запуска, еслиInnoDBобнаружит потенциальную проблему, например, сочетание расположенияtmpdir, файловой системыtmpfsи ядра Linux, которое не поддерживает AIO наtmpfs.Для получения дополнительной информации см. Раздел 17.8.6, «Использование асинхронного ввода-вывода на Linux».
-
innodb_validate_tablespace_pathsФормат командной строки --innodb-validate-tablespace-paths[={OFF|ON}]Системная переменная innodb_validate_tablespace_pathsОбласть Глобальная Динамическая Нет SET_VARПрименяется ли подсказкаНет Тип Булево Значение по умолчанию ONУправляет валидацией пути к файлам табличной области. При запуске
InnoDBпроверяет пути известных файлов табличной области по отношению к путям файлов табличной области, хранящимся в словаре данных, на случай, если файлы табличной области были перемещены в другое местоположение. Переменнаяinnodb_validate_tablespace_pathsпозволяет отключить проверку пути к файлам табличной области. Эта функция предназначена для сред, где файлы пространств таблиц не перемещаются. Отключение проверки пути к файлам табличной области ускоряет время запуска на системах с большим количеством файлов табличной области.ПредупреждениеЗапуск сервера с отключённой проверкой пути к файлам табличной области после перемещения файлов табличной области может привести к неопределённому поведению.
Для получения дополнительной информации см. Раздел 17.6.3.7, «Отключение проверки пути к файлам табличной области».
-
Номер версии
InnoDB. Это устаревшая переменная; значение такое же, как у серверной переменной MySQLversion.
-
Формат командной строки --innodb-write-io-threads=#Системная переменная innodb_write_io_threadsОбласть Глобальная Динамическая Нет SET_VARПрименяется подсказкаНет Тип Целое число Значение по умолчанию 4Минимальное значение 1Максимальное значение 64Количество потоков ввода-вывода для операций записи в InnoDB. Значение по умолчанию равно 4. Его аналогом для потоков чтения является
innodb_read_io_threads. Для получения дополнительной информации см. Раздел 17.8.5, «Настройка количества фоновых потоков ввода-вывода InnoDB». Общие рекомендации по настройке ввода-вывода см. в Разделе 10.5.8, «Оптимизация ввода-вывода на диске InnoDB».ПримечаниеВ системах Linux запуск нескольких серверов MySQL (обычно более 12) со значениями по умолчанию для
innodb_read_io_threads,innodb_write_io_threadsи параметром Linuxaio-max-nrможет превысить системные ограничения. В идеале, увеличьте параметрaio-max-nr; в качестве обходного решения можно уменьшить настройки одной или обеих переменных MySQL.Также следует учитывать значение
sync_binlog, которое контролирует синхронизацию двоичного журнала на диске.Общие рекомендации по настройке ввода-вывода см. в Разделе 10.5.8, «Оптимизация ввода-вывода на диске InnoDB».
© 2025 Oracle
Licensed under the GPLv2 License.