Spec-Zone.ru › MySQL 5.7

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

Таблица 14.18 Справочник по параметрам и переменным InnoDB
Имя Командная строка Файл параметров Системная переменная Переменная состояния Область действия переменной Динамическая
daemon_memcached_enable_binlog Да Да Да Глобальный Нет
daemon_memcached_engine_lib_name Да Да Да Глобальный Нет
daemon_memcached_engine_lib_path Да Да Да Глобальный Нет
daemon_memcached_option Да Да Да Глобальный Нет
daemon_memcached_r_batch_size Да Да Да Глобальный Нет
daemon_memcached_w_batch_size Да Да Да Глобальный Нет
foreign_key_checks Да Оба Да
ignore_builtin_innodb Да Да Да Глобальный Нет
innodb Да Да
innodb_adaptive_flushing Да Да Да Глобальный Да
innodb_adaptive_flushing_lwm Да Да Да Глобальный Да
innodb_adaptive_hash_index Да Да Да Глобальный Да
innodb_adaptive_hash_index_parts Да Да Да Глобальный Нет
innodb_adaptive_max_sleep_delay Да Да Да Глобальный Да
innodb_api_bk_commit_interval Да Да Да Глобальный Да
innodb_api_disable_rowlock Да Да Да Глобальный Нет
innodb_api_enable_binlog Да Да Да Глобальный Нет
innodb_api_enable_mdl Да Да Да Глобальный Нет
innodb_api_trx_level Да Да Да Глобальный Да
innodb_autoextend_increment Да Да Да Глобальный Да
innodb_autoinc_lock_mode Да Да Да Глобальный Нет
Innodb_available_undo_logs Да Глобальный Нет
innodb_background_drop_list_empty Да Да Да Глобальный Да
Innodb_buffer_pool_bytes_data Да Глобальный Нет
Innodb_buffer_pool_bytes_dirty Да Глобальный Нет
innodb_buffer_pool_chunk_size Да Да Да Глобальный Нет
innodb_buffer_pool_dump_at_shutdown Да Да Да Глобальный Да
innodb_buffer_pool_dump_now Да Да Да Глобальный Да
innodb_buffer_pool_dump_pct Да Да Да Глобальный Да
Innodb_buffer_pool_dump_status Да Глобальный Нет
innodb_buffer_pool_filename Да Да Да Глобальный Да
innodb_buffer_pool_instances Да Да Да Глобальный Нет
innodb_buffer_pool_load_abort Да Да Да Глобальный Да
innodb_buffer_pool_load_at_startup Да Да Да Глобальный Нет
innodb_buffer_pool_load_now Да Да Да Глобальный Да
Innodb_buffer_pool_load_status Да Глобальный Нет
Innodb_buffer_pool_pages_data Да Глобальный Нет
Innodb_buffer_pool_pages_dirty Да Глобальный Нет
Innodb_buffer_pool_pages_flushed Да Глобальный Нет
Innodb_buffer_pool_pages_free Да Глобальный Нет
Innodb_buffer_pool_pages_latched Да Глобальный Нет
Innodb_buffer_pool_pages_misc Да Глобальный Нет
Innodb_buffer_pool_pages_total Да Глобальный Нет
Innodb_buffer_pool_read_ahead Да Глобальный Нет
Innodb_buffer_pool_read_ahead_evicted Да Глобальный Нет
Innodb_buffer_pool_read_ahead_rnd Да Глобальный Нет
Innodb_buffer_pool_read_requests Да Глобальный Нет
Innodb_buffer_pool_reads Да Глобальный Нет
Innodb_buffer_pool_resize_status Да Глобальный Нет
innodb_buffer_pool_size Да Да Да Глобальный Различается
Innodb_buffer_pool_wait_free Да Глобальный Нет
Innodb_buffer_pool_write_requests Да Глобальный Нет
innodb_change_buffer_max_size Да Да Да Глобальный Да
innodb_change_buffering Да Да Да Глобально Да
innodb_change_buffering_debug Да Да Да Глобально Да
innodb_checksum_algorithm Да Да Да Глобально Да
innodb_checksums Да Да Да Глобально Нет
innodb_cmp_per_index_enabled Да Да Да Глобально Да
innodb_commit_concurrency Да Да Да Глобально Да
innodb_compress_debug Да Да Да Глобально Да
innodb_compression_failure_threshold_pct Да Да Да Глобально Да
innodb_compression_level Да Да Да Глобально Да
innodb_compression_pad_pct_max Да Да Да Глобально Да
innodb_concurrency_tickets Да Да Да Глобально Да
innodb_data_file_path Да Да Да Глобально Нет
Innodb_data_fsyncs Да Глобально Нет
innodb_data_home_dir Да Да Да Глобально Нет
Innodb_data_pending_fsyncs Да Глобально Нет
Innodb_data_pending_reads Да Глобально Нет
Innodb_data_pending_writes Да Глобально Нет
Innodb_data_read Да Глобально Нет
Innodb_data_reads Да Глобально Нет
Innodb_data_writes Да Глобально Нет
Innodb_data_written Да Глобально Нет
Innodb_dblwr_pages_written Да Глобально Нет
Innodb_dblwr_writes Да Глобально Нет
innodb_deadlock_detect Да Да Да Глобально Да
innodb_default_row_format Да Да Да Глобально Да
innodb_disable_resize_buffer_pool_debug Да Да Да Глобально Да
innodb_disable_sort_file_cache Да Да Да Глобально Да
innodb_doublewrite Да Да Да Глобально Нет
innodb_fast_shutdown Да Да Да Глобально Да
innodb_fil_make_page_dirty_debug Да Да Да Глобально Да
innodb_file_format Да Да Да Глобально Да
innodb_file_format_check Да Да Да Глобально Нет
innodb_file_format_max Да Да Да Глобально Да
innodb_file_per_table Да Да Да Глобально Да
innodb_fill_factor Да Да Да Глобально Да
innodb_flush_log_at_timeout Да Да Да Глобально Да
innodb_flush_log_at_trx_commit Да Да Да Глобально Да
innodb_flush_method Да Да Да Глобально Нет
innodb_flush_neighbors Да Да Да Глобально Да
innodb_flush_sync Да Да Да Глобально Да
innodb_flushing_avg_loops Да Да Да Глобально Да
innodb_force_load_corrupted Да Да Да Глобально Нет
innodb_force_recovery Да Да Да Глобально Нет
innodb_ft_aux_table Да Глобально Да
innodb_ft_cache_size Да Да Да Глобально Нет
innodb_ft_enable_diag_print Да Да Да Глобально Да
innodb_ft_enable_stopword Да Да Да Оба Да
innodb_ft_max_token_size Да Да Да Глобально Нет
innodb_ft_min_token_size Да Да Да Глобально Нет
innodb_ft_num_word_optimize Да Да Да Глобально Да
innodb_ft_result_cache_limit Да Да Да Глобально Да
innodb_ft_server_stopword_table Да Да Да Глобально Да
innodb_ft_sort_pll_degree Да Да Да Глобально Нет
innodb_ft_total_cache_size Да Да Да Глобально Нет
innodb_ft_user_stopword_table Да Да Да Оба Да
Innodb_have_atomic_builtins Да Глобальный Нет
innodb_io_capacity Да Да Да Глобальный Да
innodb_io_capacity_max Да Да Да Глобальный Да
innodb_large_prefix Да Да Да Глобальный Да
innodb_limit_optimistic_insert_debug Да Да Да Глобальный Да
innodb_lock_wait_timeout Да Да Да Оба Да
innodb_locks_unsafe_for_binlog Да Да Да Глобальный Нет
innodb_log_buffer_size Да Да Да Глобальный Нет
innodb_log_checkpoint_now Да Да Да Глобальный Да
innodb_log_checksums Да Да Да Глобальный Да
innodb_log_compressed_pages Да Да Да Глобальный Да
innodb_log_file_size Да Да Да Глобальный Нет
innodb_log_files_in_group Да Да Да Глобальный Нет
innodb_log_group_home_dir Да Да Да Глобальный Нет
Innodb_log_waits Да Глобальный Нет
innodb_log_write_ahead_size Да Да Да Глобальный Да
Innodb_log_write_requests Да Глобальный Нет
Innodb_log_writes Да Глобальный Нет
innodb_lru_scan_depth Да Да Да Глобальный Да
innodb_max_dirty_pages_pct Да Да Да Глобальный Да
innodb_max_dirty_pages_pct_lwm Да Да Да Глобальный Да
innodb_max_purge_lag Да Да Да Глобальный Да
innodb_max_purge_lag_delay Да Да Да Глобальный Да
innodb_max_undo_log_size Да Да Да Глобальный Да
innodb_merge_threshold_set_all_debug Да Да Да Глобальный Да
innodb_monitor_disable Да Да Да Глобальный Да
innodb_monitor_enable Да Да Да Глобальный Да
innodb_monitor_reset Да Да Да Глобальный Да
innodb_monitor_reset_all Да Да Да Глобальный Да
Innodb_num_open_files Да Глобальный Нет
innodb_numa_interleave Да Да Да Глобальный Нет
innodb_old_blocks_pct Да Да Да Глобальный Да
innodb_old_blocks_time Да Да Да Глобальный Да
innodb_online_alter_log_max_size Да Да Да Глобальный Да
innodb_open_files Да Да Да Глобальный Нет
innodb_optimize_fulltext_only Да Да Да Глобальный Да
Innodb_os_log_fsyncs Да Глобальный Нет
Innodb_os_log_pending_fsyncs Да Глобальный Нет
Innodb_os_log_pending_writes Да Глобальный Нет
Innodb_os_log_written Да Глобальный Нет
innodb_page_cleaners Да Да Да Глобальный Нет
Innodb_page_size Да Глобальный Нет
innodb_page_size Да Да Да Глобальный Нет
Innodb_pages_created Да Глобальный Нет
Innodb_pages_read Да Глобальный Нет
Innodb_pages_written Да Глобальный Нет
innodb_print_all_deadlocks Да Да Да Глобальный Да
innodb_purge_batch_size Да Да Да Глобальный Да
innodb_purge_rseg_truncate_frequency Да Да Да Глобальный Да
innodb_purge_threads Да Да Да Глобальный Нет
innodb_random_read_ahead Да Да Да Глобальный Да
innodb_read_ahead_threshold Да Да Да Глобальный Да
innodb_read_io_threads Да Да Да Глобальный Нет
innodb_read_only Да Да Да Глобальный Нет
innodb_replication_delay Да Да Да Глобальный Да
innodb_rollback_on_timeout Да Да Да Глобальный Нет
innodb_rollback_segments Да Да Да Глобально Да
Innodb_row_lock_current_waits Да Глобально Нет
Innodb_row_lock_time Да Глобально Нет
Innodb_row_lock_time_avg Да Глобально Нет
Innodb_row_lock_time_max Да Глобально Нет
Innodb_row_lock_waits Да Глобально Нет
Innodb_rows_deleted Да Глобально Нет
Innodb_rows_inserted Да Глобально Нет
Innodb_rows_read Да Глобально Нет
Innodb_rows_updated Да Глобально Нет
innodb_saved_page_number_debug Да Да Да Глобально Да
innodb_sort_buffer_size Да Да Да Глобально Нет
innodb_spin_wait_delay Да Да Да Глобально Да
innodb_stats_auto_recalc Да Да Да Глобально Да
innodb_stats_include_delete_marked Да Да Да Глобально Да
innodb_stats_method Да Да Да Глобально Да
innodb_stats_on_metadata Да Да Да Глобально Да
innodb_stats_persistent Да Да Да Глобально Да
innodb_stats_persistent_sample_pages Да Да Да Глобально Да
innodb_stats_sample_pages Да Да Да Глобально Да
innodb_stats_transient_sample_pages Да Да Да Глобально Да
innodb-status-file Да Да
innodb_status_output Да Да Да Глобально Да
innodb_status_output_locks Да Да Да Глобально Да
innodb_strict_mode Да Да Да Оба Да
innodb_support_xa Да Да Да Оба Да
innodb_sync_array_size Да Да Да Глобально Нет
innodb_sync_debug Да Да Да Глобально Нет
innodb_sync_spin_loops Да Да Да Глобально Да
innodb_table_locks Да Да Да Оба Да
innodb_temp_data_file_path Да Да Да Глобально Нет
innodb_thread_concurrency Да Да Да Глобально Да
innodb_thread_sleep_delay Да Да Да Глобально Да
innodb_tmpdir Да Да Да Оба Да
Innodb_truncated_status_writes Да Глобально Нет
innodb_trx_purge_view_update_only_debug Да Да Да Глобально Да
innodb_trx_rseg_n_slots_debug Да Да Да Глобально Да
innodb_undo_directory Да Да Да Глобально Нет
innodb_undo_log_truncate Да Да Да Глобально Да
innodb_undo_logs Да Да Да Глобально Да
innodb_undo_tablespaces Да Да Да Глобально Нет
innodb_use_native_aio Да Да Да Глобально Нет
innodb_version Да Глобально Нет
innodb_write_io_threads Да Да Да Глобально Нет
unique_checks Да Оба Да

