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_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автоматически рассчитывает и задает значения следующих переменных:Следует использовать параметр
--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Определяет нижнюю границу, представляющую процент от емкости, при которой включена. Дополнительные сведения см. в разделе 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Способ, используемый для генерации значений AUTO_INCREMENT. Допустимые значения: 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_DONTDUMP, не относящееся к 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Максимальный размер буфера изменений, как процент от общего размера . Можно увеличить это значение для сервера 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 МБ). Применимо к операциям онлайн-DDL, создающим или перестраивающим вторичные индексы. См. Раздел 17.12.4, «Управление памятью онлайн-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Определяет максимальное количество параллельных потоков для этапов сортировки и построения при создании индексов. Применимо к операциям онлайн-DDL, создающим или перестраивающим вторичные индексы. Для получения дополнительной информации см. Раздел 17.12.5, «Конфигурирование параллельных потоков для операций онлайн-DDL» и Раздел 17.12.4, «Управление памятью онлайн-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=DEFAULT.При отсутствии явного значения
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управляет буферизацией двойной записи. Буферизация двойной записи включена по умолчанию в большинстве случаев.Вы можете установить
innodb_doublewriteнаONилиOFFпри запуске сервера для включения или отключения буферизации двойной записи соответственно.DETECT_AND_RECOVERэквивалентноON. При этом буфер двойной записи полностью включен, содержимое страниц базы данных записывается в буфер двойной записи, где к нему обращаются во время восстановления для исправления неполных записей страниц. ПриDETECT_ONLY, в буфер двойной записи записывается только метаданные. Содержимое страниц базы данных не записывается в буфер двойной записи, и восстановление не использует буфер двойной записи для исправления неполных записей страниц. Эта облегченная настройка предназначена только для обнаружения неполных записей страниц.MySQL поддерживает динамические изменения настройки
innodb_doublewrite, включающей буфер двойной записи, междуON,DETECT_AND_RECOVERиDETECT_ONLY. MySQL не поддерживает динамические изменения между настройкой, включающей буфер двойной записи, иOFF, и наоборот.Если буфер двойной записи расположен на устройстве Fusion-io, поддерживающем атомарные записи, буфер двойной записи автоматически отключается, а записи в файлы данных выполняются с использованием атомарных записей Fusion-io вместо этого. Однако следует учитывать, что настройка
innodb_doublewriteглобальна. Когда буфер двойной записи отключен, он отключен для всех файлов данных, включая те, которые не находятся на оборудовании Fusion-io. Эта функция поддерживается только на оборудовании Fusion-io и включена только для Fusion-io NVMFS в Linux. Для максимальной пользы от этой функции рекомендуется установитьinnodb_flush_methodнаO_DIRECT.Дополнительную информацию см. в разделе Раздел 17.6.4, «Буфер двойной записи».
-
Формат командной строки --innodb-doublewrite-batch-size=#Системная переменная innodb_doublewrite_batch_sizeОбласть действия Глобальная Динамическая Нет SET_VARПрименяется ли подсказкаНет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 256Эта переменная предназначалась для представления количества страниц двойной записи, которые нужно записать в пакет. Эта функциональность была заменена на
innodb_doublewrite_pages.Дополнительную информацию см. в разделе Раздел 17.6.4, «Буфер двойной записи».
-
Формат командной строки --innodb-doublewrite-dir=dir_nameСистемная переменная innodb_doublewrite_dirОбласть действия Глобальная Динамическая Нет SET_VARПрименяется ли подсказкаНет Тип Имя каталога Определяет каталог для файлов двойной записи. Если каталог не указан, файлы двойной записи создаются в каталоге
innodb_data_home_dir, который по умолчанию совпадает с каталогом данных, если не указан иначе.Дополнительную информацию см. в разделе Раздел 17.6.4, «Буфер двойной записи».
-
Формат командной строки --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Управляет тем, как пространство выделяется для таблиц в отдельных файлах и общих табличных пространствах в системах 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включено, таблицы по умолчанию создаются в табличных пространствах с файлами для каждой таблицы. Когда отключено, таблицы по умолчанию создаются в системном табличном пространстве. Информация о табличных пространствах с файлами для каждой таблицы приведена в Разделе 17.6.3.2, «Табличные пространства с файлами для каждой таблицы». Информация о системном табличном пространствеInnoDBприведена в Разделе 17.6.3.1, «Системное табличное пространство».Переменная
innodb_file_per_tableможет быть настроена во время выполнения с помощью оператораSET GLOBAL, указанного в командной строке при запуске или указанного в файле параметров. Настройка во время выполнения требует прав, достаточных для установки глобальных системных переменных (см. Раздел 7.1.9.1, «Права на системные переменные») и немедленно влияет на работу всех подключений.Когда таблица, находящаяся в табличном пространстве с файлами для каждой таблицы, усекается или удаляется, освобожденное пространство возвращается операционной системе. Усечение или удаление таблицы, находящейся в системном табличном пространстве, освобождает пространство только в системном табличном пространстве. Освобожденное пространство в системном табличном пространстве может использоваться повторно для данных
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_flush_methodдля 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».ПредупреждениеУстанавливайте эту переменную только в значение, большее 0, в экстренных ситуациях, чтобы вы могли запустить
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Применяется ли подсказкаНет Тип Строка Указывает полное имя таблицы, содержащей индекс полнотекстового поиска. Эта переменная предназначена для диагностики и может быть установлена только во время выполнения. Например:
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Максимальное значение 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 может производить более агрессивный сброс, выполняя операции ввода-вывода (I/O) с большей скоростью, чем определено переменной
innodb_io_capacity. Переменнаяinnodb_io_capacity_maxопределяет максимальное число операций I/O, выполняемых фоновыми задачами 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. Изменение глобального значения требует соответствующих привилегий (см. Раздел 7.1.9.1, «Права на системные переменные») и влияет на работу всех последующих подключений. Любой клиент может изменить значение параметраSESSIONдляinnodb_lock_wait_timeout, что повлияет только на этого клиента. -
-
innodb_log_checkpoint_fuzzy_now -
-
Формат командной строки --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 МБ.Как правило, общий размер файлов журнала должен быть достаточно большим, чтобы сервер мог сглаживать пики и спады активности рабочей нагрузки, что часто означает наличие достаточного пространства для журнала восстановления, чтобы обработать более часа активности записи. Чем больше значение, тем меньше требуется активность сброса контрольных точек в буферном пуле, что экономит дисковые вводы-выводы. Более крупные файлы журнала также замедляют работу .
Минимальное значение
innodb_log_file_sizeсоставляет 4 МБ.Для получения дополнительной информации см. Настройка журнала восстановления. Для рекомендаций по настройке ввода-вывода см. Раздел 10.5.8, «Оптимизация дисковых вводов-выводов 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журнала восстановления.Для получения дополнительной информации см. Настройка журнала восстановления.
-
Формат командной строки --innodb-log-spin-cpu-abs-lwm=#Системная переменная innodb_log_spin_cpu_abs_lwmОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Целое число Значение по умолчанию 80Минимальное значение 0Максимальное значение 4294967295Определяет минимальное количество использования ЦП, ниже которого потоки пользователей перестают вращаться при ожидании списания резервного журнала. Значение выражено как сумма использования ядер ЦП. Например, значение по умолчанию 80 составляет 80% одного ядра ЦП. На системе с многоядерным процессором значение 150 представляет 100% использования одного ядра ЦП плюс 50% использования второго ядра ЦП.
Для получения дополнительной информации см. Раздел 10.5.4, «Оптимизация журналирования InnoDB».
-
Формат командной строки --innodb-log-spin-cpu-pct-hwm=#Системная переменная innodb_log_spin_cpu_pct_hwmОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Целое число Значение по умолчанию 50Минимальное значение 0Максимальное значение 100Определяет максимальное количество использования ЦП, выше которого потоки пользователей перестают вращаться при ожидании списания резервного журнала. Значение выражено в процентах от общей вычислительной мощности всех ядер ЦП. Значение по умолчанию составляет 50%. Например, 100% использования двух ядер ЦП составляет 50% от общей вычислительной мощности ЦП на сервере с четырьмя ядрами ЦП.
Переменная
innodb_log_spin_cpu_pct_hwmучитывает родство процессоров. Например, если сервер имеет 48 ядер, но процесс mysqld закреплен только за четырьмя ядрами ЦП, остальные 44 ядра игнорируются.Для получения дополнительной информации см. Раздел 10.5.4, «Оптимизация журналирования InnoDB».
-
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Максимальное значение 2**32-1Единица измерения микросекунды Определяет максимальное среднее время списания журнала, после которого потоки пользователей перестают вращаться, ожидая списания резервного журнала. Значение по умолчанию составляет 400 микросекунд.
Для получения дополнительной информации см. Раздел 10.5.4, «Оптимизация журналирования InnoDB».
-
Формат командной строки --innodb-log-write-ahead-size=#Системная переменная innodb_log_write_ahead_sizeОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Целое число Значение по умолчанию 8192Минимальное значение 512 (log file block size)Максимальное значение Equal to innodb_page_sizeЕдиница измерения байты Определяет размер блока предварительной записи для журнала резервного копирования в байтах. Чтобы избежать «чтения при записи», установите
innodb_log_write_ahead_sizeв соответствии с размером блока кэша операционной системы или файловой системы. Значение по умолчанию составляет 8192 байта. Чтение при записи происходит, когда блоки резервного журнала не полностью кэшируются в операционной системе или файловой системе из-за несоответствия между размером блока предварительной записи резервного журнала и размером блока кэша операционной системы или файловой системы.Допустимые значения для
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».
-
Формат командной строки --innodb-log-writer-threads[={OFF|ON}]Системная переменная innodb_log_writer_threadsОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Булево Значение по умолчанию OFF, if available logical processors < 32Значение по умолчанию ON, if available logical processors >= 32Включает отдельные потоки записи журнала для записи записей резервного журнала из буфера журнала в системные буферы и списания системных буферов в файлы резервного журнала. Отдельные потоки записи журнала могут повысить производительность на системах с высокой конкурентностью, но для систем с низкой конкурентностью отключение отдельных потоков записи журнала обеспечивает лучшую производительность.
Значение по умолчанию было
ONдо MySQL 9.1.0.Для получения дополнительной информации см. Раздел 10.5.4, «Оптимизация журналирования InnoDB».
-
Формат командной строки --innodb-lru-scan-depth=#Системная переменная innodb_lru_scan_depthОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 1024Минимальное значение 100Максимальное значение 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.17, «Инструкция 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.17, «Инструкция 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.17, «Инструкция 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 устанавливается таким же, как для число буферных пулов. Если заданное количество потоков чистильщиков превышает количество буферных пулов, тогда чистильщики страниц InnoDB автоматически устанавливается равным количеству буферных пулов.
Если ваша рабочая нагрузка ограничена операциями записи на диск при очистке грязных страниц из буферного пула в файлы данных, и если аппаратное обеспечение системы имеет достаточные ресурсы, увеличение числа потоков чистильщиков страниц может помочь улучшить пропускную способность операций записи на диск.
Поддержка многопоточных чистильщиков страниц распространяется на фазы завершения и восстановления.
Системный вызов
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, 16 КБ или 16к.Размер страницы InnoDB может быть сконфигурирован только до запуска экземпляра MySQL и не может быть изменен после этого. Если значение не указано, экземпляр запускается с использованием значения по умолчанию для размера страницы. См. Раздел 17.8.1, «Конфигурация запуска InnoDB».
Для размеров страницы 32 КБ и 64 КБ максимальная длина строки составляет примерно 16000 байт.
ROW_FORMAT=COMPRESSEDне поддерживается, когда размер страницы InnoDB устанавливается в 32 КБ или 64 КБ. Для размера страницы InnoDB размер экстентов составляет 2 МБ. Для размера страницы InnoDB размер экстентов составляет 4 МБ. Размер буфера журнала InnoDB должен быть установлен как минимум на 16 МБ (по умолчанию 64 МБ) при использовании размеров страницы 32 КБ или 64 КБ.Размер страницы по умолчанию 16 КБ или больше подходит для широкого спектра рабочих нагрузок, особенно для запросов, включающих сканирование таблиц и операций DML, включающих массовые обновления. Более мелкие размеры страниц могут быть более эффективными для рабочих нагрузок, включающих множество небольших записей, где проблема может возникать при наличии многих строк на одной странице. Более мелкие размеры страниц также могут быть эффективными с устройствами хранения данных, которые обычно используют небольшие размеры блоков. Удержание размера страницы
InnoDBблизко к размеру блока устройства хранения минимизирует количество неизменённых данных, которые записываются на диск.Минимальный размер файла для первого файла данных системного табличного пространства (
ibdata1) зависит от значения размера страницы InnoDB. Смотрите описание опции пути к файлам данных InnoDB для получения дополнительной информации.Экземпляр MySQL, использующий определенный
InnoDBразмер страницы, не может использовать файлы данных или журнальные файлы из экземпляра, использующего другой размер страницы.Советы по настройке ввода-вывода см. в Разделе 10.5.8, «Оптимизация ввода-вывода InnoDB».
-
Параллельные потоки чтения 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 должна быть установлена в значение больше 1 для того, чтобы производилось параллельное чтение кластеризованного индекса. Фактическое количество потоков, используемых для параллельного чтения кластеризованного индекса, определяется значением параллельных потоков чтения InnoDB или количеством поддеревьев индекса для сканирования, в зависимости от того, что меньше. Страницы, считанные в буферный пул во время сканирования, сохраняются в конце списка буферного пула LRU, чтобы их можно было быстро удалить при необходимости свободных страниц буферного пула.Максимальное количество параллельных потоков чтения (256) — это общее количество потоков для всех соединений клиентов. Если предел потоков достигнут, соединения возвращаются к использованию одного потока. Значение по умолчанию рассчитывается путём деления количества доступных логических процессоров системы на 8, с минимальным значением по умолчанию 4.
До MySQL 8.4 значение по умолчанию всегда было 4.
-
Формат командной строки --innodb-print-all-deadlocks[={OFF|ON}]Системная переменная innodb_print_all_deadlocksОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Булево Значение по умолчанию OFFКогда эта опция включена, информация о всех взаимных блокировках в транзакциях пользователя
InnoDBзаписывается в лог ошибокmysqldлог ошибок. В противном случае вы увидите информацию только о последней взаимной блокировке, используя операторSHOW ENGINE INNODB STATUS. Случайная взаимная блокировкаInnoDBне обязательно является проблемой, поскольку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Определяет частоту, с которой система очистки освобождает сегменты отката, в терминах количества вызовов очистки. Табличное пространство отката не может быть усечено, пока его сегменты отката не будут освобождены. Обычно система очистки освобождает сегменты отката один раз каждые 128 раз, когда вызывается очистка. Значение по умолчанию равно 128. Уменьшение этого значения увеличивает частоту, с которой поток очистки освобождает сегменты отката.
innodb_purge_rseg_truncate_frequencyпредназначен для использования сinnodb_undo_log_truncate. Для получения дополнительной информации см. Усечение табличных пространств отката. -
Формат командной строки --innodb-random-read-ahead[={OFF|ON}]Системная переменная innodb_random_read_aheadОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Булево Значение по умолчанию OFFВключает метод случайного предварительного чтения для оптимизации операций ввода-вывода
InnoDB.Подробные сведения о соображениях производительности для различных типов запросов предварительного чтения см. в Разделе 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 (Read-Ahead)». Общие рекомендации по настройке ввода-вывода см. в разделе 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. Увеличение значения повышает точность статистики индексов, что может улучшить , за счёт увеличения ввода-вывода во время выполнения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Используется для определения альтернативного каталога для временных файлов сортировки, создаваемых во время операций онлайн-перестроения таблиц.
Операции онлайн-перестроения таблиц также создают файл временной таблицы в том же каталоге, что и исходная таблица. Параметр
innodb_tmpdirне применим к файлам временных таблиц.Допустимым значением является любой путь к каталогу, кроме пути к каталогу данных MySQL. Если значение NULL (по умолчанию), временные файлы создаются в каталоге временных файлов MySQL (
$TMPDIRв Unix,%TEMP%в Windows или каталог, указанный в конфигурационном параметре--tmpdir). Если в строке каталога указана символическая ссылка, она разрешается и сохраняется как абсолютный путь. Путь не должен превышать 512 байт. Операция онлайн-перестроения таблиц сообщает об ошибке, еслиinnodb_tmpdirнастроена на недопустимый каталог.innodb_tmpdirпереопределяет настройку MySQLtmpdir, но только для операций онлайн-перестроения таблиц.Для настройки
innodb_tmpdirтребуется привилегияFILE.Параметр
innodb_tmpdirбыл введен для предотвращения переполнения каталога временных файлов, расположенного наtmpfsфайловой системе. Такие переполнения могут произойти из-за больших временных файлов сортировки, создаваемых при операциях онлайн-перестроения таблиц.В средах репликации следует рассматривать репликацию параметра
innodb_tmpdirтолько если у всех серверов одинаковая операционная среда. В противном случае репликация параметраinnodb_tmpdirможет привести к сбоям репликации при выполнении операций онлайн-перестроения таблиц. Если операционные среды серверов различаются, рекомендуется настроитьinnodb_tmpdirна каждом сервере индивидуально.Дополнительную информацию см. в Разделе 17.12.3, «Требования к пространству для онлайн DDL». Сведения об операциях онлайн-перестроения таблиц см. в Разделе 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_DEBUGопции CMake. -
Формат командной строки --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_DEBUGопции CMake. -
Формат командной строки --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. Это устаревшая переменная, значение которой совпадает со значением системной переменной MySQL сервераversion.
-
Формат командной строки --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.