14.15 Параметры запуска InnoDB и системные переменные
Системные переменные, принимающие значения «истина» или «ложь», можно включить при запуске сервера, указав их имя, или отключить, используя префикс
--skip-. Например, чтобы включить или отключить адаптивный индекс хэшированияInnoDB, можно использовать--innodb-adaptive-hash-indexили--skip-innodb-adaptive-hash-indexв командной строке илиinnodb_adaptive_hash_indexилиskip_innodb_adaptive_hash_indexв файле параметров.Системные переменные, принимающие числовые значения, можно указать как
--в командной строке или какvar_name=valueв файлах параметров.var_name=valueМногие системные переменные можно изменить во время выполнения (см. Раздел 5.1.8.2, «Динамические системные переменные»).
Сведения о модификаторах области действия переменных
GLOBALиSESSIONсм. в документации к операторуSET.Некоторые параметры управляют расположением и структурой файлов данных
InnoDB. Раздел 14.8.1, «Конфигурация запуска InnoDB», описывает, как использовать эти параметры.Некоторые параметры, которые вы можете не использовать сразу, помогают настроить характеристики производительности
InnoDBв зависимости от мощности машины и вашей базы данных.Дополнительную информацию о указании параметров и системных переменных см. в Разделе 4.2.2, «Указание параметров программы».
Таблица 14.18 Справочник по параметрам и переменным InnoDB
| Имя | Командная строка | Файл параметров | Системная переменная | Переменная состояния | Область действия переменной | Динамическая |
|---|
Параметры командной строки InnoDB
-
Формат командной строки --innodb[=value]Устарело Да Тип Перечисление Значение по умолчанию ONДопустимые значения OFFONFORCEУправляет загрузкой движка хранения
InnoDB, если сервер был скомпилирован с поддержкойInnoDB. Этот параметр имеет трёхсостояниевый формат с возможными значениямиOFF,ONилиFORCE. См. Раздел 5.5.1, «Установка и удаление плагинов».Чтобы отключить
InnoDB, используйте--innodb=OFFили--skip-innodb. В этом случае, так как по умолчанию движок хранения —InnoDB, сервер не запустится, если вы также не используете--default-storage-engineи--default-tmp-storage-engineдля установки значения по умолчанию на другой движок для как постоянных, так иTEMPORARYтаблиц.Движок хранения
InnoDBбольше нельзя отключить, и параметры--innodb=OFFи--skip-innodbустарели и не имеют эффекта. Их использование приводит к предупреждению. Ожидается, что эти параметры будут удалены в будущих версиях MySQL. -
Формат командной строки --innodb-status-file[={OFF|ON}]Тип Булево Значение по умолчанию OFFПараметр запуска
--innodb-status-fileуправляет тем, создаёт лиInnoDBфайл с именемinnodb_status.в каталоге данных и записывает в него примерно каждые 15 секунд выводpidSHOW ENGINE INNODB STATUS.Файл
innodb_status.по умолчанию не создаётся. Для его создания запустите mysqld с параметромpid--innodb-status-file.InnoDBудаляет файл при нормальном завершении работы сервера. При аварийном завершении работы файл состояния, возможно, придётся удалить вручную.Параметр
--innodb-status-fileпредназначен для временного использования, так как генерация выводаSHOW ENGINE INNODB STATUSможет повлиять на производительность, а файлinnodb_status.со временем может стать достаточно большим.pidДля дополнительной информации см. Раздел 14.18.2, «Включение мониторов InnoDB».
-
Отключить движок хранения
InnoDB. См. описание--innodb.
Системные переменные InnoDB
-
daemon_memcached_enable_binlogФормат командной строки --daemon-memcached-enable-binlog[={OFF|ON}]Системная переменная daemon_memcached_enable_binlogОбласть видимости Глобальная Динамическая Нет Тип Булево Значение по умолчанию OFFВключите этот параметр на исходном сервере, чтобы использовать плагин
InnoDBmemcached (daemon_memcached) с MySQL. Этот параметр можно установить только при запуске сервера. Необходимо также включить бинарный лог MySQL на исходном сервере, используя параметр--log-bin.Для получения дополнительной информации см. Раздел 14.21.6, «Плагин InnoDB memcached и репликация».
-
daemon_memcached_engine_lib_nameФормат командной строки --daemon-memcached-engine-lib-name=file_nameСистемная переменная daemon_memcached_engine_lib_nameОбласть видимости Глобальная Динамическая Нет Тип Имя файла Значение по умолчанию innodb_engine.soУказывает общую библиотеку, которая реализует плагин
InnoDBmemcached.Для получения дополнительной информации см. Раздел 14.21.3, «Настройка плагина InnoDB memcached».
-
daemon_memcached_engine_lib_pathФормат командной строки --daemon-memcached-engine-lib-path=dir_nameСистемная переменная daemon_memcached_engine_lib_pathОбласть видимости Глобальная Динамическая Нет Тип Имя каталога Значение по умолчанию NULLПуть к каталогу, содержащему общую библиотеку, которая реализует плагин
InnoDBmemcached. Значение по умолчанию — NULL, представляющее каталог плагинов MySQL. Вам не нужно изменять этот параметр, если только вы не указываете плагинmemcachedдля другого движка хранения, который находится за пределами каталога плагинов MySQL.Для получения дополнительной информации см. Раздел 14.21.3, «Настройка плагина InnoDB memcached».
-
Формат командной строки --daemon-memcached-option=optionsСистемная переменная daemon_memcached_optionОбласть видимости Глобальная Динамическая Нет Тип Строка Значение по умолчанию Используется для передачи параметров memcached, разделенных пробелами, базовому демону кэширования объектов памяти memcached при запуске. Например, можно изменить порт, который прослушивает memcached, уменьшить максимальное количество одновременных подключений, изменить максимальный размер памяти для пары ключ-значение или включить сообщения отладки для файла ошибок.
См. Раздел 14.21.3, «Настройка плагина InnoDB memcached» для получения подробных сведений об использовании. Для получения информации о параметрах memcached обратитесь к странице руководства memcached.
-
Формат командной строки --daemon-memcached-r-batch-size=#Системная переменная daemon_memcached_r_batch_sizeОбласть видимости Глобальная Динамическая Нет Тип Целое число Значение по умолчанию 1Минимальное значение 1Максимальное значение 1073741824Указывает, сколько операций чтения memcached (операции
get) следует выполнить, прежде чем выполнитьCOMMITдля начала новой транзакции. Аналогdaemon_memcached_w_batch_size.Это значение по умолчанию равно 1, поэтому любые изменения, внесенные в таблицу с помощью операторов SQL, немедленно становятся видны для операций memcached. Можно увеличить это значение, чтобы уменьшить накладные расходы от частых фиксаций в системе, где доступ к базовой таблице осуществляется только через интерфейс memcached. Если установить слишком большое значение, объем данных отката или повтора может создать некоторые накладные расходы на хранение, как и любая длительная транзакция.
Для получения дополнительной информации см. Раздел 14.21.3, «Настройка плагина InnoDB memcached».
-
Формат командной строки --daemon-memcached-w-batch-size=#Системная переменная daemon_memcached_w_batch_sizeОбласть видимости Глобальная Динамическая Нет Тип Целое число Значение по умолчанию 1Минимальное значение 1Максимальное значение 1048576Указывает, сколько операций записи memcached, таких как
add,setиincr, следует выполнить, прежде чем выполнитьCOMMITдля начала новой транзакции. Аналогdaemon_memcached_r_batch_size.Это значение по умолчанию равно 1, исходя из предположения, что хранящиеся данные важно сохранить на случай сбоя и их следует немедленно зафиксировать. При хранении некритичных данных можно увеличить это значение, чтобы уменьшить накладные расходы от частых фиксаций; но тогда последние
N-1 незафиксированных операций записи могут быть потеряны в случае неожиданного завершения работы.Для получения дополнительной информации см. Раздел 14.21.3, «Настройка плагина InnoDB memcached».
-
ignore_builtin_innodbФормат командной строки --ignore-builtin-innodb[={OFF|ON}]Устарело Да Системная переменная ignore_builtin_innodbОбласть видимости Глобальная Динамическая Нет Тип Булево В более ранних версиях MySQL включение этой переменной приводило к тому, что сервер вел себя так, как если бы встроенный
InnoDBотсутствовал, что позволяло использоватьInnoDB Plugin. В MySQL 5.7InnoDBявляется движком хранения по умолчанию, иInnoDB Pluginне используется, поэтому эта переменная игнорируется. -
Формат командной строки --innodb-adaptive-flushing[={OFF|ON}]Системная переменная innodb_adaptive_flushingОбласть видимости Глобальная Динамическая Да Тип Булево Значение по умолчанию ONУказывает, следует ли динамически регулировать скорость очистки в
InnoDBв зависимости от рабочей нагрузки. Динамическая регулировка скорости очистки предназначена для предотвращения всплесков активности ввода-вывода. Этот параметр включен по умолчанию. См. Раздел 14.8.3.5, «Настройка очистки буферного пула» для получения дополнительной информации. Для получения общих рекомендаций по настройке ввода-вывода см. Раздел 8.5.8, «Оптимизация ввода-вывода InnoDB на диск».
-
Формат командной строки --innodb-adaptive-flushing-lwm=#Системная переменная innodb_adaptive_flushing_lwmОбласть видимости Глобальная Динамическая Да Тип Целое число Значение по умолчанию 10Минимальное значение 0Максимальное значение 70Определяет нижнюю границу, представляющую процент от ёмкости, при котором включена. Для получения дополнительной информации см. Раздел 14.8.3.5, «Настройка очистки буферного пула».
-
Формат командной строки --innodb-adaptive-hash-index[={OFF|ON}]Системная переменная innodb_adaptive_hash_indexОбласть видимости Глобальная Динамическая Да Тип Логическое Значение по умолчанию ONВключён или выключен ли
InnoDB. В зависимости от вашей рабочей нагрузки может быть желательно динамически включать или отключать для повышения производительности запросов. Поскольку адаптивный хеш-индекс может быть не полезен для всех рабочих нагрузок, проведите тесты с его включением и отключением, используя реальные рабочие нагрузки. См. Раздел 14.5.3, «Адаптивный хеш-индекс» для получения подробной информации.Эта переменная включена по умолчанию. Вы можете изменить этот параметр, используя оператор
SET GLOBAL, без перезапуска сервера. Изменение настройки во время работы требует прав, достаточных для установки глобальных системных переменных. См. Раздел 5.1.8.1, «Права на системные переменные». Вы также можете использовать--skip-innodb-adaptive-hash-indexпри запуске сервера, чтобы отключить его.Отключение адаптивного хеш-индекса немедленно очищает хеш-таблицу. Нормальные операции могут продолжаться, пока хеш-таблица очищается, а выполняемые запросы, которые использовали доступ к хеш-таблице, вместо этого напрямую обращаются к индексным B-деревьям. Когда адаптивный хеш-индекс снова включается, хеш-таблица снова заполняется во время нормальной работы.
-
innodb_adaptive_hash_index_partsФормат командной строки --innodb-adaptive-hash-index-parts=#Системная переменная innodb_adaptive_hash_index_partsОбласть видимости Глобальная Динамическая Нет Тип Числовой Значение по умолчанию 8Минимальное значение 1Максимальное значение 512Разделяет систему поиска адаптивного хеш-индекса. Каждый индекс привязан к определённому разделу, причём каждый раздел защищён отдельным затвором.
В более ранних выпусках система поиска адаптивного хеш-индекса защищалась одним затвором (
btr_search_latch), который мог стать точкой конкуренции. С внедрением параметраinnodb_adaptive_hash_index_partsсистема поиска по умолчанию разделена на 8 частей. Максимальное значение равно 512.Для получения дополнительной информации см. Раздел 14.5.3, «Адаптивный хеш-индекс».
-
innodb_adaptive_max_sleep_delayФормат командной строки --innodb-adaptive-max-sleep-delay=#Системная переменная innodb_adaptive_max_sleep_delayОбласть видимости Глобальная Динамическая Да Тип Целое число Значение по умолчанию 150000Минимальное значение 0Максимальное значение 1000000Единица измерения микросекунды Позволяет
InnoDBавтоматически регулировать значениеinnodb_thread_sleep_delayвверх или вниз в зависимости от текущей рабочей нагрузки. Любое ненулевое значение включает автоматическую, динамическую настройку значенияinnodb_thread_sleep_delayвплоть до максимального значения, указанного в параметреinnodb_adaptive_max_sleep_delay. Значение представляет собой количество микросекунд. Этот параметр может быть полезен в загруженных системах с более чем 16 потокамиInnoDB. (На практике он наиболее ценен для систем MySQL с сотнями или тысячами одновременных подключений.)Для получения дополнительной информации см. Раздел 14.8.5, «Настройка параллелизма потоков для InnoDB».
-
Формат командной строки --innodb-api-bk-commit-interval=#Системная переменная innodb_api_bk_commit_intervalОбласть видимости Глобальная Динамическая Да Тип Целое число Значение по умолчанию 5Минимальное значение 1Максимальное значение 1073741824Единица измерения секунды Как часто выполнять автоматическую фиксацию неактивных соединений, использующих интерфейс
InnoDBmemcached, в секундах. Для получения дополнительной информации см. Раздел 14.21.5.4, «Управление поведением транзакций плагина InnoDB memcached». -
Формат командной строки --innodb-api-disable-rowlock[={OFF|ON}]Системная переменная innodb_api_disable_rowlockОбласть видимости Глобальная Динамическая Нет Тип Логическое Значение по умолчанию OFFИспользуйте этот параметр для отключения блокировок строк, когда
InnoDBmemcached выполняет операции DML. По умолчаниюinnodb_api_disable_rowlockотключен, это означает, что memcached запрашивает блокировки строк для операцийgetиset. Когдаinnodb_api_disable_rowlockвключен, memcached запрашивает блокировку таблицы вместо блокировок строк.innodb_api_disable_rowlockне является динамическим. Он должен быть указан в командной строке mysqld или введен в конфигурационный файл MySQL. Конфигурация вступает в силу при установке плагина, что происходит при запуске сервера MySQL.Для получения дополнительной информации см. Раздел 14.21.5.4, «Управление поведением транзакций плагина InnoDB memcached».
-
Формат командной строки --innodb-api-enable-binlog[={OFF|ON}]Системная переменная innodb_api_enable_binlogОбласть видимости Глобальная Динамическая Нет Тип Логическое Значение по умолчанию OFFПозволяет использовать плагин
InnoDBmemcached с MySQL. Для получения дополнительной информации см. Включение двоичного журнала InnoDB memcached.
-
Формат командной строки --innodb-api-enable-mdl[={OFF|ON}]Системная переменная innodb_api_enable_mdlОбласть действия Глобальная Динамическая Нет Тип Булево Значение по умолчанию OFFБлокирует таблицу, используемую плагином memcached, так что она не может быть удалена или изменена через интерфейс SQL. Для получения дополнительной информации см. Раздел 14.21.5.4, «Управление поведением транзакций плагина InnoDB memcached».
-
Формат командной строки --innodb-api-trx-level=#Системная переменная innodb_api_trx_levelОбласть действия Глобальная Динамическая Да Тип Целое Значение по умолчанию 0Минимальное значение 0Максимальное значение 3Управляет транзакциями запросов, обрабатываемых интерфейсом memcached. Константы, соответствующие известным именам:
0 =
READ UNCOMMITTED1 =
READ COMMITTED2 =
REPEATABLE READ3 =
SERIALIZABLE
Для получения дополнительной информации см. Раздел 14.21.5.4, «Управление поведением транзакций плагина InnoDB memcached».
-
Формат командной строки --innodb-autoextend-increment=#Системная переменная innodb_autoextend_incrementОбласть действия Глобальная Динамическая Да Тип Целое Значение по умолчанию 64Минимальное значение 1Максимальное значение 1000Единица измерения мегабайты Размер приращения (в мегабайтах) для увеличения размера файла автоматического расширения
InnoDBпри его заполнении. Значение по умолчанию равно 64. Для получения дополнительной информации см. Конфигурация данных файла системного табличного пространства и Изменение размера системного табличного пространства.Настройка
innodb_autoextend_incrementне влияет на файлы табличного пространства или файлы. Эти файлы автоматически расширяются независимо от настройкиinnodb_autoextend_increment. Первоначальные расширения производятся небольшими объемами, после чего расширения происходят приращениями по 4 МБ. -
Формат командной строки --innodb-autoinc-lock-mode=#Системная переменная innodb_autoinc_lock_modeОбласть действия Глобальная Динамическая Нет Тип Целое Значение по умолчанию 1Допустимые значения 012Режим, используемый для генерации значений. Допустимые значения: 0, 1 или 2, соответственно, традиционный, последовательный или чередующийся. Значение по умолчанию равно 1 (последовательный). Характеристики каждого режима блокировки см. в Режимах блокировки AUTO_INCREMENT InnoDB.
-
innodb_background_drop_list_emptyФормат командной строки --innodb-background-drop-list-empty[={OFF|ON}]Введено 5.7.10 Системная переменная innodb_background_drop_list_emptyОбласть действия Глобальная Динамическая Да Тип Булево Значение по умолчанию OFFВключение параметра отладки
innodb_background_drop_list_emptyпомогает избежать сбоев в тестовых сценариях, откладывая создание таблицы до тех пор, пока список отложенных удалений не станет пустым. Например, если тестовый сценарий A помещает таблицуt1в список отложенных удалений, тестовый сценарий B ждет, пока список не станет пустым, прежде чем создать таблицуt1.
-
Формат командной строки --innodb-buffer-pool-chunk-size=#Системная переменная innodb_buffer_pool_chunk_sizeОбласть видимости Глобальная Динамическая Нет Тип Целое число Значение по умолчанию 134217728Минимальное значение 1048576Максимальное значение innodb_buffer_pool_size / innodb_buffer_pool_instancesЕдиница измерения байты innodb_buffer_pool_chunk_sizeопределяет размер фрагмента для операций изменения размера буферного пулаInnoDB.Чтобы избежать копирования всех страниц буферного пула во время операций изменения размера, операция выполняется во фрагментах («chunks”). По умолчанию,
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, и изменение любой из этих настроек переменных требует перезапуска сервера.Для получения дополнительной информации см. Раздел 14.8.3.1, «Настройка размера буферного пула InnoDB».
-
innodb_buffer_pool_dump_at_shutdownФормат командной строки --innodb-buffer-pool-dump-at-shutdown[={OFF|ON}]Системная переменная innodb_buffer_pool_dump_at_shutdownОбласть видимости Глобальная Динамическая Да Тип Булево Значение по умолчанию 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включены по умолчанию.Для получения дополнительной информации см. Раздел 14.8.3.6, «Сохранение и восстановление состояния буферного пула».
-
Формат командной строки --innodb-buffer-pool-dump-now[={OFF|ON}]Системная переменная innodb_buffer_pool_dump_nowОбласть видимости Глобальная Динамическая Да Тип Булево Значение по умолчанию OFFНемедленно создает запись страниц, кэшированных в
InnoDB. Обычно используется в сочетании сinnodb_buffer_pool_load_now.Включение
innodb_buffer_pool_dump_nowзапускает действие записи, но не изменяет настройку переменной, которая всегда остаетсяOFFили0. Чтобы просмотреть состояние дампа буферного пула после запуска дампа, запросите переменнуюInnodb_buffer_pool_dump_status.Для получения дополнительной информации см. Раздел 14.8.3.6, «Сохранение и восстановление состояния буферного пула».
-
Формат командной строки --innodb-buffer-pool-dump-pct=#Системная переменная innodb_buffer_pool_dump_pctОбласть видимости Глобальная Динамическая Да Тип Целое число Значение по умолчанию 25Минимальное значение 1Максимальное значение 100Указывает процент наиболее часто используемых страниц для каждого буферного пула для чтения и дампа. Диапазон от 1 до 100. Значение по умолчанию равно 25. Например, если есть 4 буферных пула по 100 страниц каждый, и
innodb_buffer_pool_dump_pctустановлено в 25, будут сдампированы 25 наиболее часто используемых страниц из каждого буферного пула.Изменение значения по умолчанию
innodb_buffer_pool_dump_pctсовпадает с изменениями значений по умолчанию дляinnodb_buffer_pool_dump_at_shutdownиinnodb_buffer_pool_load_at_startup, которые оба включены по умолчанию в MySQL 5.7.
-
Формат командной строки --innodb-buffer-pool-filename=file_nameСистемная переменная innodb_buffer_pool_filenameОбласть действия Глобальная Динамическая Да Тип Имя файла Значение по умолчанию 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вернёт ошибку запуска, указывая, что такого файла или каталога нет.Дополнительную информацию см. в Разделе 14.8.3.6, «Сохранение и восстановление состояния буферного пула».
-
Формат командной строки --innodb-buffer-pool-instances=#Системная переменная innodb_buffer_pool_instancesОбласть действия Глобальная Динамическая Нет Тип Целое число Значение по умолчанию (Windows, 32-битные платформы) see descriptionЗначение по умолчанию (Другие) 8 (or 1 if innodb_buffer_pool_size < 1GB)Минимальное значение 1Максимальное значение 64Количество областей, на которые разделяется буферный пул
InnoDB. Для систем с буферными пулами объёмом в несколько гигабайт разделение буферного пула на отдельные инстансы может улучшить конкурентность, уменьшая конфликтность при чтении и записи в кешированные страницы различными потоками. Каждая страница, хранящаяся в или считываемая из буферного пула, случайным образом присваивается одному из инстансов буферного пула с помощью хеш-функции. Каждый буферный пул управляет собственными списками свободных объектов, и всеми другими связанными с буферным пулом структурами данных, а также защищён собственным буферным пулом.Этот параметр действует только при установке
innodb_buffer_pool_sizeна 1 ГБ или более. Общий размер буферного пула делится между всеми буферными пулами. Для наилучшей эффективности укажите сочетаниеinnodb_buffer_pool_instancesиinnodb_buffer_pool_sizeтак, чтобы каждый инстанс буферного пула составлял не менее 1 ГБ.Значение по умолчанию для 32-битных систем Windows зависит от значения
innodb_buffer_pool_size, как описано ниже:Если
innodb_buffer_pool_sizeбольше 1,3 ГБ, значение по умолчанию дляinnodb_buffer_pool_instancesсоставляетinnodb_buffer_pool_size/128 МБ, с отдельными запросами выделения памяти для каждого блока. 1,3 ГБ выбрано в качестве границы, за которой существует значительный риск для 32-битной Windows не смочь выделить необходимый непрерывный адресной пространство для одного буферного пула.В противном случае значение по умолчанию равно 1.
На всех остальных платформах значение по умолчанию равно 8, когда
innodb_buffer_pool_sizeбольше или равно 1 ГБ. В противном случае значение по умолчанию равно 1.Для получения дополнительной информации см. Раздел 14.8.3.1, «Настройка размера буферного пула InnoDB».
-
Формат командной строки --innodb-buffer-pool-load-abort[={OFF|ON}]Системная переменная innodb_buffer_pool_load_abortОбласть действия Глобальная Динамическая Да Тип Булево Значение по умолчанию 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.Дополнительную информацию см. в Разделе 14.8.3.6, «Сохранение и восстановление состояния буферного пула».
-
Формат командной строки --innodb-buffer-pool-size=#Системная переменная innodb_buffer_pool_sizeОбласть действия Глобальная Динамическая Да Тип Целое число Значение по умолчанию 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, которые загружаются по определенным адресам.
Время инициализации буфера пула примерно пропорционально его размеру. На экземплярах с большими буферами пула время инициализации может быть значительным. Для уменьшения периода инициализации вы можете сохранить состояние буфера пула при завершении работы сервера и восстановить его при запуске сервера. См. Раздел 14.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. Подробнее см. Раздел 14.8.3.1, «Настройка размера буфера пула InnoDB». -
Формат командной строки --innodb-change-buffer-max-size=#Системная переменная innodb_change_buffer_max_sizeОбласть действия Глобальная Динамическая Да Тип Целое число Значение по умолчанию 25Минимальное значение 0Максимальное значение 50Максимальный размер , в процентах от общего размера . Вы можете увеличить это значение для сервера MySQL с высокой активностью вставки, обновления и удаления или уменьшить для сервера MySQL с неизменными данными, используемыми для отчетов. Дополнительную информацию см. в Разделе 14.5.2, «Буфер изменений». Общие рекомендации по настройке ввода-вывода см. в Разделе 8.5.8, «Оптимизация ввода-вывода InnoDB».
-
Формат командной строки --innodb-change-buffering=valueСистемная переменная innodb_change_bufferingОбласть действия Глобальная Динамическая Да Тип Перечисление Значение по умолчанию allДопустимые значения noneinsertsdeleteschangespurgesallВыполняется ли
InnoDB, оптимизация, которая откладывает операции записи во вторичные индексы, чтобы операции ввода-вывода могли выполняться последовательно. Допустимые значения описаны в следующей таблице.Таблица 14.19 Допустимые значения для innodb_change_buffering
Таблица 14.19 Допустимые значения для innodb_change_buffering Значение Описание noneНе буферизовать никакие операции. insertsБуферизовать операции вставки. deletesБуферизовать операции помечания удаления; строго говоря, записи, которые помечают записи индекса для последующего удаления во время операции очистки. changesБуферизовать операции вставки и помечания удаления. purgesБуферизовать физические операции удаления, которые происходят в фоновом режиме. allЗначение по умолчанию. Буферизовать операции вставки, помечания удаления и очистки. Дополнительную информацию см. в Разделе 14.5.2, «Буфер изменений». Общие рекомендации по настройке ввода-вывода см. в Разделе 8.5.8, «Оптимизация ввода-вывода InnoDB».
-
Формат командной строки --innodb-change-buffering-debug=#Системная переменная innodb_change_buffering_debugОбласть действия Глобальная Динамическая Да Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 2Устанавливает флаг отладки для
InnoDBбуферизации изменений. Значение 1 принудительно выполняет все изменения в буфере изменений. Значение 2 приводит к неожиданному выходу при слиянии. Значение по умолчанию 0 означает, что флаг отладки буферизации изменений не установлен. Эта опция доступна только при отладке поддержки, скомпилированной с использованием опцииWITH_DEBUGCMake.
-
Формат командной строки --innodb-checksum-algorithm=valueСистемная переменная innodb_checksum_algorithmОбласть действия Глобальная Динамическая Да Тип Перечисление Значение по умолчанию crc32Допустимые значения crc32strict_crc32innodbstrict_innodbnonestrict_noneУказывает, как генерировать и проверять контрольные суммы, хранящиеся в блоках диска
InnoDB.crc32— значение по умолчанию с MySQL 5.7.7.innodb_checksum_algorithmзаменяет параметрinnodb_checksums. Следующие значения предоставлены для совместимости, вплоть до MySQL 5.7.6 включительно:innodb_checksums=ONэквивалентноinnodb_checksum_algorithm=innodb.innodb_checksums=OFFэквивалентноinnodb_checksum_algorithm=none.
Начиная с MySQL 5.7.7, со значением по умолчанию
innodb_checksum_algorithmcrc32,innodb_checksums=ONтеперь эквивалентноinnodb_checksum_algorithm=crc32.innodb_checksums=OFFпо-прежнему эквивалентноinnodb_checksum_algorithm=none.Для предотвращения конфликтов, удалите ссылки на
innodb_checksumsиз файлов конфигурации MySQL и скриптов запуска.Значение
innodbсовместимо со старыми версиями MySQL. Значениеcrc32использует алгоритм, который быстрее вычисляет контрольную сумму для каждого изменённого блока и проверяет контрольные суммы для каждого чтения с диска. Он сканирует блоки по 64 бита за раз, что быстрее, чем алгоритм контрольной суммыinnodb, который сканирует блоки по 8 бит за раз. Значениеnoneзаписывает постоянное значение в поле контрольной суммы, а не вычисляет значение на основе данных блока. Блоки в табличном пространстве могут использовать смесь старых, новых и отсутствующих значений контрольной суммы, постепенно обновляясь по мере изменения данных. После того, как блоки в табличном пространстве будут изменены для использования алгоритмаcrc32, соответствующие таблицы не смогут читаться более ранними версиями MySQL.Строгий формат алгоритма контрольной суммы сообщает об ошибке, если он обнаруживает допустимое, но несовпадающее значение контрольной суммы в табличном пространстве. Рекомендуется использовать только строгие настройки в новом экземпляре для первой настройки табличных пространств. Строгие настройки несколько быстрее, так как им не нужно вычислять все значения контрольной суммы во время чтения с диска.
ПримечаниеДо MySQL 5.7.8, строгий режим для
innodb_checksum_algorithmприводил к остановкеInnoDBпри обнаружении допустимого, но несовпадающего значения контрольной суммы. В MySQL 5.7.8 и более поздних версиях выводится только сообщение об ошибке, а страница принимается как допустимая, если она имеет допустимуюinnodb,crc32илиnoneконтрольную сумму.В следующей таблице показано различие между значениями параметров
none,innodbиcrc32и их строгими аналогами.none,innodbиcrc32записывают указанный тип значения контрольной суммы в каждый блок данных, но для совместимости принимают и другие значения контрольной суммы при проверке блока во время операции чтения. Строгие настройки также принимают допустимые значения контрольной суммы, но выводят сообщение об ошибке при обнаружении допустимого, но несовпадающего значения контрольной суммы. Использование строгого формата может ускорить проверку, если все файлы данныхInnoDBв экземпляре созданы с одинаковым значениемinnodb_checksum_algorithm.Таблица 14.20 Разрешенные значения innodb_checksum_algorithm
Таблица 14.20 Разрешенные значения 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выводит сообщение об ошибке, если обнаружено допустимое, но несовпадающее значение контрольной суммы.Версии MySQL Enterprise Backup до 3.8.0 не поддерживают резервное копирование табличных пространств, использующих контрольные суммы CRC32. MySQL Enterprise Backup добавляет поддержку CRC32 контрольных сумм в версии 3.8.1 с некоторыми ограничениями. Обратитесь к истории изменений MySQL Enterprise Backup 3.8.1 для получения дополнительной информации.
-
Формат командной строки --innodb-checksums[={OFF|ON}]Устарело Да Системная переменная innodb_checksumsОбласть видимости Глобальная Динамическая Нет Тип Boolean Значение по умолчанию ONInnoDBможет использовать проверку на всех страницах табличного пространства, считываемых с диска, для обеспечения дополнительной отказоустойчивости от аппаратных сбоев или поврежденных файлов данных. Эта проверка включена по умолчанию. В особых случаях (например, при проведении тестов производительности) эту функцию безопасности можно отключить с помощью--skip-innodb-checksums. Вы можете указать метод вычисления контрольной суммы, используя параметрinnodb_checksum_algorithm.innodb_checksumsустарел и заменен наinnodb_checksum_algorithm.До MySQL 5.7.7,
innodb_checksums=ONсовпадал сinnodb_checksum_algorithm=innodb. Начиная с MySQL 5.7.7, значение по умолчанию дляinnodb_checksum_algorithmравноcrc32, аinnodb_checksums=ONсовпадает сinnodb_checksum_algorithm=crc32.innodb_checksums=OFFсовпадает сinnodb_checksum_algorithm=none.Удалите любые параметры
innodb_checksumsиз ваших конфигурационных файлов и скриптов запуска, чтобы избежать конфликтов сinnodb_checksum_algorithm.innodb_checksums=OFFавтоматически устанавливаетinnodb_checksum_algorithm=none.innodb_checksums=ONигнорируется и переопределяется любой другой настройкой дляinnodb_checksum_algorithm. -
Формат командной строки --innodb-cmp-per-index-enabled[={OFF|ON}]Системная переменная innodb_cmp_per_index_enabledОбласть видимости Глобальная Динамическая Да Тип Boolean Значение по умолчанию OFFВключает статистику, связанную со сжатием на уровне каждого индекса, в таблице Information Schema
INNODB_CMP_PER_INDEX. Поскольку сбор этой статистики может быть дорогостоящим, включайте этот параметр только в экземплярах разработки, тестирования или репликации во время настройки производительности, связанной с таблицамиInnoDB.Для получения дополнительной информации см. Раздел 24.4.7, «Таблицы INFORMATION_SCHEMA INNODB_CMP_PER_INDEX и INNODB_CMP_PER_INDEX_RESET», и Раздел 14.9.1.4, «Мониторинг сжатия таблиц InnoDB во время выполнения».
-
Формат командной строки --innodb-commit-concurrency=#Системная переменная innodb_commit_concurrencyОбласть видимости Глобальная Динамическая Да Тип Integer Значение по умолчанию 0Минимальное значение 0Максимальное значение 1000Количество транзакций, которые могут одновременно завершать работу. Значение 0 (по умолчанию) допускает одновременное завершение любого количества транзакций.
Значение
innodb_commit_concurrencyне может быть изменено во время выполнения с нуля на ненулевое значение или наоборот. Значение может быть изменено с одного ненулевого значения на другое. -
Формат командной строки --innodb-compress-debug=valueСистемная переменная innodb_compress_debugОбласть видимости Глобальная Динамическая Да Тип Enumeration Значение по умолчанию noneДопустимые значения nonezliblz4lz4hcСжимает все таблицы с использованием указанного алгоритма сжатия без необходимости определения атрибута
COMPRESSIONдля каждой таблицы. Этот параметр доступен только в том случае, если поддержка отладки компилируется с использованием параметраWITH_DEBUGCMake.Для получения дополнительной информации см. Раздел 14.9.2, «Сжатие страниц InnoDB».
-
innodb_compression_failure_threshold_pctФормат командной строки --innodb-compression-failure-threshold-pct=#Системная переменная innodb_compression_failure_threshold_pctОбласть видимости Глобальная Динамическая Да Тип Integer Значение по умолчанию 5Минимальное значение 0Максимальное значение 100Определяет пороговое значение уровня сбоев сжатия для таблицы в процентах, при достижении которого MySQL начинает добавлять заполнение в страницы, чтобы избежать дорогостоящих операций. Когда этот порог превышен, MySQL начинает оставлять дополнительное свободное место в каждой новой сжатой странице, динамически регулируя объем свободного места до процента размера страницы, указанного параметром
innodb_compression_pad_pct_max. Значение ноль отключает механизм, который отслеживает эффективность сжатия и динамически регулирует объем заполнения.Для получения дополнительной информации см. Раздел 14.9.1.6, «Сжатие для OLTP-нагрузок».
-
Формат командной строки --innodb-compression-level=#Системная переменная innodb_compression_levelОбласть видимости Глобальная Динамическая Да Тип Integer Значение по умолчанию 6Минимальное значение 0Максимальное значение 9Указывает уровень сжатия zlib для использования в таблицах и индексах
InnoDB. Более высокое значение позволяет разместить больше данных на устройстве хранения, за счет увеличения накладных расходов на ЦП во время сжатия. Более низкое значение позволяет уменьшить накладные расходы на ЦП, когда пространство хранения не является критичным, или вы ожидаете, что данные не будут особенно сжимаемыми.Для получения дополнительной информации см. Раздел 14.9.1.6, «Сжатие для OLTP-нагрузок».
-
innodb_compression_pad_pct_maxФормат командной строки --innodb-compression-pad-pct-max=#Системная переменная innodb_compression_pad_pct_maxОбласть действия Глобальная Динамическая Да Тип Целое число Значение по умолчанию 50Минимальное значение 0Максимальное значение 75Указывает максимальный процент, который может быть зарезервирован как свободное место в каждом сжатом блоке, позволяя переупорядочить данные и журнал изменений в пределах страницы при обновлении таблицы или индекса, когда данные могут быть сжаты повторно. Применяется только тогда, когда
innodb_compression_failure_threshold_pctустановлено ненулевым значением, и скорость обработки превышает пороговое значение.Дополнительную информацию см. в разделе 14.9.1.6 «Сжатие для рабочих нагрузок OLTP».
-
Формат командной строки --innodb-concurrency-tickets=#Системная переменная innodb_concurrency_ticketsОбласть действия Глобальная Динамическая Да Тип Целое число Значение по умолчанию 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таблицы Информационной схемыINNODB_TRX.Дополнительную информацию см. в разделе 14.8.5 «Настройка конкурентности потоков для InnoDB».
-
Формат командной строки --innodb-data-file-path=file_nameСистемная переменная innodb_data_file_pathОбласть действия Глобальная Динамическая Нет Тип Строка Значение по умолчанию 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. В противном случае значения KB округляются до ближайшей границы мегабайта (МБ). Сумма размеров файлов должна составлять как минимум немного больше 12 МБ.Дополнительную информацию о настройке см. в Конфигурация файлов данных системного табличного пространства. Инструкции по изменению размеров см. в Изменение размера системного табличного пространства.
-
Формат командной строки --innodb-data-home-dir=dir_nameСистемная переменная innodb_data_home_dirОбласть действия Глобальная Динамическая Нет Тип Имя каталога Общая часть пути к каталогу файлов данных
InnoDBтабличного пространства. Значение по умолчанию — каталог MySQLdata. Настройка объединяется с настройкойinnodb_data_file_path. Если вы зададите значение пустой строкой, вы можете указать абсолютный путь дляinnodb_data_file_path.В конце значения
innodb_data_home_dirтребуется слеш. Например:[mysqld] innodb_data_home_dir = /path/to/myibdata/
Эта настройка не влияет на расположение других табличных пространств.
Дополнительная информация см. в разделе 14.8.1 «Конфигурация запуска InnoDB».
-
Формат командной строки --innodb-deadlock-detect[={OFF|ON}]Введено 5.7.15 Системная переменная innodb_deadlock_detectОбласть действия Глобальная Динамическая Да Тип Булево Значение по умолчанию ONЭта опция используется для отключения обнаружения тупиков. В системах с высокой параллельностью обнаружение тупиков может привести к замедлению, когда множество потоков ожидают одного и того же блокирования. Иногда может быть эффективнее отключить обнаружение тупиков и полагаться на настройку
innodb_lock_wait_timeoutдля отката транзакции при возникновении тупика.Дополнительную информацию см. в разделе 14.7.5.2 «Обнаружение тупиков».
-
Формат командной строки --innodb-default-row-format=valueСистемная переменная innodb_default_row_formatОбласть видимости Глобальная Динамическая Да Тип Перечисление Значение по умолчанию 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. Для получения дополнительной информации см. Defining the Row Format of a Table.Внутренние временные таблицы
InnoDB, созданные сервером для обработки запросов, используют формат строкDYNAMICнезависимо от настройкиinnodb_default_row_format. -
innodb_disable_sort_file_cacheФормат командной строки --innodb-disable-sort-file-cache[={OFF|ON}]Системная переменная innodb_disable_sort_file_cacheОбласть видимости Глобальная Динамическая Да Тип Булево Значение по умолчанию OFFОтключает кэш файловой системы операционной системы для временных файлов сортировки слиянием. Эффект заключается в открытии таких файлов с эквивалентом
O_DIRECT. -
innodb_disable_resize_buffer_pool_debugФормат командной строки --innodb-disable-resize-buffer-pool-debug[={OFF|ON}]Системная переменная innodb_disable_resize_buffer_pool_debugОбласть видимости Глобальная Динамическая Да Тип Булево Значение по умолчанию ONОтключает изменение размера пула буферов
InnoDB. Этот параметр доступен только в том случае, если поддержка отладки включена с помощью параметраWITH_DEBUGCMake. -
Формат командной строки --innodb-doublewrite[={OFF|ON}]Системная переменная innodb_doublewriteОбласть видимости Глобальная Динамическая Нет Тип Булево Значение по умолчанию ONКогда включен (по умолчанию),
InnoDBсохраняет все данные дважды, сначала в , затем в фактический . Эта переменная может быть отключена с помощью--skip-innodb-doublewriteдля тестов производительности или случаев, когда требуется максимальная производительность, а не целостность данных или возможные сбои.Если файлы данных системного табличного пространства (файлы
ibdata*) расположены на устройствах Fusion-io, которые поддерживают атомарную запись, буферизация двойной записи автоматически отключается, и для всех файлов данных используются атомарные записи Fusion-io. Поскольку настройка буфера двойной записи является глобальной, буферизация двойной записи также отключается для файлов данных, расположенных на оборудовании, не относящемся к Fusion-io. Эта функция поддерживается только на оборудовании Fusion-io и включена только для Fusion-io NVMFS в Linux. Для того чтобы в полной мере воспользоваться преимуществами этой функции, рекомендуется настройкаinnodb_flush_methodO_DIRECT.Для получения дополнительной информации см. Раздел 14.6.5, «Doublewrite Buffer».
-
Формат командной строки --innodb-fast-shutdown=#Системная переменная innodb_fast_shutdownОбласть видимости Глобальная Динамическая Да Тип Целое число Значение по умолчанию 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Область видимости Глобальная Динамическая Да Тип Целое число Значение по умолчанию 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-format=valueУстаревший Да Системная переменная innodb_file_formatОбласть действия Глобальная Динамическая Да Тип Строка Значение по умолчанию BarracudaДопустимые значения AntelopeBarracudaВключает формат файла
InnoDBдля табличных пространств. Поддерживаемые форматы файлов —AntelopeиBarracuda.Antelope— это исходный формат файловInnoDB, который поддерживает форматы строкREDUNDANTиCOMPACT.Barracuda— это новый формат файла, который поддерживает форматы строкCOMPRESSEDиDYNAMIC.Форматы строк
COMPRESSEDиDYNAMICобеспечивают важные функции хранения для таблицInnoDB. См. Раздел 14.11, «Форматы строк InnoDB».Изменение параметра
innodb_file_formatне влияет на формат файла существующих файлов табличного пространстваInnoDB.Параметр
innodb_file_formatне применяется к общим табличным пространствам, которые поддерживают таблицы всех форматов строк. См. Раздел 14.6.3.3, «Общие табличные пространства».Значение по умолчанию параметра
innodb_file_formatбыло изменено наBarracudaв MySQL 5.7.Настройка
innodb_file_formatигнорируется при создании таблиц, использующих формат строкиDYNAMIC. Таблица, созданная с использованием формата строкиDYNAMIC, всегда использует формат файлаBarracudaнезависимо от настройкиinnodb_file_format. Для использования формата строкиCOMPRESSED, необходимо установитьinnodb_file_formatна значениеBarracuda.Параметр
innodb_file_formatустарел; ожидается его удаление в будущих версиях. Цель параметраinnodb_file_formatсостояла в возможности пользователей понизить версию встроенной версииInnoDBв более ранних версиях MySQL. Теперь, когда эти версии MySQL достигли конца своего жизненного цикла, поддержка понижения, предоставляемая этим параметром, больше не требуется.Дополнительную информацию см. в Разделе 14.10, «Управление форматами файлов InnoDB».
-
Формат командной строки --innodb-file-format-check[={OFF|ON}]Устаревший Да Системная переменная innodb_file_format_checkОбласть действия Глобальная Динамическая Нет Тип Булево Значение по умолчанию ONПри запуске сервера эта переменная может быть установлена в 1 или 0 для включения или отключения проверки
InnoDBтега в (например,AntelopeилиBarracuda). Если тег проверяется и является более высоким, чем поддерживается текущей версиейInnoDB, возникает ошибка, иInnoDBне запускается. Если тег не выше,InnoDBустанавливает значениеinnodb_file_format_maxв тег формата файла.ПримечаниеНесмотря на то, что значение по умолчанию иногда отображается как
ONилиOFF, всегда используйте числовые значения 1 или 0, чтобы включить или выключить этот параметр в файле конфигурации или строке командной строки.Дополнительную информацию см. в Разделе 14.10.2.1, «Проверка совместимости при запуске InnoDB».
Параметр
innodb_file_format_checkустарел вместе с параметромinnodb_file_format. Ожидается, что оба параметра будут удалены в будущих версиях. -
Формат командной строки --innodb-file-format-max=valueУстаревший Да Системная переменная innodb_file_format_maxОбласть действия Глобальная Динамическая Да Тип Строка Значение по умолчанию BarracudaДопустимые значения AntelopeBarracudaПри запуске сервера
InnoDBустанавливает значение этой переменной в тег в (например,AntelopeилиBarracuda). Если сервер создаёт или открывает таблицу с «более высоким» форматом файла, он устанавливает значениеinnodb_file_format_maxв этот формат.Связанная информация: Раздел 14.10, «Управление форматами файлов InnoDB».
Параметр
innodb_file_format_maxустарел вместе с параметромinnodb_file_format. Ожидается, что оба параметра будут удалены в будущих версиях. -
Формат командной строки --innodb-file-per-table[={OFF|ON}]Системная переменная innodb_file_per_tableОбласть действия Глобальная Динамическая Да Тип Булево Значение по умолчанию ONПри включенном
innodb_file_per_table, таблицы по умолчанию создаются в табличных пространствах по принципу «файл на таблицу». При отключении по умолчанию таблицы создаются в системном табличном пространстве. Информация о табличных пространствах «файл на таблицу»: Раздел 14.6.3.2, «Табличные пространства „файл на таблицу“». Информация о системном табличном пространствеInnoDB: Раздел 14.6.3.1, «Системное табличное пространство».Переменную
innodb_file_per_tableможно настроить во время работы, используя операторSET GLOBAL, указанный в командной строке при запуске или в файле параметров. Настройка во время работы требует привилегий, достаточных для изменения глобальных системных переменных (см. Раздел 5.1.8.1, «Привилегии на системные переменные») и немедленно влияет на работу всех подключений.При усечении или удалении таблицы, находящейся в табличном пространстве «файл на таблицу», освобождённое пространство возвращается операционной системе. Усечение или удаление таблицы, находящейся в системном табличном пространстве, освобождает пространство только в системном табличном пространстве. Освобождённое пространство в системном табличном пространстве может быть использовано повторно для
InnoDBданных, но не возвращается операционной системе, так как файлы данных системного табличного пространства никогда не уменьшаются.При включенном
innodb_file_per_tableоперация копирования таблицыALTER TABLEнад таблицей, находящейся в системном табличном пространстве, неявно пересоздаёт таблицу в табличном пространстве «файл на таблицу». Чтобы этого избежать, отключитеinnodb_file_per_tableперед выполнением операций копирования таблицыALTER TABLEнад таблицами, находящимися в системном табличном пространстве.Настройка
innodb_file_per-tableне влияет на создание временных таблиц. Временные таблицы создаются во временном табличном пространстве. См. Раздел 14.6.3.5, «Временное табличное пространство».
-
Формат командной строки --innodb-fill-factor=#Системная переменная innodb_fill_factorОбласть действия Глобальная Динамическая Да Тип Целое число Значение по умолчанию 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записей.Дополнительную информацию см. в разделе 14.6.2.3, “Построение индексов в отсортированном виде”.
-
Формат командной строки --innodb-flush-log-at-timeout=#Системная переменная innodb_flush_log_at_timeoutОбласть действия Глобальная Динамическая Да Тип Целое число Значение по умолчанию 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Область действия Глобальная Динамическая Да Тип Перечисление Значение по умолчанию 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.
Сведения о комбинации настроек на реплике, обеспечивающей наибольшую устойчивость к неожиданным остановкам, см. в разделе 16.3.2, “Обработка неожиданной остановки реплики”.
ВниманиеМногие операционные системы и некоторые накопители ошибочно интерпретируют операцию сброса на диск. Они могут сообщить mysqld, что сброс выполнен, даже если это не так. В этом случае целостность транзакций не гарантируется даже при рекомендуемых настройках, и в худшем случае отключение электропитания может привести к повреждению данных
InnoDB. Использование кэша диска с батарейным питанием в контроллере SCSI диска или в самом диске ускоряет сброс файлов и делает операцию более безопасной. Вы также можете попробовать отключить кэширование операций записи на диск в аппаратных кэшах.
-
Формат командной строки --innodb-flush-method=valueСистемная переменная innodb_flush_methodОбласть действия Глобальная Динамическая Нет Тип Строка Значение по умолчанию NULLДопустимые значения (Unix) fsyncO_DSYNClittlesyncnosyncO_DIRECTO_DIRECT_NO_FSYNCДопустимые значения (Windows) async_unbufferednormalunbufferedОпределяет метод, используемый для записи данных в
InnoDB, что может влиять на производительность ввода-вывода.Если
innodb_flush_methodустановлено наNULLна системе Unix, по умолчанию используется опцияfsync. Еслиinnodb_flush_methodустановлено наNULLв Windows, по умолчанию используется опцияasync_unbuffered.Опции
innodb_flush_methodдля систем Unix-подобных систем включают:fsync:InnoDBиспользует системный вызовfsync()для записи данных и журнальных файлов.fsync— это значение по умолчанию.O_DSYNC:InnoDBиспользуетO_SYNCдля открытия и записи журнальных файлов иfsync()для записи данных.InnoDBне используетO_DSYNCнапрямую, поскольку были проблемы с ним на многих вариантах Unix.littlesync: Эта опция используется для внутренних тестов производительности и в настоящее время не поддерживается. Используйте на свой страх и риск.nosync: Эта опция используется для внутренних тестов производительности и в настоящее время не поддерживается. Используйте на свой страх и риск.O_DIRECT:InnoDBиспользуетO_DIRECT(илиdirectio()на Solaris) для открытия файлов данных и используетfsync()для записи данных и журнальных файлов. Эта опция доступна в некоторых версиях GNU/Linux, FreeBSD и Solaris.-
O_DIRECT_NO_FSYNC:InnoDBиспользуетO_DIRECTво время операций ввода-вывода записи, но пропускает системный вызовfsync()после каждой операции записи.До версии MySQL 5.7.25 данное значение не подходит для файловых систем, таких как XFS и EXT4, которые требуют системного вызова
fsync()для синхронизации изменений метаданных файловой системы. Если вы не уверены, требует ли ваша файловая система системного вызоваfsync()для синхронизации изменений метаданных файловой системы, используйтеO_DIRECTвместо этого.Начиная с MySQL 5.7.25,
fsync()вызывается после создания нового файла, после увеличения размера файла и после закрытия файла, чтобы гарантировать синхронизацию изменений метаданных файловой системы. Системный вызовfsync()всё ещё пропускается после каждой операции записи.Потеря данных возможна, если файлы журнала и файлы данных находятся на разных устройствах хранения, и происходит непредвиденное завершение работы до того, как записи в файл данных будут записаны в кэш устройства, который не поддерживает питание. Если вы используете или планируете использовать разные устройства хранения для файлов журнала и файлов данных, и ваши файлы данных находятся на устройстве с кэшем, который не поддерживает питание, используйте
O_DIRECTвместо этого.
Опции
innodb_flush_methodдля систем Windows включают:-
async_unbuffered:InnoDBиспользует асинхронный ввод-вывод Windows и небуферизованный ввод-вывод.async_unbuffered— это значение по умолчанию для систем Windows.Запуск MySQL сервера на жёстком диске с секторами 4К на Windows не поддерживается с
async_unbuffered. В качестве обходного решения используйтеinnodb_flush_method=normal. normal:InnoDBиспользует имитированный асинхронный ввод-вывод и буферизованный ввод-вывод.unbuffered:InnoDBиспользует имитированный асинхронный ввод-вывод и небуферизованный ввод-вывод.
Влияние каждого значения на производительность зависит от конфигурации оборудования и рабочей нагрузки. Оцените вашу конкретную конфигурацию, чтобы определить, какое значение использовать или оставить значение по умолчанию. Изучите переменную состояния
Innodb_data_fsyncs, чтобы увидеть общее количество вызововfsync()для каждого значения. Соотношение операций чтения и записи в вашей рабочей нагрузке может повлиять на производительность значения. Например, на системе с контроллером RAID и кэшем записи с батарейным питанием,O_DIRECTможет помочь избежать двойного буферизации между буферомInnoDBи кэшем файловой системы операционной системы. На некоторых системах, где файлы данных и журнальных записейInnoDBнаходятся на SAN, значение по умолчанию илиO_DSYNCможет быть быстрее для рабочей нагрузки с чтением, в основном с заявлениямиSELECT. Всегда тестируйте этот параметр с оборудованием и рабочей нагрузкой, которые отражают вашу производственную среду. Для советов по настройке ввода-вывода см. Раздел 8.5.8, «Оптимизация ввода-вывода InnoDB». -
Формат командной строки --innodb-flush-neighbors=#Системная переменная innodb_flush_neighborsОбласть действия Глобальная Динамическая Да Тип Перечисление Значение по умолчанию 1Допустимые значения 012Указывает, будут ли страницы из
InnoDBбуфера также записываться вinnodb_flush_neighbors.Значение 0 отключает
innodb_flush_neighbors. Незаписанные страницы в одном и том же блоке не записываются.Значение по умолчанию 1 записывает смежные грязные страницы в одном и том же блоке.
Значение 2 записывает грязные страницы в одном и том же блоке.
Когда данные таблицы хранятся на традиционном устройстве хранения, запись таких блоков в одной операции снижает издержки на операции ввода-вывода (в основном операции поиска на диске) по сравнению с записью отдельных страниц в разное время. Для данных таблиц, хранящихся в памяти, время поиска не является значимым фактором, и вы можете отключить эту настройку, чтобы распределить операции записи. Для получения дополнительной информации см. Раздел 14.8.3.5, «Настройка сброса кэша буфера».
-
Формат командной строки --innodb-flush-sync[={OFF|ON}]Системная переменная innodb_flush_syncОбласть действия Глобальная Динамическая Да Тип Булево Значение по умолчанию ONПеременная
innodb_flush_sync, которая включена по умолчанию, приводит к игнорированию настройкиinnodb_io_capacityво время всплесков активности ввода-вывода, которые происходят в пиковые моменты. Чтобы соответствовать скорости ввода-вывода, определенной настройкойinnodb_io_capacity, отключитеinnodb_flush_sync.Для получения информации о настройке переменной
innodb_flush_syncсм. Раздел 14.8.8, «Настройка пропускной способности ввода-вывода InnoDB».
-
Формат командной строки --innodb-flushing-avg-loops=#Системная переменная innodb_flushing_avg_loopsОбласть действия Глобальная Динамическая Да Тип Целое число Значение по умолчанию 30Минимальное значение 1Максимальное значение 1000Число итераций, в течение которых
InnoDBсохраняет ранее вычисленную моментальную фотографию состояния сброса, контролируя, насколько быстро отвечает на изменения . Увеличение значения делает скорость операций плавной и постепенной при изменении рабочей нагрузки. Уменьшение значения заставляет адаптивный сброс быстро реагировать на изменения рабочей нагрузки, что может вызвать всплески активности сброса, если рабочая нагрузка резко возрастает и уменьшается.Для получения дополнительной информации см. Раздел 14.8.3.5, «Настройка сброса буфера пула».
-
Формат командной строки --innodb-force-load-corrupted[={OFF|ON}]Системная переменная innodb_force_load_corruptedОбласть действия Глобальная Динамическая Нет Тип Булево Значение по умолчанию OFFРазрешает
InnoDBзагружать таблицы при запуске, которые помечены как поврежденные. Используйте только во время устранения неполадок, чтобы восстановить данные, которые в противном случае недоступны. После завершения устранения неполадок отключите этот параметр и перезапустите сервер. -
Формат командной строки --innodb-force-recovery=#Системная переменная innodb_force_recoveryОбласть действия Глобальная Динамическая Нет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 6Режим , обычно изменяется только в серьезных ситуациях устранения неполадок. Возможные значения от 0 до 6. Для значений и важной информации о
innodb_force_recoveryсм. Раздел 14.22.2, «Принудительное восстановление InnoDB».ПредупреждениеУстанавливайте эту переменную только в экстренных ситуациях со значением больше 0, чтобы вы могли запустить
InnoDBи сохранить ваши таблицы. В целях безопасностиInnoDBпредотвращает операцииINSERT,UPDATEилиDELETE, когдаinnodb_force_recoveryбольше 0. Значениеinnodb_force_recovery4 или выше переводитInnoDBв режим только для чтения.Эти ограничения могут привести к ошибке команд управления репликацией, потому что настройки репликации, такие как
relay_log_info_repository=TABLEиmaster_info_repository=TABLE, хранят информацию в таблицахInnoDB. -
Системная переменная innodb_ft_aux_tableОбласть действия Глобальная Динамическая Да Тип Строка Указывает полное имя таблицы
InnoDB, содержащей индексFULLTEXT. Эта переменная предназначена для диагностических целей и может быть установлена только во время выполнения. Например:SET GLOBAL innodb_ft_aux_table = 'test/t1';
После установки этой переменной с именем в формате
, таблицыdb_name/table_nameINFORMATION_SCHEMAINNODB_FT_INDEX_TABLE,INNODB_FT_INDEX_CACHE,INNODB_FT_CONFIG,INNODB_FT_DELETEDиINNODB_FT_BEING_DELETEDотображают информацию об индексе поиска для указанной таблицы.Для получения дополнительной информации см. Раздел 14.16.4, «Таблицы InnoDB INFORMATION_SCHEMA FULLTEXT Index».
-
Формат командной строки --innodb-ft-cache-size=#Системная переменная innodb_ft_cache_sizeОбласть действия Глобальная Динамическая Нет Тип Целое число Значение по умолчанию 8000000Минимальное значение 1600000Максимальное значение 80000000Единица измерения байт Объем памяти в байтах, выделенный для кеша индекса полнотекстового поиска
InnoDBFULLTEXT, который хранит обработанный документ в памяти при создании индексаInnoDBFULLTEXT. Вставки и обновления индексов записываются на диск только при достижении размера предела кешаinnodb_ft_cache_size.innodb_ft_cache_sizeопределяет размер кеша для каждой таблицы. Чтобы установить глобальный предел для всех таблиц, см.innodb_ft_total_cache_size.Для получения дополнительной информации см. InnoDB Full-Text Index Cache.
-
Формат командной строки --innodb-ft-enable-diag-print[={OFF|ON}]Системная переменная innodb_ft_enable_diag_printОбласть действия Глобальная Динамическая Да Тип Булево Значение по умолчанию 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Область видимости Глобальная, сессии Динамическая Да Тип Булево Значение по умолчанию ONУказывает, что набор связан с индексом
InnoDBFULLTEXTво время создания индекса. Если установлен параметрinnodb_ft_user_stopword_table, стоп-слова берутся из этой таблицы. В противном случае, если установлен параметрinnodb_ft_server_stopword_table, стоп-слова берутся из этой таблицы. В противном случае используется встроенный набор стоп-слов по умолчанию.Для получения дополнительной информации см. Раздел 12.9.4, «Стоп-слова полного текста».
-
Формат командной строки --innodb-ft-max-token-size=#Системная переменная innodb_ft_max_token_sizeОбласть видимости Глобальная Динамическая Нет Тип Целое число Значение по умолчанию 84Минимальное значение 10Максимальное значение 84Максимальная длина слов в символах, которые хранятся в индексе
InnoDBFULLTEXT. Установка ограничения на это значение уменьшает размер индекса, тем самым ускоряя запросы, за счет пропуска длинных ключевых слов или произвольных наборов букв, которые не являются настоящими словами и вряд ли будут поисковыми запросами.Для получения дополнительной информации см. Раздел 12.9.6, «Тонкая настройка поиска по полному тексту MySQL».
-
Формат командной строки --innodb-ft-min-token-size=#Системная переменная innodb_ft_min_token_sizeОбласть видимости Глобальная Динамическая Нет Тип Целое число Значение по умолчанию 3Минимальное значение 0Максимальное значение 16Минимальная длина слов, которые хранятся в индексе
InnoDBFULLTEXT. Увеличение этого значения уменьшает размер индекса, тем самым ускоряя запросы, за счет пропуска распространенных слов, которые вряд ли будут значимыми в контексте поиска, таких как английские слова “a” и “to”. Для контента, использующего кодировку CJK (китайский, японский, корейский), укажите значение 1.Для получения дополнительной информации см. Раздел 12.9.6, «Тонкая настройка поиска по полному тексту MySQL».
-
Формат командной строки --innodb-ft-num-word-optimize=#Системная переменная innodb_ft_num_word_optimizeОбласть видимости Глобальная Динамическая Да Тип Целое число Значение по умолчанию 2000Минимальное значение 1000Максимальное значение 10000Количество слов для обработки во время каждой операции
OPTIMIZE TABLEнад индексомInnoDBFULLTEXT. Поскольку операция массовой вставки или обновления таблицы, содержащей индекс поиска по полному тексту, может потребовать значительного обслуживания индекса для учета всех изменений, вы можете выполнить серию инструкцийOPTIMIZE TABLE, каждая из которых будет продолжать работу там, где остановилась предыдущая.Для получения дополнительной информации см. Раздел 12.9.6, «Тонкая настройка поиска по полному тексту MySQL».
-
Формат командной строки --innodb-ft-result-cache-limit=#Системная переменная innodb_ft_result_cache_limitОбласть видимости Глобальная Динамическая Да Тип Целое число Значение по умолчанию 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Область видимости Глобальная Динамическая Да Тип Строка Значение по умолчанию 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.Для получения дополнительной информации см. Раздел 12.9.4, «Стоп-слова полного текста».
-
Формат командной строки --innodb-ft-sort-pll-degree=#Системная переменная innodb_ft_sort_pll_degreeОбласть видимости Глобальная Динамическая Нет Тип Целое число Значение по умолчанию 2Минимальное значение 1Максимальное значение 16Количество потоков, используемых параллельно для индексации и токенизации текста в индексе
InnoDBFULLTEXTпри построении .Для получения дополнительной информации см. Раздел 14.6.2.4, «Индексы полного текста InnoDB», и
innodb_sort_buffer_size.
-
Формат командной строки --innodb-ft-total-cache-size=#Системная переменная innodb_ft_total_cache_sizeОбласть видимости Глобальная Динамическая Нет Тип Целое число Значение по умолчанию 640000000Минимальное значение 32000000Максимальное значение 1600000000Единица измерения байты Общий объем выделенной памяти, в байтах, для кэша индекса полнотекстового поиска
InnoDBдля всех таблиц. Создание многочисленных таблиц, каждая из которых имеет индексFULLTEXTпоиска, может потреблять значительную часть доступной памяти.innodb_ft_total_cache_sizeопределяет глобальный предел памяти для всех индексов полнотекстового поиска, чтобы избежать чрезмерного потребления памяти. Если глобальный предел достигнут операцией индексации, инициируется принудительная синхронизация.Для получения дополнительной информации см. InnoDB Full-Text Index Cache.
-
Формат командной строки --innodb-ft-user-stopword-table=db_name/table_nameСистемная переменная innodb_ft_user_stopword_tableОбласть видимости Глобальная, сеанса Динамическая Да Тип Строка Значение по умолчанию 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.Для получения дополнительной информации см. Раздел 12.9.4, «Стоп-слова полнотекстового поиска».
-
Формат командной строки --innodb-io-capacity=#Системная переменная innodb_io_capacityОбласть видимости Глобальная Динамическая Да Тип Целое число Значение по умолчанию 200Минимальное значение 100Максимальное значение (64-разрядные платформы) 2**64-1Максимальное значение 2**32-1Переменная
innodb_io_capacityопределяет количество операций ввода-вывода в секунду (IOPS), доступных для фоновых задачInnoDB, таких как страниц из и слияние данных из .Информацию о настройке переменной
innodb_io_capacityсм. в Разделе 14.8.8, «Настройка емкости ввода-вывода InnoDB». -
Формат командной строки --innodb-io-capacity-max=#Системная переменная innodb_io_capacity_maxОбласть видимости Глобальная Динамическая Да Тип Целое число Значение по умолчанию 2 * innodb_io_capacity, min of 2000Минимальное значение 100Максимальное значение (Unix, 64-разрядные платформы) 2**64-1Максимальное значение (другие) 2**32-1Если активность очистки отстает,
InnoDBможет выполнять очистку более агрессивно, с более высокой скоростью операций ввода-вывода в секунду (IOPS), чем определено переменнойinnodb_io_capacity. Переменнаяinnodb_io_capacity_maxопределяет максимальное количество операций IOPS, выполняемых фоновыми задачамиInnoDBв таких ситуациях.Информацию о настройке переменной
innodb_io_capacity_maxсм. в Разделе 14.8.8, «Настройка емкости ввода-вывода InnoDB». -
Формат командной строки --innodb-large-prefix[={OFF|ON}]Устаревший Да Системная переменная innodb_large_prefixОбласть видимости Глобальная Динамическая Да Тип Булево Значение по умолчанию ONКогда этот параметр включен, префиксы ключей индекса длиной более 767 байт (до 3072 байт) разрешены для таблиц
InnoDB, использующих или формат строк. См. Раздел 14.23, «Ограничения InnoDB» для максимальных значений, связанных с префиксами ключей индекса при различных настройках.Для таблиц, использующих или формат строк, этот параметр не влияет на допустимую длину префикса ключа индекса.
innodb_large_prefixвключен по умолчанию в MySQL 5.7. Это изменение совпадает с изменением значения по умолчанию дляinnodb_file_format, которое по умолчанию установлено вBarracudaв MySQL 5.7. Вместе эти изменения значений по умолчанию позволяют создавать более длинные префиксы ключей индекса при использовании формата строкDYNAMICилиCOMPRESSED. Если любой из параметров установлен в значение, отличное от значения по умолчанию, префиксы ключей индекса длиной более 767 байт будут неявно усечены.innodb_large_prefixустарел; ожидается его удаление в будущей версии.innodb_large_prefixбыл введен для отключения больших префиксов ключей индекса для обеспечения совместимости с более ранними версиямиInnoDB, которые не поддерживают большие префиксы ключей индекса. -
innodb_limit_optimistic_insert_debugФормат командной строки --innodb-limit-optimistic-insert-debug=#Системная переменная innodb_limit_optimistic_insert_debugОбласть видимости Глобальная Динамическая Да Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 2**32-1Ограничивает количество записей на страницу. Значение по умолчанию 0 означает, что ограничение не накладывается. Этот параметр доступен только в том случае, если поддержка отладки скомпилирована с использованием параметра
WITH_DEBUGCMake.
-
Формат командной строки --innodb-lock-wait-timeout=#Системная переменная innodb_lock_wait_timeoutОбласть действия Глобальная, Сеанс Динамическая Да Тип Целое число Значение по умолчанию 50Минимальное значение 1Максимальное значение 1073741824Единицы измерения секунды Время в секундах, которое
InnoDBждет блокировки, прежде чем отказаться. Значение по умолчанию составляет 50 секунд. Транзакция, которая пытается получить доступ к строке, заблокированной другойInnoDBтранзакцией, ждет не более этого времени для записи в строку, прежде чем выдать следующую ошибку:ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
Когда происходит таймаут ожидания блокировки, выполняется текущая команда (а не вся транзакция). Чтобы откатить всю транзакцию, запустите сервер с параметром
--innodb-rollback-on-timeout. См. также Раздел 14.22.4, «Обработка ошибок InnoDB».Вы можете уменьшить это значение для высокоинтерактивных приложений или систем, чтобы быстро отображать обратную связь пользователю или помещать обновление в очередь для обработки позже. Вы можете увеличить это значение для длительных фоновых операций, таких как этап преобразования в хранилище данных, который ожидает завершения других крупных операций вставки или обновления.
innodb_lock_wait_timeoutприменяется только к блокировкам строкInnoDB. MySQL не происходит внутриInnoDB, и этот таймаут не применяется к ожиданиям блокировок таблиц.Значение таймаута ожидания блокировки не применяется к случаям, когда
innodb_deadlock_detectвключено (по умолчанию), посколькуInnoDBсразу же обнаруживает тупиковые ситуации и отменяет одну из заблокированных транзакций. Еслиinnodb_deadlock_detectотключено,InnoDBполагается наinnodb_lock_wait_timeoutдля отката транзакции при возникновении тупика. См. Раздел 14.7.5.2, «Обнаружение тупиковых ситуаций».innodb_lock_wait_timeoutможет быть установлено во время выполнения с помощью командыSET GLOBALилиSET SESSION. Изменение значенияGLOBALтребует привилегий, достаточных для установки глобальных системных переменных (см. Раздел 5.1.8.1, «Привилегии системных переменных») и влияет на работу всех последующих подключений. Любой клиент может изменить значениеSESSIONдляinnodb_lock_wait_timeout, что влияет только на данного клиента.
-
innodb_locks_unsafe_for_binlogФормат командной строки --innodb-locks-unsafe-for-binlog[={OFF|ON}]Устаревший Да Системная переменная innodb_locks_unsafe_for_binlogОбласть действия Глобальная Динамическая Нет Тип Булево Значение по умолчанию OFFЭта переменная влияет на то, как
InnoDBиспользует блокировки для поиска и сканирования индексов.innodb_locks_unsafe_for_binlogустарела; ожидается, что она будет удалена в будущих выпусках MySQL.Обычно
InnoDBиспользует алгоритм блокировки следующего ключа, который объединяет блокировку строк индекса с .InnoDBвыполняет блокировку на уровне строк таким образом, что при поиске или сканировании индекса таблицы он устанавливает общие или эксклюзивные блокировки на встречающиеся записи индекса. Таким образом, блокировки на уровне строк фактически являются блокировками записей индекса. Кроме того, блокировка следующего ключа на записи индекса также влияет на зазор перед записью индекса. То есть, блокировка следующего ключа — это блокировка записи индекса плюс блокировка зазора на зазоре, предшествующем записи индекса. Если у одной сессии есть общая или эксклюзивная блокировка записиRв индексе, другая сессия не может вставить новую запись индекса в зазор непосредственно передRв порядке индекса. См. Раздел 14.7.1, «InnoDB Locking».По умолчанию значение
innodb_locks_unsafe_for_binlogравно 0 (выключено), что означает, что блокировка зазоров включена:InnoDBиспользует блокировки следующего ключа для поиска и сканирования индексов. Чтобы включить переменную, установите её в 1. Это приводит к отключению блокировки зазоров:InnoDBиспользует только блокировки записей индекса для поиска и сканирования индексов.Включение
innodb_locks_unsafe_for_binlogне отключает использование блокировки зазоров для проверки ограничений внешнего ключа или проверки дублирующихся ключей.Воздействие включения
innodb_locks_unsafe_for_binlogтакое же, как установка уровня изоляции транзакции наREAD COMMITTED, за исключением следующих случаев:Включение
innodb_locks_unsafe_for_binlog— это глобальная настройка, которая влияет на все сессии, в то время как уровень изоляции может быть установлен глобально для всех сессий или индивидуально для каждой сессии.innodb_locks_unsafe_for_binlogможет быть установлена только при запуске сервера, в то время как уровень изоляции может быть установлен при запуске или изменён во время выполнения.
READ COMMITTEDпоэтому предоставляет более точный и гибкий контроль, чемinnodb_locks_unsafe_for_binlog. Дополнительную информацию о влиянии уровня изоляции на блокировку зазоров см. в Разделе 14.7.2.1, «Transaction Isolation Levels».Включение
innodb_locks_unsafe_for_binlogможет привести к проблемам с "фантомами", поскольку другие сессии могут вставлять новые строки в зазоры при отключенной блокировке зазоров. Предположим, что существует индекс по столбцуidтаблицыchildи вы хотите прочитать и заблокировать все строки из таблицы, имеющие идентификатор, больший, чем 100, с намерением позже обновить некоторые столбцы в выбранных строках:SELECT * FROM child WHERE id > 100 FOR UPDATE;
Запрос сканирует индекс, начиная с первой записи, где
idбольше 100. Если блокировки, установленные на записях индекса в этом диапазоне, не предотвращают вставки в зазоры, другая сессия может вставить новую строку в таблицу. В результате, если вы выполните тот жеSELECTснова в рамках той же транзакции, вы увидите новую строку в наборе результатов, возвращенном запросом. Это также означает, что если в базу данных добавляются новые элементы,InnoDBне гарантирует сериализуемость. Поэтому, еслиinnodb_locks_unsafe_for_binlogвключена,InnoDBгарантирует, как минимум, уровень изоляцииREAD COMMITTED. (Конфликтно-сериализуемость всё ещё гарантируется.) Дополнительную информацию о "фантомах" см. в Разделе 14.7.4, «Phantom Rows».Включение
innodb_locks_unsafe_for_binlogимеет дополнительное влияние:Для
UPDATEилиDELETEоператоров,InnoDBудерживает блокировки только для строк, которые он обновляет или удаляет. Блокировки записей для несовпадающих строк освобождаются после того, как MySQL оценил условиеWHERE. Это значительно снижает вероятность тупиков, но они всё ещё могут возникнуть.Для
UPDATEоператоров, если строка уже заблокирована,InnoDBвыполняет “полупоследовательный” чтение, возвращая последнюю подтверждённую версию MySQL, чтобы MySQL мог определить, соответствует ли строка условиюWHEREоператораUPDATE. Если строка соответствует (должна быть обновлена), MySQL снова считывает строку, и на этот разInnoDBлибо блокирует её, либо ждёт блокировки на ней.
Рассмотрим следующий пример, начиная с этой таблицы:
CREATE TABLE t (a INT NOT NULL, b INT) ENGINE = InnoDB; INSERT INTO t VALUES (1,2),(2,3),(3,2),(4,3),(5,2); COMMIT;
В этом случае таблица не имеет индексов, поэтому для поиска и сканирования индексов используется скрытый кластерный индекс для блокировки записей (см. Раздел 14.6.2.1, «Clustered and Secondary Indexes»).
Предположим, что один клиент выполняет
UPDATEс помощью этих операторов:SET autocommit = 0; UPDATE t SET b = 5 WHERE b = 3;
Предположим также, что второй клиент выполняет
UPDATEс помощью этих операторов после выполнения первого клиента:SET autocommit = 0; UPDATE t SET b = 4 WHERE b = 2;
Когда
InnoDBвыполняет каждыйUPDATE, он сначала получает эксклюзивную блокировку для каждой строки, а затем определяет, следует ли её модифицировать. ЕслиInnoDBне изменяет строку иinnodb_locks_unsafe_for_binlogвключена, он освобождает блокировку. В противном случаеInnoDBудерживает блокировку до конца транзакции. Это влияет на обработку транзакций следующим образом.Если
innodb_locks_unsafe_for_binlogотключена, первыйUPDATEполучает x-блокировки и не освобождает ни одной из них:x-lock(1,2); retain x-lock x-lock(2,3); update(2,3) to (2,5); retain x-lock x-lock(3,2); retain x-lock x-lock(4,3); update(4,3) to (4,5); retain x-lock x-lock(5,2); retain x-lock
Второй
UPDATEблокируется, как только пытается получить какие-либо блокировки (потому что первый update удерживает блокировки на всех строках) и не продолжает выполнение, пока первыйUPDATEне завершит или откажется:x-lock(1,2); block and wait for first UPDATE to commit or roll back
Если
innodb_locks_unsafe_for_binlogвключена, первыйUPDATEполучает x-блокировки и освобождает те, для которых он не производит изменения:x-lock(1,2); unlock(1,2) x-lock(2,3); update(2,3) to (2,5); retain x-lock x-lock(3,2); unlock(3,2) x-lock(4,3); update(4,3) to (4,5); retain x-lock x-lock(5,2); unlock(5,2)
Для второго
UPDATE,InnoDBвыполняет “полупоследовательный” чтения, возвращая последнюю подтверждённую версию каждой строки MySQL, чтобы MySQL мог определить, соответствует ли строка условиюWHEREUPDATE:x-lock(1,2); update(1,2) to (1,4); retain x-lock x-lock(2,3); unlock(2,3) x-lock(3,2); update(3,2) to (3,4); retain x-lock x-lock(4,3); unlock(4,3) x-lock(5,2); update(5,2) to (5,4); retain x-lock
-
Формат командной строки --innodb-log-buffer-size=#Системная переменная innodb_log_buffer_sizeОбласть видимости Глобальная Динамическая Нет Тип Целое число Значение по умолчанию 16777216Минимальное значение 1048576Максимальное значение 4294967295Размер в байтах буфера, который
InnoDBиспользует для записи на диск. Значение по умолчанию изменилось с 8 МБ на 16 МБ с внедрением значений 32 КБ и 64 КБinnodb_page_size. Большой буфер позволяет выполнять большие транзакции без необходимости записи журнала на диск до завершения транзакций. Таким образом, если у вас есть транзакции, которые обновляют, вставляют или удаляют много строк, увеличение размера буфера журнала экономит операции ввода-вывода на диске. Для получения дополнительной информации см. Конфигурация памяти и Раздел 8.5.4, «Оптимизация повторной записи журнала InnoDB». Для получения общих рекомендаций по настройке ввода-вывода см. Раздел 8.5.8, «Оптимизация дискового ввода-вывода InnoDB». -
Формат командной строки --innodb-log-checkpoint-now[={OFF|ON}]Системная переменная innodb_log_checkpoint_nowОбласть видимости Глобальная Динамическая Да Тип Логическое Значение по умолчанию OFFВключите этот параметр отладки, чтобы принудительно заставить
InnoDBзаписать контрольную точку. Эта опция доступна только в том случае, если поддержка отладки включена в компиляцию с помощью опцииWITH_DEBUGCMake. -
Формат командной строки --innodb-log-checksums[={OFF|ON}]Системная переменная innodb_log_checksumsОбласть видимости Глобальная Динамическая Да Тип Логическое Значение по умолчанию ONВключает или отключает контрольные суммы для страниц журнала повторной записи.
innodb_log_checksums=ONвключает алгоритм контрольной суммыCRC-32Cдля страниц журнала повторной записи. Когдаinnodb_log_checksumsотключен, содержимое поля контрольной суммы страницы журнала повторной записи игнорируется.Контрольные суммы на странице заголовка журнала повторной записи и страницах контрольных точек журнала повторной записи никогда не отключаются.
-
Формат командной строки --innodb-log-compressed-pages[={OFF|ON}]Системная переменная innodb_log_compressed_pagesОбласть видимости Глобальная Динамическая Да Тип Логическое Значение по умолчанию 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для количества байтов, записанных в файлы журнала повторной записи.Для получения дополнительной информации см. Раздел 14.9.1.6, «Сжатие для рабочих нагрузок OLTP».
-
Формат командной строки --innodb-log-file-size=#Системная переменная innodb_log_file_sizeОбласть видимости Глобальная Динамическая Нет Тип Целое число Значение по умолчанию 50331648Минимальное значение (≥ 5.7.11) 4194304Минимальное значение (≤ 5.7.10) 1048576Максимальное значение 512GB / innodb_log_files_in_groupЕдиница измерения байты Размер в байтах каждого файла журнала в группе. Суммарный размер файлов журнала (
innodb_log_file_size*innodb_log_files_in_group) не может превышать максимальное значение, которое немного меньше 512 ГБ. Например, пара файлов журнала размером 255 ГБ приближается к пределу, но не превышает его. Значение по умолчанию — 48 МБ.Как правило, суммарный размер файлов журнала должен быть достаточно большим, чтобы сервер мог сглаживать пики и спады активности рабочей нагрузки, что часто означает наличие достаточного пространства в журнале повторной записи для обработки более чем часа активности записи. Чем больше значение, тем меньше требуется активности очистки контрольных точек в буферном пуле, что экономит операции ввода-вывода на диске. Более крупные файлы журнала также замедляют восстановление.
Минимальное значение
innodb_log_file_sizeбыло увеличено с 1 МБ до 4 МБ в MySQL 5.7.11.Для получения дополнительной информации см. Конфигурация файла журнала повторной записи. Для получения общих рекомендаций по настройке ввода-вывода см. Раздел 8.5.8, «Оптимизация дискового ввода-вывода InnoDB».
-
Формат командной строки --innodb-log-files-in-group=#Системная переменная innodb_log_files_in_groupОбласть видимости Глобальная Динамическая Нет Тип Целое число Значение по умолчанию 2Минимальное значение 2Максимальное значение 100Количество файлов в группе журналов.
InnoDBзаписывает в файлы циклически. Значение по умолчанию (и рекомендуемое) — 2. Расположение файлов указывается с помощьюinnodb_log_group_home_dir. Суммарный размер файлов журнала (innodb_log_file_size*innodb_log_files_in_group) может составлять до 512 ГБ.Для получения дополнительной информации см. Конфигурация файла журнала повторной записи.
-
Формат командной строки --innodb-log-group-home-dir=dir_nameСистемная переменная innodb_log_group_home_dirОбласть видимости Глобальная Динамическая Нет Тип Имя каталога Путь к каталогу файлов
InnoDB, количество которых указывается с помощьюinnodb_log_files_in_group. Если вы не указываете никаких переменных журналаInnoDB, по умолчанию создаются два файла с именамиib_logfile0иib_logfile1в каталоге данных MySQL. Размер файла журнала задается системной переменнойinnodb_log_file_size.Для получения дополнительной информации см. Конфигурация файла журнала повторной записи.
-
Формат командной строки --innodb-log-write-ahead-size=#Системная переменная innodb_log_write_ahead_sizeОбласть действия Глобальная Динамическая Да Тип Целое число Значение по умолчанию 8192Минимальное значение 512 (log file block size)Максимальное значение Equal to innodb_page_sizeЕдиница измерения байты Определяет размер блока предварительной записи для журнала отката в байтах. Для предотвращения «чтения при записи», установите
innodb_log_write_ahead_sizeв соответствии с размером блока кэша операционной системы или файловой системы. Значение по умолчанию составляет 8192 байта. Чтение при записи происходит, когда блоки журнала отката не полностью кэшируются в операционной системе или файловой системе из-за несоответствия между размером блока предварительной записи для журнала отката и размером блока кэша операционной системы или файловой системы.Допустимые значения для
innodb_log_write_ahead_sizeявляются кратными размеру блока файла журналаInnoDB(2n). Минимальное значение равно размеру блока файла журналаInnoDB(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слишком низким по отношению к размеру блока кэша операционной системы или файловой системы приводит к «чтению при записи». Установка слишком высокого значения может незначительно повлиять на производительность операций записи в файл журнала из-за записи нескольких блоков одновременно.Для получения дополнительной информации см. Раздел 8.5.4, «Оптимизация журнала отката InnoDB».
-
Формат командной строки --innodb-lru-scan-depth=#Системная переменная innodb_lru_scan_depthОбласть действия Глобальная Динамическая Да Тип Целое число Значение по умолчанию 1024Минимальное значение 100Максимальное значение (64-битные платформы) 2**64-1Максимальное значение 2**32-1Параметр, влияющий на алгоритмы и эвристики для работы
InnoDB. В первую очередь интересен специалистам по производительности, настраивающим задачи с интенсивным вводом-выводом. Он определяет, насколько глубоко в список страниц буферного пула LRU поток очистки страниц сканирует в поисках страниц для вывода. Это фоновая операция, выполняемая один раз в секунду.Значение, меньшее, чем значение по умолчанию, обычно подходит для большинства задач. Значение, намного большее, чем необходимо, может повлиять на производительность. Увеличивайте значение только в том случае, если у вас есть избыточная емкость ввода-вывода при типичной работе. И наоборот, если задача с интенсивным записью насыщает емкость ввода-вывода, уменьшите значение, особенно в случае большого буферного пула.
При настройке
innodb_lru_scan_depthначинайте с низкого значения и увеличивайте его, стремясь к тому, чтобы редко видеть нулевое количество свободных страниц. Также рассмотрите возможность измененияinnodb_lru_scan_depthпри изменении числа экземпляров буферного пула, посколькуinnodb_lru_scan_depth*innodb_buffer_pool_instancesопределяет объем работы, выполняемой потоком очистки страниц каждую секунду.Для получения дополнительной информации см. Раздел 14.8.3.5, «Настройка сброса буферного пула». Общие рекомендации по настройке ввода-вывода см. в Разделе 8.5.8, «Оптимизация ввода-вывода InnoDB».
-
Формат командной строки --innodb-max-dirty-pages-pct=#Системная переменная innodb_max_dirty_pages_pctОбласть действия Глобальная Динамическая Да Тип Числовой Значение по умолчанию 75Минимальное значение 0Максимальное значение 99.999InnoDBпытается выгрузить данные из кэша, чтобы процент грязных страниц не превысил это значение. Значение по умолчанию составляет 75.Параметр
innodb_max_dirty_pages_pctустанавливает целевое значение для операций сброса. Он не влияет на скорость сброса. Подробности управления скоростью сброса см. в Разделе 14.8.3.5, «Настройка сброса буферного пула».Для получения дополнительной информации см. Раздел 14.8.3.5, «Настройка сброса буферного пула». Общие рекомендации по настройке ввода-вывода см. в Разделе 8.5.8, «Оптимизация ввода-вывода InnoDB».
-
Формат командной строки --innodb-max-purge-lag-delay=#Системная переменная innodb_max_purge_lag_delayОбласть действия Глобальная Динамическая Да Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 10000000Единица измерения микросекунды Задает максимальную задержку в микросекундах для задержки, накладываемой при превышении порога
innodb_max_purge_lag. Указанное значениеinnodb_max_purge_lag_delayявляется верхним пределом периода задержки, вычисляемого по формулеinnodb_max_purge_lag.Для получения дополнительной информации см. Раздел 14.8.10, «Конфигурация очистки».
-
Формат командной строки --innodb-max-undo-log-size=#Системная переменная innodb_max_undo_log_sizeОбласть действия Глобальная Динамическая Да Тип Целое число Значение по умолчанию 1073741824Минимальное значение 10485760Максимальное значение 2**64-1Единица измерения байты Определяет пороговый размер для табличных пространств отката. Если табличное пространство отката превышает порог, его можно пометить для усечения, когда включена опция
innodb_undo_log_truncate. Значение по умолчанию — 1073741824 байта (1024 MiB).Для получения дополнительной информации см. Усечение табличных пространств отката.
-
innodb_merge_threshold_set_all_debugФормат командной строки --innodb-merge-threshold-set-all-debug=#Системная переменная innodb_merge_threshold_set_all_debugОбласть действия Глобальная Динамическая Да Тип Целое число Значение по умолчанию 50Минимальное значение 1Максимальное значение 50Определяет значение в процентах, заполненности страницы для страниц индекса, которое переопределяет текущую настройку
MERGE_THRESHOLDдля всех индексов, которые в данный момент находятся в кэше словаря. Эта опция доступна только в том случае, если поддержка отладки компилируется с использованием опцииWITH_DEBUGCMake. Для получения дополнительной информации см. Раздел 14.8.12, «Настройка порогового значения слияния для страниц индекса». -
Формат командной строки --innodb-monitor-disable={counter|module|pattern|all}Системная переменная innodb_monitor_disableОбласть действия Глобальная Динамическая Да Тип Строка Эта переменная действует как переключатель, отключающий
InnoDB. Данные счетчиков можно запрашивать с помощью таблицы Information SchemaINNODB_METRICS. Для получения информации об использовании см. Раздел 14.16.6, «Таблица метрик InnoDB INFORMATION_SCHEMA».innodb_monitor_disable='latch'отключает сбор статистики дляSHOW ENGINE INNODB MUTEX. Для получения дополнительной информации см. Раздел 13.7.5.15, «Оператор SHOW ENGINE». -
Формат командной строки --innodb-monitor-enable={counter|module|pattern|all}Системная переменная innodb_monitor_enableОбласть действия Глобальная Динамическая Да Тип Строка Эта переменная действует как переключатель, включающий
InnoDB. Данные счетчиков можно запрашивать с помощью таблицы Information SchemaINNODB_METRICS. Для получения информации об использовании см. Раздел 14.16.6, «Таблица метрик InnoDB INFORMATION_SCHEMA».innodb_monitor_enable='latch'включает сбор статистики дляSHOW ENGINE INNODB MUTEX. Для получения дополнительной информации см. Раздел 13.7.5.15, «Оператор SHOW ENGINE». -
Формат командной строки --innodb-monitor-reset={counter|module|pattern|all}Системная переменная innodb_monitor_resetОбласть действия Глобальная Динамическая Да Тип Перечисление Значение по умолчанию NULLДопустимые значения countermodulepatternallЭта переменная действует как переключатель, сбрасывающий значение счетчика для
InnoDBв ноль. Данные счетчиков можно запрашивать с помощью таблицы Information SchemaINNODB_METRICS. Для получения информации об использовании см. Раздел 14.16.6, «Таблица метрик InnoDB INFORMATION_SCHEMA».innodb_monitor_reset='latch'сбрасывает статистику, предоставляемуюSHOW ENGINE INNODB MUTEX. Для получения дополнительной информации см. Раздел 13.7.5.15, «Оператор SHOW ENGINE». -
Формат командной строки --innodb-monitor-reset-all={counter|module|pattern|all}Системная переменная innodb_monitor_reset_allОбласть действия Глобальная Динамическая Да Тип Перечисление Значение по умолчанию NULLДопустимые значения countermodulepatternallЭта переменная действует как переключатель, сбрасывающий все значения (минимальное, максимальное и т.д.) для
InnoDB. Данные счетчиков можно запрашивать с помощью таблицы Information SchemaINNODB_METRICS. Для получения информации об использовании см. Раздел 14.16.6, «Таблица метрик InnoDB INFORMATION_SCHEMA».
-
Формат командной строки --innodb-numa-interleave[={OFF|ON}]Системная переменная innodb_numa_interleaveОбласть действия Глобальная Динамическая Нет Тип Булево Значение по умолчанию OFFВключает политику NUMA для интерливирования памяти при выделении кэша страниц буфера
InnoDB. Когдаinnodb_numa_interleaveвключено, политика NUMA устанавливается наMPOL_INTERLEAVEдля процесса mysqld. После выделения кэша страниц буфераInnoDB, политика NUMA восстанавливается доMPOL_DEFAULT. Для того, чтобы параметрinnodb_numa_interleaveбыл доступен, MySQL должен быть скомпилирован на системе Linux с поддержкой NUMA.Начиная с MySQL 5.7.17, CMake устанавливает значение по умолчанию для
WITH_NUMAв зависимости от наличия поддержки NUMA на текущей платформе. Более подробная информация доступна в разделе 2.8.7, “Параметры конфигурации исходного кода MySQL”. -
Формат командной строки --innodb-old-blocks-pct=#Системная переменная innodb_old_blocks_pctОбласть действия Глобальная Динамическая Да Тип Целое число Значение по умолчанию 37Минимальное значение 5Максимальное значение 95Указывает приблизительный процент кэша страниц буфера
InnoDB, используемый для старых блоков. Диапазон значений от 5 до 95. Значение по умолчанию равно 37 (то есть 3/8 кэша). Часто используется в сочетании сinnodb_old_blocks_time.Более подробная информация доступна в разделе 14.8.3.3, “Устойчивость буферного кэша к полным таблицам”. Сведения о управлении буферным кэшем, алгоритме и политиках см. в разделе 14.5.1, “Буферный кэш”.
-
Формат командной строки --innodb-old-blocks-time=#Системная переменная innodb_old_blocks_timeОбласть действия Глобальная Динамическая Да Тип Целое число Значение по умолчанию 1000Минимальное значение 0Максимальное значение 2**32-1Единица измерения миллисекунды ненулевые значения предотвращают заполнение кэша данными, к которым обращаются только кратковременно, например, во время запросов. Увеличение этого значения обеспечивает большую защиту от того, что полные сканирования таблиц будут мешать кэшированию данных в буферном кэше.
Указывает, в течение скольки миллисекунд блок, добавленный в старую подгруппу, должен оставаться в ней после первого обращения, прежде чем его можно будет перенести в новую. Если значение равно 0, блок, добавленный в старую подгруппу, сразу переходит в новую при первом обращении, независимо от того, как скоро после добавления произошло обращение. Если значение больше 0, блоки остаются в старой подгруппе до тех пор, пока доступ к ним не произойдет по крайней мере через заданное количество миллисекунд после первого обращения. Например, значение 1000 означает, что блоки останутся в старой подгруппе в течение 1 секунды после первого обращения, прежде чем они смогут переместиться в новую.
Значение по умолчанию равно 1000.
Эта переменная часто используется в сочетании с
innodb_old_blocks_pct. Более подробная информация доступна в разделе 14.8.3.3, “Устойчивость буферного кэша к полным таблицам”. Сведения о управлении буферным кэшем, алгоритме и политиках см. в разделе 14.5.1, “Буферный кэш”. -
innodb_online_alter_log_max_sizeФормат командной строки --innodb-online-alter-log-max-size=#Системная переменная innodb_online_alter_log_max_sizeОбласть действия Глобальная Динамическая Да Тип Целое число Значение по умолчанию 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Область действия Глобальная Динамическая Нет Тип Целое число Значение по умолчанию -1(указывает автоподстройку размера; не присваивайте это значение напрямую)Минимальное значение 10Максимальное значение 2147483647Указывает максимальное количество файлов, которые могут быть открыты
InnoDBодновременно. Минимальное значение равно 10. Еслиinnodb_file_per_tableотключен, значение по умолчанию равно 300; в противном случае, значение по умолчанию равно 300 или значениюtable_open_cache, которое больше. -
Формат командной строки --innodb-optimize-fulltext-only[={OFF|ON}]Системная переменная innodb_optimize_fulltext_onlyОбласть действия Глобальная Динамическая Да Тип Булево Значение по умолчанию OFFИзменяет способ работы
OPTIMIZE TABLEсInnoDBтаблицами. Предполагается временное включение во время операций технического обслуживанияInnoDBтаблиц сFULLTEXTиндексами.По умолчанию
OPTIMIZE TABLEпереупорядочивает данные вOPTIMIZE TABLEтаблицы. При включении данного параметраOPTIMIZE TABLEпропускает переупорядочивание данных таблицы, а вместо этого обрабатывает новые добавленные, удаленные и обновленные данные токенов дляInnoDBFULLTEXTиндексов. Для получения дополнительной информации см. Оптимизация индексов InnoDB Full-Text.
-
Формат командной строки --innodb-page-cleaners=#Системная переменная innodb_page_cleanersОбласть действия Глобальная Динамическая Нет Тип Целое число Значение по умолчанию 4Минимальное значение 1Максимальное значение 64Количество потоков обработчиков страниц, которые очищают грязные страницы из экземпляров буфера пула. Потоки обработчиков страниц выполняют очистку списков и очистку по алгоритму LRU. Поток обработчика страниц был введён в MySQL 5.6 для перегрузки работы по очистке буфера пула от потока
InnoDBmaster. В MySQL 5.7,InnoDBподдерживает несколько потоков обработчиков страниц. Значение 1 сохраняет конфигурацию, существовавшую до MySQL 5.7, в которой был только один поток обработчика страниц. Когда используется несколько потоков обработчиков страниц, задачи по очистке буфера пула для каждого экземпляра буфера пула распределяются между свободными потоками обработчиков страниц. Значение по умолчанию дляinnodb_page_cleanersбыло изменено с 1 на 4 в MySQL 5.7. Если количество потоков обработчиков страниц превышает количество экземпляров буфера пула,innodb_page_cleanersавтоматически устанавливается в то же значение, что иinnodb_buffer_pool_instances.Если ваша рабочая нагрузка связана с записью ввода-вывода при очистке грязных страниц из экземпляров буфера пула в файлы данных, и если аппаратное обеспечение вашего системы обладает достаточной мощностью, увеличение количества потоков обработчиков страниц может помочь улучшить пропускную способность записи ввода-вывода.
Поддержка многопоточных обработчиков страниц расширена до фаз завершения и восстановления в MySQL 5.7.
Системный вызов
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Область действия Глобальная Динамическая Нет Тип Перечисление Значение по умолчанию 16384Допустимые значения 40968192163843276865536Указывает размер страницы для
InnoDB. Значения можно указывать в байтах или килобайтах. Например, значение размера страницы в 16 килобайт можно указать как 16384, 16КБ или 16к.innodb_page_sizeможно настроить только до инициализации экземпляра MySQL и нельзя изменить после. Если значение не указано, экземпляр инициализируется с использованием значения размера страницы по умолчанию. См. Раздел 14.8.1, «Конфигурация запуска InnoDB».Поддержка размеров страниц 32КБ и 64КБ была добавлена в MySQL 5.7. Для размеров страниц 32КБ и 64КБ максимальная длина строки составляет приблизительно 16000 байт.
ROW_FORMAT=COMPRESSEDне поддерживается, когдаinnodb_page_sizeустановлено на 32КБ или 64КБ. Дляinnodb_page_size=32kразмер экстента составляет 2 МБ. Дляinnodb_page_size=64KBразмер экстента составляет 4 МБ.innodb_log_buffer_sizeследует установить не менее 16 МБ (значение по умолчанию) при использовании размеров страниц 32КБ или 64КБ.Размер страницы по умолчанию 16КБ или больше подходит для широкого спектра, особенно для запросов, включающих сканирование таблиц и операций DML, связанных с массовыми обновлениями. Более мелкие размеры страниц могут быть эффективнее для рабочих нагрузок, включающих множество небольших записей, где проблема может заключаться в конкурентной ситуации, когда одна страница содержит много строк. Более мелкие страницы также могут быть эффективными с устройствами хранения данных, которые, как правило, используют небольшие размеры блоков. Поддержание размера страницы
InnoDBблизким к размеру блока устройства хранения минимизирует количество неизменённых данных, которые перезаписываются на диск.Минимальный размер файла для первого файла данных системного пространства таблиц (
ibdata1) отличается в зависимости от значенияinnodb_page_size. Дополнительную информацию см. в описании параметраinnodb_data_file_path.Экземпляр MySQL, использующий определённый размер страницы
InnoDB, не может использовать файлы данных или журнальные файлы из экземпляра, использующего другой размер страницы.Советы по общей настройке I/O см. в разделе Раздел 8.5.8, «Оптимизация ввода-вывода InnoDB на диске».
-
Формат командной строки --innodb-print-all-deadlocks[={OFF|ON}]Системная переменная innodb_print_all_deadlocksОбласть действия Глобальная Динамическая Да Тип Булево Значение по умолчанию OFFПри включении этого параметра информация обо всех в транзакциях пользователя
InnoDBзаписывается в журнал ошибокmysqld. В противном случае вы увидите информацию только о последнем тупике, используя командуSHOW ENGINE INNODB STATUS. ИногдаInnoDBтупик не является проблемой, потому чтоInnoDBсразу обнаруживает это состояние и откатывает одну из транзакций автоматически. Вы можете использовать этот параметр для отладки причин возникновения тупиков, если приложение не имеет соответствующей логики обработки ошибок для обнаружения отката и повторного выполнения операции. Большое количество тупиков может указывать на необходимость перестройки транзакций, которые издают илиSELECT ... FOR UPDATEоператоры для нескольких таблиц, чтобы каждая транзакция обращалась к таблицам в одном и том же порядке, тем самым избегая тупиковой ситуации.Для связанной информации см. Раздел 14.7.5, «Тупики в InnoDB».
-
Формат командной строки --innodb-purge-batch-size=#Системная переменная innodb_purge_batch_sizeОбласть видимости Глобальная Динамическая Да Тип Целое число Значение по умолчанию 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со значения по умолчанию.Для получения дополнительной информации см. Раздел 14.8.10, «Конфигурация очистки».
-
Формат командной строки --innodb-purge-threads=#Системная переменная innodb_purge_threadsОбласть видимости Глобальная Динамическая Нет Тип Целое число Значение по умолчанию 4Минимальное значение 1Максимальное значение 32Количество фоновых потоков, предназначенных для операции
InnoDB. Увеличение значения создает дополнительные потоки очистки, что может повысить эффективность на системах, где операции выполняются с несколькими таблицами.Для получения дополнительной информации см. Раздел 14.8.10, «Конфигурация очистки».
-
innodb_purge_rseg_truncate_frequencyФормат командной строки --innodb-purge-rseg-truncate-frequency=#Системная переменная innodb_purge_rseg_truncate_frequencyОбласть видимости Глобальная Динамическая Да Тип Целое число Значение по умолчанию 128Минимальное значение 1Максимальное значение 128Определяет частоту, с которой система очистки освобождает сегменты отката, в терминах количества вызовов очистки. Таблица пространства отката не может быть усечена, пока не будут освобождены ее сегменты отката. Обычно система очистки освобождает сегменты отката один раз каждые 128 раз, когда вызывается очистка. Значение по умолчанию равно 128. Уменьшение этого значения увеличивает частоту, с которой поток очистки освобождает сегменты отката.
innodb_purge_rseg_truncate_frequencyпредназначен для использования сinnodb_undo_log_truncate. Для получения дополнительной информации см. Усечение таблиц пространства отката. -
Формат командной строки --innodb-random-read-ahead[={OFF|ON}]Системная переменная innodb_random_read_aheadОбласть видимости Глобальная Динамическая Да Тип Логическое Значение по умолчанию OFFВключает случайную технику для оптимизации
InnoDBI/O.Подробная информация о соображениях производительности для различных типов запросов предварительной выборки см. в Разделе 14.8.3.4, «Настройка предварительной выборки буферного пула InnoDB (предварительная выборка)». Общие рекомендации по настройке I/O см. в Разделе 8.5.8, «Оптимизация дискового ввода-вывода InnoDB».
-
Формат командной строки --innodb-read-ahead-threshold=#Системная переменная innodb_read_ahead_thresholdОбласть видимости Глобальная Динамическая Да Тип Целое число Значение по умолчанию 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.Для получения дополнительной информации см. Раздел 14.8.3.4, «Настройка предварительной выборки буферного пула InnoDB (предварительная выборка)». Общие рекомендации по настройке I/O см. в Разделе 8.5.8, «Оптимизация дискового ввода-вывода InnoDB».
-
Формат командной строки --innodb-read-io-threads=#Системная переменная innodb_read_io_threadsОбласть видимости Глобальная Динамическая Нет Тип Целое число Значение по умолчанию 4Минимальное значение 1Максимальное значение 64Количество потоков ввода-вывода для операций чтения в
InnoDB. Его аналог для потоков записи —innodb_write_io_threads. Для получения дополнительной информации см. Раздел 14.8.6, «Настройка количества фоновых потоков ввода-вывода InnoDB». Общие рекомендации по настройке I/O см. в Разделе 8.5.8, «Оптимизация дискового ввода-вывода InnoDB».ПримечаниеВ системах 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Область Глобальная Динамическая Нет Тип Булево Значение по умолчанию OFFЗапускает
InnoDBв режиме только для чтения. Для распространения баз данных или наборов данных на носителях только для чтения. Также может использоваться в хранилищах данных для совместного использования одного каталога данных между несколькими экземплярами. Более подробную информацию см. в Разделе 14.8.2, «Настройка InnoDB для работы в режиме только для чтения». -
Командная строка --innodb-replication-delay=#Системная переменная innodb_replication_delayОбласть Глобальная Динамическая Да Тип Целое Значение по умолчанию 0Минимальное значение 0Максимальное значение 4294967295Единица измерения миллисекунды Задержка потока репликации в миллисекундах на сервере-реплике, если достигнуто значение
innodb_thread_concurrency. -
Командная строка --innodb-rollback-on-timeout[={OFF|ON}]Системная переменная innodb_rollback_on_timeoutОбласть Глобальная Динамическая Нет Тип Булево Значение по умолчанию OFFInnoDBтолько последнюю операцию в транзакции при таймауте по умолчанию. Если указано--innodb-rollback-on-timeout, таймаут транзакции приводит кInnoDBпрерыванию и откату всей транзакции.Более подробную информацию см. в Разделе 14.22.4, «Обработка ошибок InnoDB».
-
Командная строка --innodb-rollback-segments=#Системная переменная innodb_rollback_segmentsОбласть Глобальная Динамическая Да Тип Целое Значение по умолчанию 128Минимальное значение 1Максимальное значение 128Определяет количество сегментов отката, используемых
InnoDBдля транзакций, генерирующих записи отката. Количество транзакций, которое поддерживает каждый сегмент отката, зависит от размера страницыInnoDBи количества журналов отката, назначенных каждой транзакции. Более подробную информацию см. в Разделе 14.6.7, «Журналы отката».Один сегмент отката всегда назначается системному табличному пространству, и 32 сегмента отката резервируются для использования временными таблицами и находятся во временном табличном пространстве (
ibtmp1). Для выделения дополнительных сегментов откатаinnodb_rollback_segmentsдолжно быть установлено значение больше 33. Если настраиваются отдельные табличные пространства отката, сегмент отката в системном табличном пространстве становится неактивным.При установке
innodb_rollback_segmentsна 32 или меньше,InnoDBназначает один сегмент отката системному табличному пространству и 32 временного табличному пространству.При установке
innodb_rollback_segmentsна значение больше 32,InnoDBназначает один сегмент отката системному табличному пространству, 32 - временному табличному пространству и дополнительные сегменты отката - табличным пространствам отката, если они присутствуют. Если табличные пространства отката отсутствуют, дополнительные сегменты отката назначаются системному табличному пространству.Хотя вы можете увеличить или уменьшить количество сегментов отката, используемых
InnoDB, количество физически присутствующих сегментов отката никогда не уменьшается. Таким образом, вы можете начать с низкого значения и постепенно увеличивать его, чтобы избежать выделения сегментов отката, которые не требуются. Значение по умолчанию и максимальное значениеinnodb_rollback_segmentsсоставляет 128.Для получения связанной информации см. Раздел 14.3, «InnoDB Multi-Versioning». Сведения о настройке отдельных табличных пространств отката см. в Разделе 14.6.3.4, «Undo Tablespaces».
-
innodb_saved_page_number_debugКомандная строка --innodb-saved-page-number-debug=#Системная переменная innodb_saved_page_number_debugОбласть Глобальная Динамическая Да Тип Целое Значение по умолчанию 0Минимальное значение 0Максимальное значение 2**32-1Сохраняет номер страницы. Установка опции
innodb_fil_make_page_dirty_debugделает страницу, определеннуюinnodb_saved_page_number_debug, грязной. Опцияinnodb_saved_page_number_debugдоступна только если поддержка отладки скомпилирована с помощью опцииWITH_DEBUGCMake. -
Командная строка --innodb-sort-buffer-size=#Системная переменная innodb_sort_buffer_sizeОбласть Глобальная Динамическая Нет Тип Целое Значение по умолчанию 1048576Минимальное значение 65536Максимальное значение 67108864Единица измерения байты Эта переменная определяет:
Размер буфера сортировки для онлайн-операций DDL, которые создают или перестраивают вторичные индексы.
Объем, на который расширяется временной журнал записи при одновременной записи DML во время операции, а также размер буфера чтения и записи временного журнала.
Для получения связанной информации см. Раздел 14.13.3, «Требования к пространству для онлайн-операций DDL».
-
Командная строка --innodb-spin-wait-delay=#Системная переменная innodb_spin_wait_delayОбласть Глобальная Динамическая Да Тип Целое Значение по умолчанию 6Минимальное значение 0Максимальное значение (64-разрядные платформы) 2**64-1Максимальное значение (32-разрядные платформы) 2**32-1Максимальная задержка между опросами для блокировки. Низкоуровневая реализация этого механизма зависит от сочетания оборудования и операционной системы, поэтому задержка не соответствует фиксированному интервалу времени. Более подробную информацию см. в Разделе 14.8.9, «Настройка опроса блокировок Spin Lock».
-
Формат командной строки --innodb-stats-auto-recalc[={OFF|ON}]Системная переменная innodb_stats_auto_recalcОбласть Глобальная Динамическая Да Тип Булево Значение по умолчанию ONПриводит к автоматическому перерасчёту
InnoDBпосле существенного изменения данных в таблице. Пороговое значение составляет 10% строк в таблице. Это значение применяется к таблицам, созданным при включённом параметреinnodb_stats_persistent. Автоматический перерасчёт статистики также может быть настроен, указавSTATS_AUTO_RECALC=1в оператореCREATE TABLEилиALTER TABLE. Объём данных, используемых для вычисления статистики, контролируется переменнойinnodb_stats_persistent_sample_pages.Для получения дополнительной информации см. Раздел 14.8.11.1, «Настройка параметров постоянной статистики оптимизатора».
-
innodb_stats_include_delete_markedФормат командной строки --innodb-stats-include-delete-marked[={OFF|ON}]Введено 5.7.17 Системная переменная innodb_stats_include_delete_markedОбласть Глобальная Динамическая Да Тип Булево Значение по умолчанию OFFПо умолчанию,
InnoDBсчитывает незафиксированные данные при вычислении статистики. В случае незафиксированной транзакции, удаляющей строки из таблицы,InnoDBисключает метки удалённых записей при вычислении оценок строк и статистики индексов, что может привести к неоптимальным планам выполнения для других транзакций, работающих с таблицей параллельно, с уровнем изоляции транзакции, отличным отREAD UNCOMMITTED. Чтобы избежать этой ситуации, можно включитьinnodb_stats_include_delete_markedдля обеспечения того, чтобыInnoDBвключала метки удалённых записей при вычислении постоянной статистики оптимизатора.При включении
innodb_stats_include_delete_marked,ANALYZE TABLEучитывает записи с метками удаления при перерасчёте статистики.innodb_stats_include_delete_marked— это глобальная настройка, которая влияет на всеInnoDBтаблицы. Она применима только к постоянной статистике оптимизатора.Для получения дополнительной информации см. Раздел 14.8.11.1, «Настройка параметров постоянной статистики оптимизатора».
-
Формат командной строки --innodb-stats-method=valueСистемная переменная innodb_stats_methodОбласть Глобальная Динамическая Да Тип Перечисление Значение по умолчанию 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игнорируются.Используемый метод генерации статистики таблицы влияет на то, как оптимизатор выбирает индексы для выполнения запросов, как описано в Разделе 8.3.7, «Сбор статистики индексов InnoDB и MyISAM».
-
Формат командной строки --innodb-stats-on-metadata[={OFF|ON}]Системная переменная innodb_stats_on_metadataОбласть Глобальная Динамическая Да Тип Булево Значение по умолчанию OFFЭтот параметр применим только в случае неперсистентных параметров оптимизатора. Статистика оптимизатора не сохраняется на диск, когда
innodb_stats_persistentотключён или когда отдельные таблицы создаются или изменяются с помощьюSTATS_PERSISTENT=0. Для получения дополнительной информации см. Раздел 14.8.11.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). Изменение настройки требует привилегий, достаточных для установки глобальных системных переменных (см. Раздел 5.1.8.1, «Привилегии системных переменных»), и оно немедленно влияет на работу всех подключений. -
Формат командной строки --innodb-stats-persistent[={OFF|ON}]Системная переменная innodb_stats_persistentОбласть Глобальная Динамическая Да Тип Булево Значение по умолчанию ONУказывает, сохраняются ли
InnoDBстатистика индексов на диске. В противном случае статистика может часто пересчитываться, что может привести к колебаниям в . Это значение хранится с каждой таблицей при создании таблицы. Вы можете установитьinnodb_stats_persistentна глобальном уровне перед созданием таблицы или использовать предложениеSTATS_PERSISTENTоператоровCREATE TABLEиALTER TABLEдля переопределения системной настройки и настройки постоянной статистики для отдельных таблиц.Для получения дополнительной информации см. Раздел 14.8.11.1, «Настройка параметров постоянной статистики оптимизатора».
-
innodb_stats_persistent_sample_pagesФормат командной строки --innodb-stats-persistent-sample-pages=#Системная переменная innodb_stats_persistent_sample_pagesОбласть видимости Глобальная Динамическая Да Тип Целое число Значение по умолчанию 20Минимальное значение 1Максимальное значение 18446744073709551615Количество индексов для выборки при оценке и других для индексированного столбца, таких как те, которые вычисляются с помощью
ANALYZE TABLE. Увеличение значения повышает точность статистики индексов, что может улучшить , за счет увеличения операций ввода-вывода во время выполненияANALYZE TABLEдля таблицыInnoDB. Для получения дополнительной информации см. Раздел 14.8.11.1, «Настройка параметров статистики оптимизатора».ПримечаниеУстановка высокого значения для
innodb_stats_persistent_sample_pagesможет привести к длительному времени выполненияANALYZE TABLE. Чтобы оценить количество страниц базы данных, доступных дляANALYZE TABLE, см. Раздел 14.8.11.3, «Оценка сложности ANALYZE TABLE для таблиц InnoDB».innodb_stats_persistent_sample_pagesприменяется только тогда, когдаinnodb_stats_persistentвключен для таблицы; когдаinnodb_stats_persistentотключен, вместо этого применяетсяinnodb_stats_transient_sample_pages. -
Формат командной строки --innodb-stats-sample-pages=#Устарело Да Системная переменная innodb_stats_sample_pagesОбласть видимости Глобальная Динамическая Да Тип Целое число Значение по умолчанию 8Минимальное значение 1Максимальное значение 2**64-1Устарело. Используйте
innodb_stats_transient_sample_pagesвместо этого. -
innodb_stats_transient_sample_pagesФормат командной строки --innodb-stats-transient-sample-pages=#Системная переменная innodb_stats_transient_sample_pagesОбласть видимости Глобальная Динамическая Да Тип Целое число Значение по умолчанию 8Минимальное значение 1Максимальное значение 18446744073709551615Количество индексов для выборки при оценке и других для индексированного столбца, таких как те, которые вычисляются с помощью
ANALYZE TABLE. Значение по умолчанию равно 8. Увеличение значения повышает точность статистики индексов, что может улучшить , за счет увеличения операций ввода-вывода при открытии таблицыInnoDBили пересчете статистики. Для получения дополнительной информации см. Раздел 14.8.11.2, «Настройка параметров нестабильной статистики оптимизатора».ПримечаниеУстановка высокого значения для
innodb_stats_transient_sample_pagesможет привести к длительному времени выполненияANALYZE TABLE. Чтобы оценить количество страниц базы данных, доступных дляANALYZE TABLE, см. Раздел 14.8.11.3, «Оценка сложности ANALYZE TABLE для таблиц InnoDB».innodb_stats_transient_sample_pagesприменяется только тогда, когдаinnodb_stats_persistentотключен для таблицы; когдаinnodb_stats_persistentвключен, вместо этого применяетсяinnodb_stats_persistent_sample_pages. Заменяетinnodb_stats_sample_pages. Для получения дополнительной информации см. Раздел 14.8.11.2, «Настройка параметров нестабильной статистики оптимизатора». -
Формат командной строки --innodb-status-output[={OFF|ON}]Системная переменная innodb_status_outputОбласть видимости Глобальная Динамическая Да Тип Логическое Значение по умолчанию OFFВключает или отключает периодический вывод для стандартного монитора
InnoDB. Также используется в сочетании сinnodb_status_output_locksдля включения или отключения периодического вывода для монитора блокировокInnoDB. Для получения дополнительной информации см. Раздел 14.18.2, «Включение мониторов InnoDB». -
Формат командной строки --innodb-status-output-locks[={OFF|ON}]Системная переменная innodb_status_output_locksОбласть видимости Глобальная Динамическая Да Тип Логическое Значение по умолчанию OFFВключает или отключает монитор блокировок
InnoDB. При включении монитор блокировокInnoDBвыводит дополнительную информацию о блокировках в выводеSHOW ENGINE INNODB STATUSи в периодическом выводе, выводимом в журнал ошибок MySQL. Периодический вывод для монитора блокировокInnoDBвыводится как часть вывода стандартного монитораInnoDB. Поэтому стандартный мониторInnoDBдолжен быть включен, чтобы монитор блокировокInnoDBпериодически выводил данные в журнал ошибок MySQL. Для получения дополнительной информации см. Раздел 14.18.2, «Включение мониторов InnoDB».
-
Формат командной строки --innodb-strict-mode[={OFF|ON}]Системная переменная innodb_strict_modeОбласть действия Глобальная, сессионная Динамическая Да Тип Булево Значение по умолчанию 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требует привилегий, достаточных для изменения глобальных системных переменных (см. Раздел 5.1.8.1, «Привилегии системных переменных») и влияет на работу всех последующих клиентов, которые подключаются. Любой клиент может изменить настройкуSESSIONдляinnodb_strict_mode, и настройка влияет только на этого клиента. -
Формат командной строки --innodb-support-xa[={OFF|ON}]Устарело 5.7.10 Системная переменная innodb_support_xaОбласть действия Глобальная, сессионная Динамическая Да Тип Булево Значение по умолчанию ONВключает поддержку двухфазного подтверждения в транзакциях, вызывая дополнительную запись на диск для подготовки транзакций. Механизм XA используется внутри и является необходимым для любого сервера, у которого включен двоичный журнал и который принимает изменения в данных более чем от одного потока. Если вы отключите
innodb_support_xa, транзакции могут быть записаны в двоичный журнал в другом порядке, чем реальное завершение транзакций в базе данных, что может привести к разным данным при повторном воспроизведении двоичного журнала при восстановлении после аварии или на реплике. Не отключайтеinnodb_support_xaна сервере-источнике репликации, если у вас нет необычной конфигурации, где только один поток может изменять данные.innodb_support_xaустарело; ожидайте его удаления в будущей версии MySQL. Поддержка двухфазного подтверждения в XA-транзакциях всегда включена с MySQL 5.7.10. Отключениеinnodb_support_xaбольше не допускается, так как это делает репликацию небезопасной и препятствует повышению производительности, связанному с групповым подтверждением двоичного журнала. -
Формат командной строки --innodb-sync-array-size=#Системная переменная innodb_sync_array_sizeОбласть действия Глобальная Динамическая Нет Тип Целое число Значение по умолчанию 1Минимальное значение 1Максимальное значение 1024Определяет размер массива ожидания мьютекса/блокировки. Увеличение значения разбивает внутреннюю структуру данных, используемую для координации потоков, для большей конкуретности в задачах с большим количеством ожидающих потоков. Это значение должно быть настроено при запуске экземпляра MySQL и не может быть изменено после этого. Рекомендуется увеличивать значение для задач, которые часто генерируют большое количество ожидающих потоков, обычно более 768.
-
Формат командной строки --innodb-sync-spin-loops=#Системная переменная innodb_sync_spin_loopsОбласть действия Глобальная Динамическая Да Тип Целое число Значение по умолчанию 30Минимальное значение 0Максимальное значение 4294967295Количество раз, когда поток ожидает освобождения мьютекса
InnoDB, прежде чем поток будет приостановлен. -
Формат командной строки --innodb-sync-debug[={OFF|ON}]Системная переменная innodb_sync_debugОбласть действия Глобальная Динамическая Нет Тип Булево Значение по умолчанию OFFВключает проверку синхронизации отладки для хранилища
InnoDB. Этот параметр доступен только в случае, если поддержка отладки скомпилирована с помощью параметраWITH_DEBUGCMake.Ранее включение проверки синхронизации отладки
InnoDBтребовало включения средства отладки синхронизации с помощью параметраENABLE_DEBUG_SYNCCMake, который теперь удалён. Это требование было удалено в MySQL 5.7 с введением этой переменной. -
Формат командной строки --innodb-table-locks[={OFF|ON}]Системная переменная innodb_table_locksОбласть действия Глобальная, сессионная Динамическая Да Тип Булево Значение по умолчанию 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.Для получения дополнительной информации см. Раздел 14.7, «Модель блокировки и транзакций InnoDB».
-
Формат командной строки --innodb-temp-data-file-path=file_nameПеременная системы innodb_temp_data_file_pathОбласть действия Глобальная Динамическая Нет Тип Строка Значение по умолчанию ibtmp1:12M:autoextendОпределяет относительный путь, имя, размер и атрибуты файла данных для
InnoDB. Если вы не зададите значение дляinnodb_temp_data_file_path, по умолчанию будет создан один автоматически расширяемый файл данных с именемibtmp1в каталоге данных MySQL. Начальный размер файла немного больше 12 МБ.Полный синтаксис спецификации файла данных временного пространства таблиц включает имя файла, размер файла и
autoextendиmaxатрибуты:file_name:file_size[:autoextend[:max:max_file_size]]Файл данных временного пространства таблиц не может иметь такое же имя, как другой файл данных
InnoDB. Любая неспособность или ошибка создания файла данных временного пространства таблиц рассматривается как критическая ошибка, и запуск сервера отказывается. Временное пространство таблиц имеет динамически сгенерированный идентификатор пространства, который может изменяться при каждом перезапуске сервера.Размеры файлов указываются в КБ, МБ или ГБ (1024 МБ) путем добавления
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,InnoDBрасширяет файл данных, если у него закончится свободное место. Приращениеautoextendпо умолчанию составляет 64 МБ. Чтобы изменить приращение, измените переменную системыinnodb_autoextend_increment.Полный путь к файлам данных временного пространства таблиц формируется путем конкатенации путей, определенных
innodb_data_home_dirиinnodb_temp_data_file_path.Временное пространство таблиц используется всеми нескомпрессированными
InnoDBвременными таблицами. Сжатые временные таблицы находятся в файлах табличного пространства на основе файла на таблицу, созданных в каталоге временных файлов, который определяется параметром конфигурацииtmpdir.Перед запуском
InnoDBв режиме только для чтения, установитеinnodb_temp_data_file_pathв расположение вне каталога данных. Путь должен быть относительным к каталогу данных. Например:--innodb-temp-data-file-path=../../../tmp/ibtmp1:12M:autoextend
Метаданные о активных
InnoDBвременных таблицах находятся в таблице схемы информацииINNODB_TEMP_TABLE_INFO.Для получения дополнительной информации см. Раздел 14.6.3.5, «Временное пространство таблиц».
-
Формат командной строки --innodb-thread-concurrency=#Переменная системы innodb_thread_concurrencyОбласть действия Глобальная Динамическая Да Тип Целое число Значение по умолчанию 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.Для получения дополнительной информации см. Раздел 14.8.5, «Настройка конкурентности потоков для InnoDB».
-
Формат командной строки --innodb-thread-sleep-delay=#Системная переменная innodb_thread_sleep_delayОбласть действия Глобальная Динамическая Да Тип Целое число Значение по умолчанию 10000Минимальное значение 0Максимальное значение 1000000Единица измерения микросекунды Определяет, сколько времени нити
InnoDBожидают в очередиInnoDBв микросекундах. Значение по умолчанию — 10000. Значение 0 отключает ожидание. Можно установитьinnodb_adaptive_max_sleep_delayна максимальное разрешенное значение дляinnodb_thread_sleep_delay, иInnoDBавтоматически корректируетinnodb_thread_sleep_delayвверх или вниз в зависимости от текущей активности планирования нитей. Эта динамическая корректировка помогает механизму планирования нитей работать плавно во время легкой загрузки системы или при работе близко к полной загрузке.Для получения дополнительной информации см. Раздел 14.8.5, «Настройка потоковой конкуретности для InnoDB».
-
Формат командной строки --innodb-tmpdir=dir_nameВведено 5.7.11 Системная переменная innodb_tmpdirОбласть действия Глобальная, сеансовая Динамическая Да Тип Имя каталога Значение по умолчанию NULLИспользуется для определения альтернативного каталога для временных файлов сортировки, создаваемых во время онлайн-операций
ALTER TABLE, которые перестраивают таблицу.Онлайн-операции
ALTER TABLE, перестраивающие таблицу, также создают временный файл таблицы в том же каталоге, что и исходная таблица. Параметрinnodb_tmpdirне применяется к временным файлам таблиц.Допустимое значение — любой путь к каталогу, кроме пути к каталогу данных MySQL. Если значение равно NULL (по умолчанию), временные файлы создаются в каталоге временных файлов MySQL (
$TMPDIRв Unix,%TEMP%в Windows или каталоге, указанном в параметре конфигурации--tmpdir). Если указан каталог, существование каталога и разрешения проверяются только при конфигурацииinnodb_tmpdirс помощью оператораSET. Если в строке каталога указана символическая ссылка, символическая ссылка разрешается и сохраняется как абсолютный путь. Путь не должен превышать 512 байт. Онлайн-операцияALTER TABLEсообщает об ошибке, еслиinnodb_tmpdirимеет недопустимое значение каталога.innodb_tmpdirпереопределяет параметр MySQLtmpdir, но только для онлайн-операцийALTER TABLE.Для конфигурации
innodb_tmpdirтребуется привилегияFILE.Параметр
innodb_tmpdirбыл введен для предотвращения переполнения каталога временных файлов, расположенного наtmpfsфайловой системе. Такие переполнения могли происходить из-за создания больших временных файлов сортировки при онлайн-операцияхALTER TABLE, которые перестраивают таблицу.В средах репликации рассмотрите репликацию параметра
innodb_tmpdirтолько в том случае, если у всех серверов одинаковая среда операционной системы. В противном случае репликация параметраinnodb_tmpdirможет привести к сбоям репликации при выполнении онлайн-операцийALTER TABLE, перестраивающих таблицу. Если среды операционных систем серверов отличаются, рекомендуется настроитьinnodb_tmpdirна каждом сервере индивидуально.Дополнительную информацию см. в Разделе 14.13.3, «Требования к объему памяти для онлайн-операций DDL». Сведения об онлайн-операциях
ALTER TABLEсм. в Разделе 14.13, «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Область действия Глобальная Динамическая Да Тип Булево Значение по умолчанию OFFПриостанавливает очистку отмеченных на удаление записей, позволяя обновлять представление очистки. Этот параметр искусственно создает ситуацию, в которой представление очистки обновляется, но очистка еще не выполнена. Этот параметр доступен только в случае компиляции поддержки отладки с помощью параметра
WITH_DEBUGопции CMake. -
Формат командной строки --innodb-trx-rseg-n-slots-debug=#Системная переменная innodb_trx_rseg_n_slots_debugОбласть действия Глобальная Динамическая Да Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 1024Устанавливает флаг отладки, который ограничивает
TRX_RSEG_N_SLOTSзаданным значением для функцииtrx_rsegf_undo_find_free, которая ищет свободные слоты для сегментов журнала отмены. Этот параметр доступен только в случае компиляции поддержки отладки с помощью параметраWITH_DEBUGопции CMake. -
Формат командной строки --innodb-undo-directory=dir_nameСистемная переменная innodb_undo_directoryОбласть действия Глобальная Динамическая Нет Тип Имя каталога Путь, где
InnoDBсоздает табличные пространства отмены. Обычно используется для размещения журналов отмены на другом накопителе. Используется совместно сinnodb_rollback_segmentsиinnodb_undo_tablespaces.Значение по умолчанию отсутствует (равно NULL). Если путь не указан, табличные пространства отмены создаются в каталоге данных MySQL, определенном параметром
datadir.Для получения дополнительной информации см. Раздел 14.6.3.4, «Табличные пространства отмены».
-
Формат командной строки --innodb-undo-log-truncate[={OFF|ON}]Переменная системы innodb_undo_log_truncateОбласть действия Глобальная Динамическая Да Тип Булево Значение по умолчанию OFFПри включенном значении, пространства таблиц отката, превышающие пороговое значение, определенное переменной
innodb_max_undo_log_size, помечаются для усечения. Усечению могут быть подвергнуты только пространства таблиц отката. Усечение журналов отката, находящихся в системном пространстве таблиц, не поддерживается. Для осуществления усечения должно быть не менее двух пространств таблиц отката и двух журналов отката с поддержкой повтора, настроенных для использования пространств таблиц отката. Это означает, чтоinnodb_undo_tablespacesдолжно быть установлено на значение, равное или большее 2, аinnodb_rollback_segments— на значение, равное или большее 35.Переменная
innodb_purge_rseg_truncate_frequencyможет быть использована для ускорения усечения пространств таблиц отката.Дополнительную информацию см. в разделе Усечение пространств таблиц отката.
-
Формат командной строки --innodb-undo-logs=#Устаревшая 5.7.19 Переменная системы innodb_undo_logsОбласть действия Глобальная Динамическая Да Тип Целое число Значение по умолчанию 128Минимальное значение 1Максимальное значение 128Примечаниеinnodb_undo_logsустарела; ожидается ее удаление в будущих версиях MySQL.Определяет количество сегментов отката, используемых для
InnoDB. Параметрinnodb_undo_logsявляется псевдонимом дляinnodb_rollback_segments. Дополнительную информацию см. в описанииinnodb_rollback_segments. -
Формат командной строки --innodb-undo-tablespaces=#Устаревшая 5.7.21 Переменная системы innodb_undo_tablespacesОбласть действия Глобальная Динамическая Нет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 95Количество пространств таблиц отката, используемых для
InnoDB. Значение по умолчанию равно 0.Примечаниеinnodb_undo_tablespacesустарела; ожидается ее удаление в будущих версиях MySQL.Поскольку журналы отката могут увеличиваться в размерах во время длительных транзакций, использование нескольких пространств таблиц отката снижает максимальный размер каждого из них. Файлы пространств таблиц отката создаются в расположении, определенном
innodb_undo_directory, с именами в форматеundo, гдеNN— последовательный ряд целых чисел (включая ведущие нули), представляющие идентификатор пространства.Начальный размер файла пространства таблиц отката зависит от значения
innodb_page_size. Для стандартного размера страницы 16 КБInnoDB, начальный размер файла пространства таблиц отката составляет 10 МБ. Для размеров страниц 4 КБ, 8 КБ, 32 КБ и 64 КБ, начальные размеры файлов пространств таблиц отката составляют 7 МБ, 8 МБ, 20 МБ и 40 МБ соответственно.Для активации усечения журналов отката необходимо не менее двух пространств таблиц отката. См. Усечение пространств таблиц отката.
Важноinnodb_undo_tablespacesможет быть настроена только перед инициализацией экземпляра MySQL и не может быть изменена после. Если значение не указано, экземпляр инициализируется со значением по умолчанию 0. Попытка перезапуститьInnoDBс большим количеством пространств таблиц отката, чем было указано при инициализации экземпляра MySQL, приводит к сбоям запуска и ошибке, указывающей, чтоInnoDBне обнаружил ожидаемое количество пространств таблиц отката.32 из 128 сегментов отката зарезервированы для временных таблиц, как описано в Раздел 14.6.7, «Журналы отката». Один сегмент отката всегда назначается системному пространству таблиц, что оставляет 95 сегментов отката доступными для пространств таблиц отката. Это означает, что максимальное ограничение для
innodb_undo_tablespacesсоставляет 95.Дополнительную информацию см. в разделе Раздел 14.6.3.4, «Пространства таблиц отката».
-
Формат командной строки --innodb-use-native-aio[={OFF|ON}]Переменная системы innodb_use_native_aioОбласть действия Глобальная Динамическая Нет Тип Булево Значение по умолчанию ONУказывает, использовать ли подсистему асинхронного ввода-вывода Linux. Эта переменная применяется только к системам Linux и не может быть изменена во время работы сервера. Обычно настраивать этот параметр не требуется, так как он включён по умолчанию.
Возможность, имеющаяся у
InnoDBв системах Windows, доступна и в системах Linux. (Другие системы Unix-подобные продолжают использовать синхронные вызовы ввода-вывода.) Эта функция улучшает масштабируемость систем, сильно зависящих от ввода-вывода, которые обычно показывают много ожидающих чтений/записей в выводеSHOW ENGINE INNODB STATUS\G.Запуск с большим количеством потоков ввода-вывода
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.Дополнительную информацию см. в разделе Раздел 14.8.7, «Использование асинхронного ввода-вывода в Linux».
-
Номер версии
InnoDB. В MySQL 5.7 отдельное нумерация версииInnoDBне применяется, и это значение совпадает с номером версииversionсервера.
-
Формат командной строки --innodb-write-io-threads=#Системная переменная innodb_write_io_threadsОбласть Глобальная Динамическая Нет Тип Целое число Значение по умолчанию 4Минимальное значение 1Максимальное значение 64Количество потоков ввода/вывода для операций записи в InnoDB. Значение по умолчанию — 4. Его аналогом для потоков чтения является
innodb_read_io_threads. Дополнительную информацию см. в Разделе 14.8.6, «Настройка количества фоновых потоков ввода/вывода InnoDB». Советы по настройке ввода/вывода в целом см. в Разделе 8.5.8, «Оптимизация ввода/вывода диска InnoDB».ПримечаниеВ системах Linux запуск нескольких серверов MySQL (как правило, более 12) с настройками по умолчанию для
innodb_read_io_threads,innodb_write_io_threadsи настройкой Linuxaio-max-nrможет превышать системные ограничения. В идеале, увеличьте настройкуaio-max-nr; в качестве обходного решения можно уменьшить значения для одной или обеих переменных MySQL.Также следует учитывать значение
sync_binlog, которое управляет синхронизацией двоичного журнала на диске.Советы по настройке ввода/вывода в целом см. в Разделе 8.5.8, «Оптимизация ввода/вывода диска InnoDB».
© 2025 Oracle
Licensed under the GPLv2 License.