Параметры командной строки InnoDB

  • --innodb[=value]

    Формат командной строки --innodb[=value]
    Устарело Да
    Тип Перечисление
    Значение по умолчанию ON
    Допустимые значения

    OFF

    ON

    FORCE

    Управляет загрузкой движка хранения 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

    Формат командной строки --innodb-status-file[={OFF|ON}]
    Тип Булево
    Значение по умолчанию OFF

    Параметр запуска --innodb-status-file управляет тем, создаёт ли InnoDB файл с именем innodb_status.pid в каталоге данных и записывает в него примерно каждые 15 секунд вывод SHOW ENGINE INNODB STATUS.

    Файл innodb_status.pid по умолчанию не создаётся. Для его создания запустите mysqld с параметром --innodb-status-file. InnoDB удаляет файл при нормальном завершении работы сервера. При аварийном завершении работы файл состояния, возможно, придётся удалить вручную.

    Параметр --innodb-status-file предназначен для временного использования, так как генерация вывода SHOW ENGINE INNODB STATUS может повлиять на производительность, а файл innodb_status.pid со временем может стать достаточно большим.

    Для дополнительной информации см. Раздел 14.18.2, «Включение мониторов InnoDB».

  • --skip-innodb

    Отключить движок хранения InnoDB. См. описание --innodb.

Системные переменные InnoDB

  • daemon_memcached_enable_binlog

    Формат командной строки --daemon-memcached-enable-binlog[={OFF|ON}]
    Системная переменная daemon_memcached_enable_binlog
    Область видимости Глобальная
    Динамическая Нет
    Тип Булево
    Значение по умолчанию OFF

    Включите этот параметр на исходном сервере, чтобы использовать плагин InnoDB memcached (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

    Указывает общую библиотеку, которая реализует плагин InnoDB memcached.

    Для получения дополнительной информации см. Раздел 14.21.3, «Настройка плагина InnoDB memcached».

  • daemon_memcached_engine_lib_path

    Формат командной строки --daemon-memcached-engine-lib-path=dir_name
    Системная переменная daemon_memcached_engine_lib_path
    Область видимости Глобальная
    Динамическая Нет
    Тип Имя каталога
    Значение по умолчанию NULL

    Путь к каталогу, содержащему общую библиотеку, которая реализует плагин InnoDB memcached. Значение по умолчанию — NULL, представляющее каталог плагинов MySQL. Вам не нужно изменять этот параметр, если только вы не указываете плагин memcached для другого движка хранения, который находится за пределами каталога плагинов MySQL.

    Для получения дополнительной информации см. Раздел 14.21.3, «Настройка плагина InnoDB memcached».

  • daemon_memcached_option

    Формат командной строки --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=#
    Системная переменная 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=#
    Системная переменная 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.7 InnoDB является движком хранения по умолчанию, и InnoDB Plugin не используется, поэтому эта переменная игнорируется.

  • innodb_adaptive_flushing

    Формат командной строки --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=#
    Системная переменная innodb_adaptive_flushing_lwm
    Область видимости Глобальная
    Динамическая Да
    Тип Целое число
    Значение по умолчанию 10
    Минимальное значение 0
    Максимальное значение 70

    Определяет нижнюю границу, представляющую процент от ёмкости, при котором включена. Для получения дополнительной информации см. Раздел 14.8.3.5, «Настройка очистки буферного пула».

  • innodb_adaptive_hash_index

    Формат командной строки --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=#
    Системная переменная innodb_api_bk_commit_interval
    Область видимости Глобальная
    Динамическая Да
    Тип Целое число
    Значение по умолчанию 5
    Минимальное значение 1
    Максимальное значение 1073741824
    Единица измерения секунды

    Как часто выполнять автоматическую фиксацию неактивных соединений, использующих интерфейс InnoDB memcached, в секундах. Для получения дополнительной информации см. Раздел 14.21.5.4, «Управление поведением транзакций плагина InnoDB memcached».

  • innodb_api_disable_rowlock

    Формат командной строки --innodb-api-disable-rowlock[={OFF|ON}]
    Системная переменная innodb_api_disable_rowlock
    Область видимости Глобальная
    Динамическая Нет
    Тип Логическое
    Значение по умолчанию OFF

    Используйте этот параметр для отключения блокировок строк, когда InnoDB memcached выполняет операции 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

    Формат командной строки --innodb-api-enable-binlog[={OFF|ON}]
    Системная переменная innodb_api_enable_binlog
    Область видимости Глобальная
    Динамическая Нет
    Тип Логическое
    Значение по умолчанию OFF

    Позволяет использовать плагин InnoDB memcached с MySQL. Для получения дополнительной информации см. Включение двоичного журнала InnoDB memcached.

  • innodb_api_enable_mdl

    Формат командной строки --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=#
    Системная переменная innodb_api_trx_level
    Область действия Глобальная
    Динамическая Да
    Тип Целое
    Значение по умолчанию 0
    Минимальное значение 0
    Максимальное значение 3

    Управляет транзакциями запросов, обрабатываемых интерфейсом memcached. Константы, соответствующие известным именам:

    • 0 = READ UNCOMMITTED

    • 1 = READ COMMITTED

    • 2 = REPEATABLE READ

    • 3 = SERIALIZABLE

    Для получения дополнительной информации см. Раздел 14.21.5.4, «Управление поведением транзакций плагина InnoDB memcached».

  • innodb_autoextend_increment

    Формат командной строки --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=#
    Системная переменная innodb_autoinc_lock_mode
    Область действия Глобальная
    Динамическая Нет
    Тип Целое
    Значение по умолчанию 1
    Допустимые значения

    0

    1

    2

    Режим, используемый для генерации значений. Допустимые значения: 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=#
    Системная переменная 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

    Формат командной строки --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=#
    Системная переменная 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

    Формат командной строки --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=#
    Системная переменная 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

    Формат командной строки --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=#
    Системная переменная 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=#
    Системная переменная innodb_change_buffer_max_size
    Область действия Глобальная
    Динамическая Да
    Тип Целое число
    Значение по умолчанию 25
    Минимальное значение 0
    Максимальное значение 50

    Максимальный размер , в процентах от общего размера . Вы можете увеличить это значение для сервера MySQL с высокой активностью вставки, обновления и удаления или уменьшить для сервера MySQL с неизменными данными, используемыми для отчетов. Дополнительную информацию см. в Разделе 14.5.2, «Буфер изменений». Общие рекомендации по настройке ввода-вывода см. в Разделе 8.5.8, «Оптимизация ввода-вывода InnoDB».

  • innodb_change_buffering

    Формат командной строки --innodb-change-buffering=value
    Системная переменная innodb_change_buffering
    Область действия Глобальная
    Динамическая Да
    Тип Перечисление
    Значение по умолчанию all
    Допустимые значения

    none

    inserts

    deletes

    changes

    purges

    all

    Выполняется ли 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=#
    Системная переменная innodb_change_buffering_debug
    Область действия Глобальная
    Динамическая Да
    Тип Целое число
    Значение по умолчанию 0
    Минимальное значение 0
    Максимальное значение 2

    Устанавливает флаг отладки для InnoDB буферизации изменений. Значение 1 принудительно выполняет все изменения в буфере изменений. Значение 2 приводит к неожиданному выходу при слиянии. Значение по умолчанию 0 означает, что флаг отладки буферизации изменений не установлен. Эта опция доступна только при отладке поддержки, скомпилированной с использованием опции WITH_DEBUG CMake.

  • innodb_checksum_algorithm

    Формат командной строки --innodb-checksum-algorithm=value
    Системная переменная innodb_checksum_algorithm
    Область действия Глобальная
    Динамическая Да
    Тип Перечисление
    Значение по умолчанию crc32
    Допустимые значения

    crc32

    strict_crc32

    innodb

    strict_innodb

    none

    strict_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_algorithm crc32, 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

    Формат командной строки --innodb-checksums[={OFF|ON}]
    Устарело Да
    Системная переменная innodb_checksums
    Область видимости Глобальная
    Динамическая Нет
    Тип Boolean
    Значение по умолчанию ON

    InnoDB может использовать проверку на всех страницах табличного пространства, считываемых с диска, для обеспечения дополнительной отказоустойчивости от аппаратных сбоев или поврежденных файлов данных. Эта проверка включена по умолчанию. В особых случаях (например, при проведении тестов производительности) эту функцию безопасности можно отключить с помощью --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

    Формат командной строки --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=#
    Системная переменная innodb_commit_concurrency
    Область видимости Глобальная
    Динамическая Да
    Тип Integer
    Значение по умолчанию 0
    Минимальное значение 0
    Максимальное значение 1000

    Количество транзакций, которые могут одновременно завершать работу. Значение 0 (по умолчанию) допускает одновременное завершение любого количества транзакций.

    Значение innodb_commit_concurrency не может быть изменено во время выполнения с нуля на ненулевое значение или наоборот. Значение может быть изменено с одного ненулевого значения на другое.

  • innodb_compress_debug

    Формат командной строки --innodb-compress-debug=value
    Системная переменная innodb_compress_debug
    Область видимости Глобальная
    Динамическая Да
    Тип Enumeration
    Значение по умолчанию none
    Допустимые значения

    none

    zlib

    lz4

    lz4hc

    Сжимает все таблицы с использованием указанного алгоритма сжатия без необходимости определения атрибута COMPRESSION для каждой таблицы. Этот параметр доступен только в том случае, если поддержка отладки компилируется с использованием параметра WITH_DEBUG CMake.

    Для получения дополнительной информации см. Раздел 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=#
    Системная переменная 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=#
    Системная переменная 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

    Формат командной строки --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

    Формат командной строки --innodb-data-home-dir=dir_name
    Системная переменная innodb_data_home_dir
    Область действия Глобальная
    Динамическая Нет
    Тип Имя каталога

    Общая часть пути к каталогу файлов данных InnoDB табличного пространства. Значение по умолчанию — каталог MySQL data. Настройка объединяется с настройкой 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

    Формат командной строки --innodb-deadlock-detect[={OFF|ON}]
    Введено 5.7.15
    Системная переменная innodb_deadlock_detect
    Область действия Глобальная
    Динамическая Да
    Тип Булево
    Значение по умолчанию ON

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

    Дополнительную информацию см. в разделе 14.7.5.2 «Обнаружение тупиков».

END_OF_DOCUMENT_MARKER
  • innodb_default_row_format

    Формат командной строки --innodb-default-row-format=value
    Системная переменная innodb_default_row_format
    Область видимости Глобальная
    Динамическая Да
    Тип Перечисление
    Значение по умолчанию DYNAMIC
    Допустимые значения

    REDUNDANT

    COMPACT

    DYNAMIC

    Параметр 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_DEBUG CMake.

  • innodb_doublewrite

    Формат командной строки --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_method O_DIRECT.

    Для получения дополнительной информации см. Раздел 14.6.5, «Doublewrite Buffer».

  • innodb_fast_shutdown

    Формат командной строки --innodb-fast-shutdown=#
    Системная переменная innodb_fast_shutdown
    Область видимости Глобальная
    Динамическая Да
    Тип Целое число
    Значение по умолчанию 1
    Допустимые значения

    0

    1

    2

    Режим 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_DEBUG CMake.

  • innodb_file_format

    Формат командной строки --innodb-file-format=value
    Устаревший Да
    Системная переменная innodb_file_format
    Область действия Глобальная
    Динамическая Да
    Тип Строка
    Значение по умолчанию Barracuda
    Допустимые значения

    Antelope

    Barracuda

    Включает формат файла 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

    Формат командной строки --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

    Формат командной строки --innodb-file-format-max=value
    Устаревший Да
    Системная переменная innodb_file_format_max
    Область действия Глобальная
    Динамическая Да
    Тип Строка
    Значение по умолчанию Barracuda
    Допустимые значения

    Antelope

    Barracuda

    При запуске сервера InnoDB устанавливает значение этой переменной в тег в (например, Antelope или Barracuda). Если сервер создаёт или открывает таблицу с «более высоким» форматом файла, он устанавливает значение innodb_file_format_max в этот формат.

    Связанная информация: Раздел 14.10, «Управление форматами файлов InnoDB».

    Параметр innodb_file_format_max устарел вместе с параметром innodb_file_format. Ожидается, что оба параметра будут удалены в будущих версиях.

  • innodb_file_per_table

    Формат командной строки --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, «Временное табличное пространство».

END_OF_DOCUMENT_MARKER
  • innodb_fill_factor

    Формат командной строки --innodb-fill-factor=#
    Системная переменная innodb_fill_factor
    Область действия Глобальная
    Динамическая Да
    Тип Целое число
    Значение по умолчанию 100
    Минимальное значение 10
    Максимальное значение 100

    InnoDB выполняет массовую загрузку при создании или перестроении индексов. Этот метод создания индексов известен как “построение индекса в отсортированном виде”.

    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=#
    Системная переменная 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
    Допустимые значения

    0

    1

    2

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

    • Значение по умолчанию 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

    Формат командной строки --innodb-flush-method=value
    Системная переменная innodb_flush_method
    Область действия Глобальная
    Динамическая Нет
    Тип Строка
    Значение по умолчанию NULL
    Допустимые значения (Unix)

    fsync

    O_DSYNC

    littlesync

    nosync

    O_DIRECT

    O_DIRECT_NO_FSYNC

    Допустимые значения (Windows)

    async_unbuffered

    normal

    unbuffered

    Определяет метод, используемый для записи данных в 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=#
    Системная переменная innodb_flush_neighbors
    Область действия Глобальная
    Динамическая Да
    Тип Перечисление
    Значение по умолчанию 1
    Допустимые значения

    0

    1

    2

    Указывает, будут ли страницы из InnoDB буфера также записываться в innodb_flush_neighbors.

    • Значение 0 отключает innodb_flush_neighbors. Незаписанные страницы в одном и том же блоке не записываются.

    • Значение по умолчанию 1 записывает смежные грязные страницы в одном и том же блоке.

    • Значение 2 записывает грязные страницы в одном и том же блоке.

    Когда данные таблицы хранятся на традиционном устройстве хранения, запись таких блоков в одной операции снижает издержки на операции ввода-вывода (в основном операции поиска на диске) по сравнению с записью отдельных страниц в разное время. Для данных таблиц, хранящихся в памяти, время поиска не является значимым фактором, и вы можете отключить эту настройку, чтобы распределить операции записи. Для получения дополнительной информации см. Раздел 14.8.3.5, «Настройка сброса кэша буфера».

  • innodb_flush_sync

    Формат командной строки --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=#
    Системная переменная innodb_flushing_avg_loops
    Область действия Глобальная
    Динамическая Да
    Тип Целое число
    Значение по умолчанию 30
    Минимальное значение 1
    Максимальное значение 1000

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

    Для получения дополнительной информации см. Раздел 14.8.3.5, «Настройка сброса буфера пула».

  • innodb_force_load_corrupted

    Формат командной строки --innodb-force-load-corrupted[={OFF|ON}]
    Системная переменная innodb_force_load_corrupted
    Область действия Глобальная
    Динамическая Нет
    Тип Булево
    Значение по умолчанию OFF

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

  • innodb_force_recovery

    Формат командной строки --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_recovery 4 или выше переводит InnoDB в режим только для чтения.

    Эти ограничения могут привести к ошибке команд управления репликацией, потому что настройки репликации, такие как relay_log_info_repository=TABLE и master_info_repository=TABLE, хранят информацию в таблицах InnoDB.

  • innodb_ft_aux_table

    Системная переменная innodb_ft_aux_table
    Область действия Глобальная
    Динамическая Да
    Тип Строка

    Указывает полное имя таблицы InnoDB, содержащей индекс FULLTEXT. Эта переменная предназначена для диагностических целей и может быть установлена только во время выполнения. Например:

    SET GLOBAL innodb_ft_aux_table = 'test/t1';
    

    После установки этой переменной с именем в формате db_name/table_name, таблицы INFORMATION_SCHEMA INNODB_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=#
    Системная переменная innodb_ft_cache_size
    Область действия Глобальная
    Динамическая Нет
    Тип Целое число
    Значение по умолчанию 8000000
    Минимальное значение 1600000
    Максимальное значение 80000000
    Единица измерения байт

    Объем памяти в байтах, выделенный для кеша индекса полнотекстового поиска InnoDB FULLTEXT, который хранит обработанный документ в памяти при создании индекса InnoDB FULLTEXT. Вставки и обновления индексов записываются на диск только при достижении размера предела кеша innodb_ft_cache_size. innodb_ft_cache_size определяет размер кеша для каждой таблицы. Чтобы установить глобальный предел для всех таблиц, см. innodb_ft_total_cache_size.

    Для получения дополнительной информации см. InnoDB Full-Text Index Cache.

  • innodb_ft_enable_diag_print

    Формат командной строки --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
      
END_OF_DOCUMENT_MARKER
  • innodb_ft_enable_stopword

    Формат командной строки --innodb-ft-enable-stopword[={OFF|ON}]
    Системная переменная innodb_ft_enable_stopword
    Область видимости Глобальная, сессии
    Динамическая Да
    Тип Булево
    Значение по умолчанию ON

    Указывает, что набор связан с индексом InnoDB FULLTEXT во время создания индекса. Если установлен параметр innodb_ft_user_stopword_table, стоп-слова берутся из этой таблицы. В противном случае, если установлен параметр innodb_ft_server_stopword_table, стоп-слова берутся из этой таблицы. В противном случае используется встроенный набор стоп-слов по умолчанию.

    Для получения дополнительной информации см. Раздел 12.9.4, «Стоп-слова полного текста».

  • innodb_ft_max_token_size

    Формат командной строки --innodb-ft-max-token-size=#
    Системная переменная innodb_ft_max_token_size
    Область видимости Глобальная
    Динамическая Нет
    Тип Целое число
    Значение по умолчанию 84
    Минимальное значение 10
    Максимальное значение 84

    Максимальная длина слов в символах, которые хранятся в индексе InnoDB FULLTEXT. Установка ограничения на это значение уменьшает размер индекса, тем самым ускоряя запросы, за счет пропуска длинных ключевых слов или произвольных наборов букв, которые не являются настоящими словами и вряд ли будут поисковыми запросами.

    Для получения дополнительной информации см. Раздел 12.9.6, «Тонкая настройка поиска по полному тексту MySQL».

  • innodb_ft_min_token_size

    Формат командной строки --innodb-ft-min-token-size=#
    Системная переменная innodb_ft_min_token_size
    Область видимости Глобальная
    Динамическая Нет
    Тип Целое число
    Значение по умолчанию 3
    Минимальное значение 0
    Максимальное значение 16

    Минимальная длина слов, которые хранятся в индексе InnoDB FULLTEXT. Увеличение этого значения уменьшает размер индекса, тем самым ускоряя запросы, за счет пропуска распространенных слов, которые вряд ли будут значимыми в контексте поиска, таких как английские слова “a” и “to”. Для контента, использующего кодировку CJK (китайский, японский, корейский), укажите значение 1.

    Для получения дополнительной информации см. Раздел 12.9.6, «Тонкая настройка поиска по полному тексту MySQL».

  • innodb_ft_num_word_optimize

    Формат командной строки --innodb-ft-num-word-optimize=#
    Системная переменная innodb_ft_num_word_optimize
    Область видимости Глобальная
    Динамическая Да
    Тип Целое число
    Значение по умолчанию 2000
    Минимальное значение 1000
    Максимальное значение 10000

    Количество слов для обработки во время каждой операции OPTIMIZE TABLE над индексом InnoDB FULLTEXT. Поскольку операция массовой вставки или обновления таблицы, содержащей индекс поиска по полному тексту, может потребовать значительного обслуживания индекса для учета всех изменений, вы можете выполнить серию инструкций OPTIMIZE TABLE, каждая из которых будет продолжать работу там, где остановилась предыдущая.

    Для получения дополнительной информации см. Раздел 12.9.6, «Тонкая настройка поиска по полному тексту MySQL».

  • innodb_ft_result_cache_limit

    Формат командной строки --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

    Этот параметр используется для указания собственного списка стоп-слов индекса InnoDB FULLTEXT для всех таблиц 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=#
    Системная переменная innodb_ft_sort_pll_degree
    Область видимости Глобальная
    Динамическая Нет
    Тип Целое число
    Значение по умолчанию 2
    Минимальное значение 1
    Максимальное значение 16

    Количество потоков, используемых параллельно для индексации и токенизации текста в индексе InnoDB FULLTEXT при построении .

    Для получения дополнительной информации см. Раздел 14.6.2.4, «Индексы полного текста InnoDB», и innodb_sort_buffer_size.

  • innodb_ft_total_cache_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

    Формат командной строки --innodb-ft-user-stopword-table=db_name/table_name
    Системная переменная innodb_ft_user_stopword_table
    Область видимости Глобальная, сеанса
    Динамическая Да
    Тип Строка
    Значение по умолчанию NULL

    Этот параметр используется для указания собственного списка стоп-слов индекса InnoDB FULLTEXT в определенной таблице. Чтобы настроить собственный список стоп-слов для всех таблиц 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=#
    Системная переменная 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=#
    Системная переменная 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

    Формат командной строки --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_DEBUG CMake.

  • innodb_lock_wait_timeout

    Формат командной строки --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 мог определить, соответствует ли строка условию WHERE UPDATE:

    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=#
    Системная переменная 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

    Формат командной строки --innodb-log-checkpoint-now[={OFF|ON}]
    Системная переменная innodb_log_checkpoint_now
    Область видимости Глобальная
    Динамическая Да
    Тип Логическое
    Значение по умолчанию OFF

    Включите этот параметр отладки, чтобы принудительно заставить InnoDB записать контрольную точку. Эта опция доступна только в том случае, если поддержка отладки включена в компиляцию с помощью опции WITH_DEBUG CMake.

  • innodb_log_checksums

    Формат командной строки --innodb-log-checksums[={OFF|ON}]
    Системная переменная innodb_log_checksums
    Область видимости Глобальная
    Динамическая Да
    Тип Логическое
    Значение по умолчанию ON

    Включает или отключает контрольные суммы для страниц журнала повторной записи.

    innodb_log_checksums=ON включает алгоритм контрольной суммы CRC-32C для страниц журнала повторной записи. Когда innodb_log_checksums отключен, содержимое поля контрольной суммы страницы журнала повторной записи игнорируется.

    Контрольные суммы на странице заголовка журнала повторной записи и страницах контрольных точек журнала повторной записи никогда не отключаются.

  • innodb_log_compressed_pages

    Формат командной строки --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=#
    Системная переменная 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=#
    Системная переменная 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

    Формат командной строки --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=#
    Системная переменная 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=#
    Системная переменная 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=#
    Системная переменная innodb_max_dirty_pages_pct
    Область действия Глобальная
    Динамическая Да
    Тип Числовой
    Значение по умолчанию 75
    Минимальное значение 0
    Максимальное значение 99.999

    InnoDB пытается выгрузить данные из кэша, чтобы процент грязных страниц не превысил это значение. Значение по умолчанию составляет 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=#
    Системная переменная 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=#
    Системная переменная 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_DEBUG CMake. Для получения дополнительной информации см. Раздел 14.8.12, «Настройка порогового значения слияния для страниц индекса».

  • innodb_monitor_disable

    Формат командной строки --innodb-monitor-disable={counter|module|pattern|all}
    Системная переменная innodb_monitor_disable
    Область действия Глобальная
    Динамическая Да
    Тип Строка

    Эта переменная действует как переключатель, отключающий InnoDB. Данные счетчиков можно запрашивать с помощью таблицы Information Schema INNODB_METRICS. Для получения информации об использовании см. Раздел 14.16.6, «Таблица метрик InnoDB INFORMATION_SCHEMA».

    innodb_monitor_disable='latch' отключает сбор статистики для SHOW ENGINE INNODB MUTEX. Для получения дополнительной информации см. Раздел 13.7.5.15, «Оператор SHOW ENGINE».

  • innodb_monitor_enable

    Формат командной строки --innodb-monitor-enable={counter|module|pattern|all}
    Системная переменная innodb_monitor_enable
    Область действия Глобальная
    Динамическая Да
    Тип Строка

    Эта переменная действует как переключатель, включающий InnoDB. Данные счетчиков можно запрашивать с помощью таблицы Information Schema INNODB_METRICS. Для получения информации об использовании см. Раздел 14.16.6, «Таблица метрик InnoDB INFORMATION_SCHEMA».

    innodb_monitor_enable='latch' включает сбор статистики для SHOW ENGINE INNODB MUTEX. Для получения дополнительной информации см. Раздел 13.7.5.15, «Оператор SHOW ENGINE».

  • innodb_monitor_reset

    Формат командной строки --innodb-monitor-reset={counter|module|pattern|all}
    Системная переменная innodb_monitor_reset
    Область действия Глобальная
    Динамическая Да
    Тип Перечисление
    Значение по умолчанию NULL
    Допустимые значения

    counter

    module

    pattern

    all

    Эта переменная действует как переключатель, сбрасывающий значение счетчика для InnoDB в ноль. Данные счетчиков можно запрашивать с помощью таблицы Information Schema INNODB_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

    Формат командной строки --innodb-monitor-reset-all={counter|module|pattern|all}
    Системная переменная innodb_monitor_reset_all
    Область действия Глобальная
    Динамическая Да
    Тип Перечисление
    Значение по умолчанию NULL
    Допустимые значения

    counter

    module

    pattern

    all

    Эта переменная действует как переключатель, сбрасывающий все значения (минимальное, максимальное и т.д.) для InnoDB. Данные счетчиков можно запрашивать с помощью таблицы Information Schema INNODB_METRICS. Для получения информации об использовании см. Раздел 14.16.6, «Таблица метрик InnoDB INFORMATION_SCHEMA».

  • innodb_numa_interleave

    Формат командной строки --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=#
    Системная переменная 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=#
    Системная переменная 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=#
    Системная переменная innodb_open_files
    Область действия Глобальная
    Динамическая Нет
    Тип Целое число
    Значение по умолчанию -1 (указывает автоподстройку размера; не присваивайте это значение напрямую)
    Минимальное значение 10
    Максимальное значение 2147483647

    Указывает максимальное количество файлов, которые могут быть открыты InnoDB одновременно. Минимальное значение равно 10. Если innodb_file_per_table отключен, значение по умолчанию равно 300; в противном случае, значение по умолчанию равно 300 или значению table_open_cache, которое больше.

  • innodb_optimize_fulltext_only

    Формат командной строки --innodb-optimize-fulltext-only[={OFF|ON}]
    Системная переменная innodb_optimize_fulltext_only
    Область действия Глобальная
    Динамическая Да
    Тип Булево
    Значение по умолчанию OFF

    Изменяет способ работы OPTIMIZE TABLE с InnoDB таблицами. Предполагается временное включение во время операций технического обслуживания InnoDB таблиц с FULLTEXT индексами.

    По умолчанию OPTIMIZE TABLE переупорядочивает данные в OPTIMIZE TABLE таблицы. При включении данного параметра OPTIMIZE TABLE пропускает переупорядочивание данных таблицы, а вместо этого обрабатывает новые добавленные, удаленные и обновленные данные токенов для InnoDB FULLTEXT индексов. Для получения дополнительной информации см. Оптимизация индексов InnoDB Full-Text.

  • innodb_page_cleaners

    Формат командной строки --innodb-page-cleaners=#
    Системная переменная innodb_page_cleaners
    Область действия Глобальная
    Динамическая Нет
    Тип Целое число
    Значение по умолчанию 4
    Минимальное значение 1
    Максимальное значение 64

    Количество потоков обработчиков страниц, которые очищают грязные страницы из экземпляров буфера пула. Потоки обработчиков страниц выполняют очистку списков и очистку по алгоритму LRU. Поток обработчика страниц был введён в MySQL 5.6 для перегрузки работы по очистке буфера пула от потока InnoDB master. В 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=#
    Системная переменная innodb_page_size
    Область действия Глобальная
    Динамическая Нет
    Тип Перечисление
    Значение по умолчанию 16384
    Допустимые значения

    4096

    8192

    16384

    32768

    65536

    Указывает размер страницы для 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

    Формат командной строки --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=#
    Системная переменная 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=#
    Системная переменная 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

    Формат командной строки --innodb-random-read-ahead[={OFF|ON}]
    Системная переменная innodb_random_read_ahead
    Область видимости Глобальная
    Динамическая Да
    Тип Логическое
    Значение по умолчанию OFF

    Включает случайную технику для оптимизации InnoDB I/O.

    Подробная информация о соображениях производительности для различных типов запросов предварительной выборки см. в Разделе 14.8.3.4, «Настройка предварительной выборки буферного пула InnoDB (предварительная выборка)». Общие рекомендации по настройке I/O см. в Разделе 8.5.8, «Оптимизация дискового ввода-вывода InnoDB».

  • innodb_read_ahead_threshold

    Формат командной строки --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=#
    Системная переменная 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 и параметра Linux aio-max-nr может превысить системные ограничения. В идеале увеличьте параметр aio-max-nr; в качестве обходного пути можно уменьшить настройки для одной или обеих переменных MySQL.

  • innodb_read_only

    Командная строка --innodb-read-only[={OFF|ON}]
    Системная переменная innodb_read_only
    Область Глобальная
    Динамическая Нет
    Тип Булево
    Значение по умолчанию OFF

    Запускает InnoDB в режиме только для чтения. Для распространения баз данных или наборов данных на носителях только для чтения. Также может использоваться в хранилищах данных для совместного использования одного каталога данных между несколькими экземплярами. Более подробную информацию см. в Разделе 14.8.2, «Настройка InnoDB для работы в режиме только для чтения».

  • innodb_replication_delay

    Командная строка --innodb-replication-delay=#
    Системная переменная innodb_replication_delay
    Область Глобальная
    Динамическая Да
    Тип Целое
    Значение по умолчанию 0
    Минимальное значение 0
    Максимальное значение 4294967295
    Единица измерения миллисекунды

    Задержка потока репликации в миллисекундах на сервере-реплике, если достигнуто значение innodb_thread_concurrency.

  • innodb_rollback_on_timeout

    Командная строка --innodb-rollback-on-timeout[={OFF|ON}]
    Системная переменная innodb_rollback_on_timeout
    Область Глобальная
    Динамическая Нет
    Тип Булево
    Значение по умолчанию OFF

    InnoDB только последнюю операцию в транзакции при таймауте по умолчанию. Если указано --innodb-rollback-on-timeout, таймаут транзакции приводит к InnoDB прерыванию и откату всей транзакции.

    Более подробную информацию см. в Разделе 14.22.4, «Обработка ошибок InnoDB».

  • innodb_rollback_segments

    Командная строка --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_DEBUG CMake.

  • innodb_sort_buffer_size

    Командная строка --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=#
    Системная переменная innodb_spin_wait_delay
    Область Глобальная
    Динамическая Да
    Тип Целое
    Значение по умолчанию 6
    Минимальное значение 0
    Максимальное значение (64-разрядные платформы) 2**64-1
    Максимальное значение (32-разрядные платформы) 2**32-1

    Максимальная задержка между опросами для блокировки. Низкоуровневая реализация этого механизма зависит от сочетания оборудования и операционной системы, поэтому задержка не соответствует фиксированному интервалу времени. Более подробную информацию см. в Разделе 14.8.9, «Настройка опроса блокировок Spin Lock».

  • innodb_stats_auto_recalc

    Формат командной строки --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

    Формат командной строки --innodb-stats-method=value
    Системная переменная innodb_stats_method
    Область Глобальная
    Динамическая Да
    Тип Перечисление
    Значение по умолчанию nulls_equal
    Допустимые значения

    nulls_equal

    nulls_unequal

    nulls_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

    Формат командной строки --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 Schema TABLES или STATISTICS. (Эти обновления аналогичны тем, что происходят при ANALYZE TABLE.) При отключении InnoDB не обновляет статистику при выполнении этих операций. Отключение параметра может повысить скорость доступа к схемам с большим количеством таблиц или индексов. Также это может улучшить стабильность работы запросов, которые включают InnoDB таблицы.

    Чтобы изменить настройку, выполните оператор SET GLOBAL innodb_stats_on_metadata=mode, где mode — это либо ON, либо OFF (или 1 или 0). Изменение настройки требует привилегий, достаточных для установки глобальных системных переменных (см. Раздел 5.1.8.1, «Привилегии системных переменных»), и оно немедленно влияет на работу всех подключений.

  • innodb_stats_persistent

    Формат командной строки --innodb-stats-persistent[={OFF|ON}]
    Системная переменная innodb_stats_persistent
    Область Глобальная
    Динамическая Да
    Тип Булево
    Значение по умолчанию ON

    Указывает, сохраняются ли InnoDB статистика индексов на диске. В противном случае статистика может часто пересчитываться, что может привести к колебаниям в . Это значение хранится с каждой таблицей при создании таблицы. Вы можете установить innodb_stats_persistent на глобальном уровне перед созданием таблицы или использовать предложение STATS_PERSISTENT операторов CREATE TABLE и ALTER TABLE для переопределения системной настройки и настройки постоянной статистики для отдельных таблиц.

    Для получения дополнительной информации см. Раздел 14.8.11.1, «Настройка параметров постоянной статистики оптимизатора».

END_OF_DOCUMENT_MARKER
  • 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=#
    Устарело Да
    Системная переменная 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

    Формат командной строки --innodb-status-output[={OFF|ON}]
    Системная переменная innodb_status_output
    Область видимости Глобальная
    Динамическая Да
    Тип Логическое
    Значение по умолчанию OFF

    Включает или отключает периодический вывод для стандартного монитора InnoDB. Также используется в сочетании с innodb_status_output_locks для включения или отключения периодического вывода для монитора блокировок InnoDB. Для получения дополнительной информации см. Раздел 14.18.2, «Включение мониторов InnoDB».

  • innodb_status_output_locks

    Формат командной строки --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

    Формат командной строки --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, где mode — это ON или OFF. Изменение настройки GLOBAL требует привилегий, достаточных для изменения глобальных системных переменных (см. Раздел 5.1.8.1, «Привилегии системных переменных») и влияет на работу всех последующих клиентов, которые подключаются. Любой клиент может изменить настройку SESSION для innodb_strict_mode, и настройка влияет только на этого клиента.

  • innodb_support_xa

    Формат командной строки --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=#
    Системная переменная innodb_sync_array_size
    Область действия Глобальная
    Динамическая Нет
    Тип Целое число
    Значение по умолчанию 1
    Минимальное значение 1
    Максимальное значение 1024

    Определяет размер массива ожидания мьютекса/блокировки. Увеличение значения разбивает внутреннюю структуру данных, используемую для координации потоков, для большей конкуретности в задачах с большим количеством ожидающих потоков. Это значение должно быть настроено при запуске экземпляра MySQL и не может быть изменено после этого. Рекомендуется увеличивать значение для задач, которые часто генерируют большое количество ожидающих потоков, обычно более 768.

  • innodb_sync_spin_loops

    Формат командной строки --innodb-sync-spin-loops=#
    Системная переменная innodb_sync_spin_loops
    Область действия Глобальная
    Динамическая Да
    Тип Целое число
    Значение по умолчанию 30
    Минимальное значение 0
    Максимальное значение 4294967295

    Количество раз, когда поток ожидает освобождения мьютекса InnoDB, прежде чем поток будет приостановлен.

  • innodb_sync_debug

    Формат командной строки --innodb-sync-debug[={OFF|ON}]
    Системная переменная innodb_sync_debug
    Область действия Глобальная
    Динамическая Нет
    Тип Булево
    Значение по умолчанию OFF

    Включает проверку синхронизации отладки для хранилища InnoDB. Этот параметр доступен только в случае, если поддержка отладки скомпилирована с помощью параметра WITH_DEBUG CMake.

    Ранее включение проверки синхронизации отладки InnoDB требовало включения средства отладки синхронизации с помощью параметра ENABLE_DEBUG_SYNC CMake, который теперь удалён. Это требование было удалено в MySQL 5.7 с введением этой переменной.

  • innodb_table_locks

    Формат командной строки --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».

END_OF_DOCUMENT_MARKER
  • innodb_temp_data_file_path

    Формат командной строки --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=#
    Переменная системы 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=#
    Системная переменная 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

    Формат командной строки --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 переопределяет параметр MySQL tmpdir, но только для онлайн-операций 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=#
    Системная переменная innodb_trx_rseg_n_slots_debug
    Область действия Глобальная
    Динамическая Да
    Тип Целое число
    Значение по умолчанию 0
    Минимальное значение 0
    Максимальное значение 1024

    Устанавливает флаг отладки, который ограничивает TRX_RSEG_N_SLOTS заданным значением для функции trx_rsegf_undo_find_free, которая ищет свободные слоты для сегментов журнала отмены. Этот параметр доступен только в случае компиляции поддержки отладки с помощью параметра WITH_DEBUG опции CMake.

  • innodb_undo_directory

    Формат командной строки --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

    Формат командной строки --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

    Формат командной строки --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

    Формат командной строки --innodb-undo-tablespaces=#
    Устаревшая 5.7.21
    Переменная системы innodb_undo_tablespaces
    Область действия Глобальная
    Динамическая Нет
    Тип Целое число
    Значение по умолчанию 0
    Минимальное значение 0
    Максимальное значение 95

    Количество пространств таблиц отката, используемых для InnoDB. Значение по умолчанию равно 0.

    Примечание

    innodb_undo_tablespaces устарела; ожидается ее удаление в будущих версиях MySQL.

    Поскольку журналы отката могут увеличиваться в размерах во время длительных транзакций, использование нескольких пространств таблиц отката снижает максимальный размер каждого из них. Файлы пространств таблиц отката создаются в расположении, определенном innodb_undo_directory, с именами в формате undoN, где N — последовательный ряд целых чисел (включая ведущие нули), представляющие идентификатор пространства.

    Начальный размер файла пространства таблиц отката зависит от значения 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

    Формат командной строки --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_version

    Номер версии InnoDB. В MySQL 5.7 отдельное нумерация версии InnoDB не применяется, и это значение совпадает с номером версии version сервера.

END_OF_DOCUMENT_MARKER
  • innodb_write_io_threads

    Формат командной строки --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 и настройкой Linux aio-max-nr может превышать системные ограничения. В идеале, увеличьте настройку aio-max-nr; в качестве обходного решения можно уменьшить значения для одной или обеих переменных MySQL.

    Также следует учитывать значение sync_binlog, которое управляет синхронизацией двоичного журнала на диске.

    Советы по настройке ввода/вывода в целом см. в Разделе 8.5.8, «Оптимизация ввода/вывода диска InnoDB».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/innodb-parameters.html

Spec-Zone.ru

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