Spec-Zone.ru › MySQL 9.2

17.14 Параметры запуска InnoDB и системные переменные

  • Параметры запуска InnoDB

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

  • Системные переменные, принимающие значения «истина» или «ложь», могут быть включены при запуске сервера, указав их имя, или отключены с помощью префикса --skip-. Например, для включения или отключения адаптивного индекса хеширования InnoDB можно использовать --innodb-adaptive-hash-index или --skip-innodb-adaptive-hash-index в командной строке, или innodb_adaptive_hash_index или skip_innodb_adaptive_hash_index в файле опций.

  • Некоторые описания переменных ссылаются на “включение” или “отключение” переменной. Эти переменные могут быть включены с помощью оператора SET, установив их значения в ON или 1, или отключены, установив их значения в OFF или 0. Булевы переменные могут быть установлены при запуске в значения ON, TRUE, OFF и FALSE (регистр не учитывается), а также 1 и 0. См. Раздел 6.2.2.4, «Модификаторы параметров программы».

  • Системные переменные, принимающие числовое значение, могут быть указаны как --var_name=value в командной строке или как var_name=value в файлах опций.

  • Многие системные переменные могут быть изменены во время выполнения (см. Раздел 7.1.9.2, «Динамические системные переменные»).

  • Для получения информации о GLOBAL и SESSION модификаторах области действия переменной, обратитесь к документации оператора SET.

  • Некоторые параметры управляют расположением и структурой данных InnoDB файлы. Раздел 17.8.1, «Конфигурация запуска InnoDB» описывает, как использовать эти параметры.

  • Некоторые параметры, которые вы, возможно, не будете использовать сразу, помогают настроить характеристики производительности InnoDB на основе возможностей компьютера и базы данных.

  • Дополнительную информацию о задании параметров и системных переменных см. в Разделе 6.2.2, «Задавание параметров программы».

Таблица 17.23 Справочник по параметрам и переменным InnoDB

Таблица 17.23 Справочник по параметрам и переменным InnoDB
Имя Командная строка Файл опций Системная переменная Статус переменной Область действия переменной Динамическая
END_OF_DOCUMENT_MARKER
foreign_key_checks Да Оба Да
innodb_adaptive_flushing Да Да Да Глобальный Да
innodb_adaptive_flushing_lwm Да Да Да Глобальный Да
innodb_adaptive_hash_index Да Да Да Глобальный Да
innodb_adaptive_hash_index_parts Да Да Да Глобальный Нет
innodb_adaptive_max_sleep_delay Да Да Да Глобальный Да
innodb_autoextend_increment Да Да Да Глобальный Да
innodb_autoinc_lock_mode Да Да Да Глобальный Нет
innodb_background_drop_list_empty Да Да Да Глобальный Да
Innodb_buffer_pool_bytes_data Да Глобальный Нет
Innodb_buffer_pool_bytes_dirty Да Глобальный Нет
innodb_buffer_pool_chunk_size Да Да Да Глобальный Нет
innodb_buffer_pool_debug Да Да Да Глобальный Нет
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_in_core_file Да Да Да Глобальный Да
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_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_checkpoint_disabled Да Да Да Глобальный Да
innodb_checksum_algorithm Да Да Да Глобальный Да
innodb_commit_concurrency Да Да Да Глобальный Да
innodb_compress_debug Да Да Да Глобальный Да
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_ddl_buffer_size Да Да Да Сессия Да
innodb_ddl_log_crash_reset_debug Да Да Да Глобально Да
innodb_ddl_threads Да Да Да Сессия Да
innodb_deadlock_detect Да Да Да Глобально Да
innodb_dedicated_server Да Да Да Глобально Нет
innodb_default_row_format Да Да Да Глобально Да
innodb_directories Да Да Да Глобально Нет
innodb_disable_sort_file_cache Да Да Да Глобально Да
innodb_doublewrite Да Да Да Глобально Да
innodb_doublewrite_batch_size Да Да Да Глобально Нет
innodb_doublewrite_dir Да Да Да Глобально Нет
innodb_doublewrite_files Да Да Да Глобально Нет
innodb_doublewrite_pages Да Да Да Глобально Нет
innodb_fast_shutdown Да Да Да Глобально Да
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_fsync_threshold Да Да Да Глобально Да
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_idle_flush_pct Да Да Да Глобально Да
innodb_io_capacity Да Да Да Глобально Да
innodb_io_capacity_max Да Да Да Глобально Да
innodb_limit_optimistic_insert_debug Да Да Да Глобально Да
innodb_lock_wait_timeout Да Да Да Оба Да
innodb_log_buffer_size Да Да Да Глобально Да
innodb_log_checkpoint_fuzzy_now Да Да Да Глобально Да
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_spin_cpu_abs_lwm Да Да Да Глобально Да
innodb_log_spin_cpu_pct_hwm Да Да Да Глобально Да
innodb_log_wait_for_flush_spin_hwm Да Да Да Глобально Да
Innodb_log_waits Да Глобально Нет
innodb_log_write_ahead_size Да Да Да Глобально Да
Innodb_log_write_requests Да Глобально Нет
innodb_log_writer_threads Да Да Да Глобально Да
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_parallel_read_threads Да Да Да Сессия Да
innodb_print_all_deadlocks Да Да Да Глобально Да
innodb_print_ddl_logs Да Да Да Глобально Да
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_redo_log_archive_dirs Да Да Да Глобально Да
innodb_redo_log_capacity Да Да Да Глобально Да
Innodb_redo_log_capacity_resized Да Глобально Нет
Innodb_redo_log_checkpoint_lsn Да Глобально Нет
Innodb_redo_log_current_lsn Да Глобально Нет
Innodb_redo_log_enabled Да Глобально Нет
innodb_redo_log_encrypt Да Да Да Глобально Да
Innodb_redo_log_flushed_to_disk_lsn Да Глобально Нет
Innodb_redo_log_logical_size Да Глобально Нет
Innodb_redo_log_physical_size Да Глобально Нет
Innodb_redo_log_read_only Да Глобально Нет
Innodb_redo_log_resize_status Да Глобально Нет
Innodb_redo_log_uuid Да Глобально Нет
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_segment_reserve_factor Да Да Да Глобально Да
innodb_sort_buffer_size Да Да Да Глобально Нет
innodb_spin_wait_delay Да Да Да Глобально Да
innodb_spin_wait_pause_multiplier Да Да Да Глобально Да
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_transient_sample_pages Да Да Да Глобально Да
innodb-status-file Да Да
innodb_status_output Да Да Да Глобально Да
innodb_status_output_locks Да Да Да Глобально Да
innodb_strict_mode Да Да Да Оба Да
innodb_sync_array_size Да Да Да Глобально Нет
innodb_sync_debug Да Да Да Глобально Нет
innodb_sync_spin_loops Да Да Да Глобально Да
Innodb_system_rows_deleted Да Глобально Нет
Innodb_system_rows_inserted Да Глобально Нет
Innodb_system_rows_read Да Глобально Нет
Innodb_system_rows_updated Да Глобально Нет
innodb_table_locks Да Да Да Оба Да
innodb_temp_data_file_path Да Да Да Глобально Нет
innodb_temp_tablespaces_dir Да Да Да Глобально Нет
innodb_thread_concurrency Да Да Да Глобально Да
innodb_thread_sleep_delay Да Да Да Глобально Да
innodb_tmpdir Да Да Да Оба Да
Innodb_truncated_status_writes Да Глобально Нет
innodb_undo_directory Да Да Да Глобально Нет
innodb_undo_log_encrypt Да Да Да Глобально Да
innodb_undo_log_truncate Да Да Да Глобально Да
innodb_undo_tablespaces Да Да Да Глобально Да
Innodb_undo_tablespaces_active Да Глобально Нет
Innodb_undo_tablespaces_explicit Да Глобально Нет
Innodb_undo_tablespaces_implicit Да Глобально Нет
Innodb_undo_tablespaces_total Да Глобально Нет
innodb_use_fdatasync Да Да Да Глобально Да
innodb_use_native_aio Да Да Да Глобально Нет
innodb_validate_tablespace_paths Да Да Да Глобально Нет
innodb_version Да Глобально Нет
innodb_write_io_threads Да Да Да Глобально Нет
unique_checks Да Оба Да

Параметры запуска InnoDB

  • --innodb-dedicated-server

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

    При установке этого параметра при запуске сервера с помощью --innodb-dedicated-server или --innodb-dedicated-server=ON, либо в командной строке, либо в файле my.cnf, InnoDB автоматически рассчитывает и задает значения следующих переменных:

    • innodb_buffer_pool_size

    • innodb_redo_log_capacity

    Следует использовать параметр --innodb-dedicated-server только если экземпляр MySQL расположен на выделенном сервере, где он может использовать все доступные системные ресурсы. Использование этого параметра не рекомендуется, если экземпляр MySQL разделяет системные ресурсы с другими приложениями.

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

  • --innodb-status-file

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

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

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

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

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

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

  • innodb_adaptive_flushing

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

    Указывает, следует ли динамически регулировать скорость очистки в InnoDB в зависимости от рабочей нагрузки. Динамическая регулировка скорости очистки предназначена для предотвращения всплесков активности ввода-вывода. Эта настройка включена по умолчанию. Дополнительные сведения см. в разделе 17.8.3.5, «Настройка очистки буферного пула». Общие рекомендации по настройке ввода-вывода см. в разделе 10.5.8, «Оптимизация ввода-вывода InnoDB на диск».

  • innodb_adaptive_flushing_lwm

    Формат командной строки --innodb-adaptive-flushing-lwm=#
    Системная переменная innodb_adaptive_flushing_lwm
    Область действия Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 10
    Минимальное значение 0
    Максимальное значение 70

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

  • innodb_adaptive_hash_index

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

    Включен или выключен ли InnoDB. В зависимости от вашей рабочей нагрузки может быть желательно динамически включать или выключать для повышения производительности запросов. Поскольку адаптивный хеш-индекс может быть не полезен для всех рабочих нагрузок, проведите тесты с его включением и выключением, используя реальные рабочие нагрузки. Дополнительные сведения см. в разделе 17.5.3, «Адаптивный хеш-индекс».

    Эта переменная отключена по умолчанию. Вы можете изменить этот параметр с помощью инструкции SET GLOBAL, не перезапуская сервер. Для изменения настройки во время выполнения требуются права, достаточные для установки глобальных системных переменных. Дополнительные сведения см. в разделе 7.1.9.1, «Права на системные переменные». Вы также можете использовать --innodb-adaptive-hash-index при запуске сервера, чтобы включить его.

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

    До MySQL 8.4 этот параметр был включен по умолчанию.

  • innodb_adaptive_hash_index_parts

    Формат командной строки --innodb-adaptive-hash-index-parts=#
    Системная переменная innodb_adaptive_hash_index_parts
    Область действия Глобальная
    Динамическая Нет
    SET_VAR Подсказка применяется Нет
    Тип Числовой
    Значение по умолчанию 8
    Минимальное значение 1
    Максимальное значение 512

    Разделяет систему поиска адаптивного хеш-индекса. Каждый индекс привязан к определенному разделу, при этом каждый раздел защищен отдельным защелкой.

    Система поиска адаптивного хеш-индекса по умолчанию разделена на 8 частей. Максимальное значение — 512.

    Для получения дополнительной информации см. раздел 17.5.3, «Адаптивный хеш-индекс».

  • innodb_adaptive_max_sleep_delay

    Формат командной строки --innodb-adaptive-max-sleep-delay=#
    Системная переменная innodb_adaptive_max_sleep_delay
    Область действия Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 150000
    Минимальное значение 0
    Максимальное значение 1000000
    Единица измерения микросекунды

    Позволяет InnoDB автоматически регулировать значение innodb_thread_sleep_delay вверх или вниз в соответствии с текущей рабочей нагрузкой. Любое ненулевое значение включает автоматическую динамическую регулировку значения innodb_thread_sleep_delay вплоть до максимального значения, указанного в параметре innodb_adaptive_max_sleep_delay. Значение представляет собой количество микросекунд. Этот параметр может быть полезен в загруженных системах с более чем 16 InnoDB потоками. (На практике он наиболее ценен для систем MySQL с сотнями или тысячами одновременных подключений.)

    Дополнительные сведения см. в разделе 17.8.4, «Настройка параллелизма потоков для InnoDB».

  • innodb_autoextend_increment

    Формат командной строки --innodb-autoextend-increment=#
    Системная переменная innodb_autoextend_increment
    Область действия Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 64
    Минимальное значение 1
    Максимальное значение 1000
    Единица измерения мегабайты

    Размер приращения (в мегабайтах) для увеличения размера файла InnoDB с автоматическим расширением, когда он заполняется. Значение по умолчанию равно 64. Дополнительные сведения см. в разделе «Настройка файла данных системного табличного пространства» и разделе «Изменение размера системного табличного пространства».

    Параметр innodb_autoextend_increment не влияет на файлы табличных пространств или файлы. Эти файлы автоматически расширяются независимо от параметра innodb_autoextend_increment. Первоначальное расширение происходит на небольшие величины, после чего расширения происходят с шагом 4 МБ.

  • innodb_autoinc_lock_mode

    Формат командной строки --innodb-autoinc-lock-mode=#
    Переменная системы innodb_autoinc_lock_mode
    Область действия Глобальная
    Динамическая Нет
    SET_VAR Применяется подсказка Нет
    Тип Целое число
    Значение по умолчанию 2
    Допустимые значения

    0

    1

    2

    Способ, используемый для генерации значений AUTO_INCREMENT. Допустимые значения: 0, 1 или 2, соответственно для традиционного, последовательного или интерливированного способа.

    Значение по умолчанию — 2 (интерливированное), для совместимости с репликацией на основе строк.

    Подробные характеристики каждого режима блокировки см. в Режимах блокировки InnoDB AUTO_INCREMENT.

  • innodb_background_drop_list_empty

    Формат командной строки --innodb-background-drop-list-empty[={OFF|ON}]
    Переменная системы innodb_background_drop_list_empty
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применяется подсказка Нет
    Тип Булево
    Значение по умолчанию OFF

    Включение параметра отладки innodb_background_drop_list_empty помогает избежать ошибок в сценариях тестирования, откладывая создание таблицы до тех пор, пока список удаления в фоновом режиме не будет пуст. Например, если тестовый случай A помещает таблицу t1 в список удаления в фоновом режиме, тестовый случай B ждет, пока список удаления в фоновом режиме не опустеет, прежде чем создавать таблицу t1.

  • innodb_buffer_pool_chunk_size

    Формат командной строки --innodb-buffer-pool-chunk-size=#
    Переменная системы innodb_buffer_pool_chunk_size
    Область действия Глобальная
    Динамическая Нет
    SET_VAR Применяется подсказка Нет
    Тип Целое число
    Значение по умолчанию 134217728
    Минимальное значение 1048576
    Максимальное значение innodb_buffer_pool_size / innodb_buffer_pool_instances
    Единица измерения байты

    innodb_buffer_pool_chunk_size определяет размер фрагмента для операций изменения размера пула буферов InnoDB.

    Для избежания копирования всех страниц пула буферов во время операций изменения размера, операция выполняется по фрагментам. По умолчанию, innodb_buffer_pool_chunk_size составляет 128 МБ (134217728 байт). Количество страниц во фрагменте зависит от значения innodb_page_size. innodb_buffer_pool_chunk_size может быть увеличен или уменьшен с шагом в 1 МБ (1048576 байт).

    Ниже приведены условия, которые применяются при изменении значения innodb_buffer_pool_chunk_size:

    • Если innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances больше текущего размера пула буферов при инициализации пула буферов, innodb_buffer_pool_chunk_size усекается до innodb_buffer_pool_size / innodb_buffer_pool_instances.

    • Размер пула буферов всегда должен быть равен или кратен innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances. Если вы изменяете innodb_buffer_pool_chunk_size, innodb_buffer_pool_size автоматически округляется до значения, равного или кратного innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances. Корректировка происходит при инициализации пула буферов.

    Важно

    При изменении innodb_buffer_pool_chunk_size следует соблюдать осторожность, так как это может автоматически увеличить размер пула буферов. Прежде чем изменять innodb_buffer_pool_chunk_size, рассчитайте его влияние на innodb_buffer_pool_size, чтобы убедиться, что полученный размер пула буферов приемлем.

    Чтобы избежать потенциальных проблем с производительностью, количество фрагментов (innodb_buffer_pool_size / innodb_buffer_pool_chunk_size) не должно превышать 1000.

    Переменная innodb_buffer_pool_size является динамической, что позволяет изменять размер пула буферов во время работы сервера. Однако размер пула буферов должен быть равен или кратен innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances, и изменение любого из этих параметров требует перезапуска сервера.

    Дополнительную информацию см. в Разделе 17.8.3.1, «Настройка размера пула буферов InnoDB».

  • innodb_buffer_pool_debug

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

    Включение этого параметра позволяет использовать несколько экземпляров пула буферов, если размер пула меньше 1 ГБ, игнорируя ограничение минимального размера пула буферов 1 ГБ, наложенное на innodb_buffer_pool_instances. Параметр innodb_buffer_pool_debug доступен только если поддержка отладки скомпилирована с использованием параметра WITH_DEBUG CMake.

  • innodb_buffer_pool_dump_at_shutdown

    Формат командной строки --innodb-buffer-pool-dump-at-shutdown[={OFF|ON}]
    Переменная системы innodb_buffer_pool_dump_at_shutdown
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применяется подсказка Нет
    Тип Булево
    Значение по умолчанию ON

    Указывает, следует ли записывать страницы, кэшированные в пуле буферов InnoDB, при выключении сервера MySQL, чтобы сократить процесс при следующем запуске. Обычно используется в сочетании с innodb_buffer_pool_load_at_startup. Параметр innodb_buffer_pool_dump_pct определяет процент самых недавно использованных страниц пула буферов, которые будут сохранены.

    По умолчанию оба параметра innodb_buffer_pool_dump_at_shutdown и innodb_buffer_pool_load_at_startup включены.

    Дополнительную информацию см. в Разделе 17.8.3.6, «Сохранение и восстановление состояния пула буферов».

  • innodb_buffer_pool_dump_now

    Формат командной строки --innodb-buffer-pool-dump-now[={OFF|ON}]
    Системная переменная innodb_buffer_pool_dump_now
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Булево
    Значение по умолчанию OFF

    Немедленно создаёт запись о страницах, кэшированных в InnoDB. Обычно используется в сочетании с innodb_buffer_pool_load_now.

    Включение innodb_buffer_pool_dump_now запускает действие записи, но не изменяет настройку переменной, которая всегда остаётся OFF или 0. Чтобы просмотреть состояние дампа буферного пула после запуска дампа, запросите переменную Innodb_buffer_pool_dump_status.

    Включение innodb_buffer_pool_dump_now запускает действие дампа, но не изменяет настройку переменной, которая всегда остаётся OFF или 0. Чтобы просмотреть состояние дампа буферного пула после запуска дампа, запросите переменную Innodb_buffer_pool_dump_status.

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

  • innodb_buffer_pool_dump_pct

    Формат командной строки --innodb-buffer-pool-dump-pct=#
    Системная переменная innodb_buffer_pool_dump_pct
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 25
    Минимальное значение 1
    Максимальное значение 100

    Указывает процент наиболее часто используемых страниц для каждого буферного пула, которые необходимо считать и сохранить в дампе. Диапазон от 1 до 100. Значение по умолчанию — 25. Например, если есть 4 буферных пула по 100 страниц каждый, и innodb_buffer_pool_dump_pct установлено в 25, то будут сохранены 25 наиболее часто используемых страниц из каждого буферного пула.

  • innodb_buffer_pool_filename

    Формат командной строки --innodb-buffer-pool-filename=file_name
    Системная переменная innodb_buffer_pool_filename
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Имя файла
    Значение по умолчанию ib_buffer_pool

    Указывает имя файла, который содержит список идентификаторов табличных пространств и идентификаторов страниц, созданных с помощью innodb_buffer_pool_dump_at_shutdown или innodb_buffer_pool_dump_now. Идентификаторы табличных пространств и идентификаторы страниц сохраняются в следующем формате: space, page_id. По умолчанию файл называется ib_buffer_pool и расположен в каталоге данных InnoDB. Нестандартное расположение должно быть указано относительно каталога данных.

    Имя файла можно указать во время выполнения, используя инструкцию SET:

    SET GLOBAL innodb_buffer_pool_filename='file_name';
    

    Вы также можете указать имя файла при запуске, в строке запуска или файле конфигурации MySQL. При указании имени файла при запуске файл должен существовать, иначе InnoDB вернёт ошибку запуска, указывающую на то, что такого файла или каталога не существует.

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

  • innodb_buffer_pool_in_core_file

    Формат командной строки --innodb-buffer-pool-in-core-file[={OFF|ON}]
    Системная переменная innodb_buffer_pool_in_core_file
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Булево
    Значение по умолчанию OFF

    Отключение (по умолчанию) переменной innodb_buffer_pool_in_core_file уменьшает размер файлов дампа памяти, исключая страницы буферного пула InnoDB.

    Для использования этой переменной должна быть включена переменная core_file, а для отключения этого параметра операционная система должна поддерживать расширение MADV_DONTDUMP, не относящееся к POSIX, для madvise(), которое поддерживается в Linux 3.4 и более поздних версиях. Для получения дополнительной информации см. Раздел 17.8.3.7, «Исключение или включение страниц буферного пула из файлов дампа памяти».

    Этот параметр отключен по умолчанию в системах, которые поддерживают MADV_DONTDUMP, что обычно относится только к Linux, а не к macOS или Windows.

    До MySQL 8.4 этот параметр был включен по умолчанию.

  • innodb_buffer_pool_instances

    Формат командной строки --innodb-buffer-pool-instances=#
    Системная переменная innodb_buffer_pool_instances
    Область видимости Глобальная
    Динамическая Нет
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию see description
    Минимальное значение 1
    Максимальное значение 64

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

    Общий размер буферного пула делится между всеми буферными пулами. Для повышения эффективности укажите комбинацию innodb_buffer_pool_instances и innodb_buffer_pool_size так, чтобы каждый экземпляр буферного пула был не менее 1 ГБ.

    Если innodb_buffer_pool_size <= 1 GiB, то значение innodb_buffer_pool_instances по умолчанию равно 1.

    Если innodb_buffer_pool_size > 1 GiB, то значение innodb_buffer_pool_instances по умолчанию — минимальное значение из двух следующих вычисленных подсказок в диапазоне 1-64:

    • Подсказка буферного пула: вычисляется как 1/2 от (innodb_buffer_pool_size / innodb_buffer_pool_chunk_size)

    • Подсказка процессора: вычисляется как 1/4 от доступных логических процессоров

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

  • innodb_buffer_pool_load_abort

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

    Прерывает процесс восстановления InnoDB содержимого, инициированный innodb_buffer_pool_load_at_startup или innodb_buffer_pool_load_now.

    Включение innodb_buffer_pool_load_abort запускает действие прерывания, но не изменяет настройку переменной, которая всегда остается OFF или 0. Для просмотра статуса загрузки буфера после запуска действия прерывания запросите переменную Innodb_buffer_pool_load_status.

    Дополнительную информацию см. в Разделе 17.8.3.6, «Сохранение и восстановление состояния буфера пула».

  • innodb_buffer_pool_load_at_startup

    Формат командной строки --innodb-buffer-pool-load-at-startup[={OFF|ON}]
    Системная переменная innodb_buffer_pool_load_at_startup
    Область действия Глобальная
    Динамическая Нет
    SET_VAR Применяется подсказка Нет
    Тип Булево
    Значение по умолчанию ON

    Указывает, что при запуске сервера MySQL InnoDB автоматически загружается, загружая те же страницы, которые он содержал ранее. Обычно используется в сочетании с innodb_buffer_pool_dump_at_shutdown.

    И innodb_buffer_pool_dump_at_shutdown, и innodb_buffer_pool_load_at_startup включены по умолчанию.

    Дополнительную информацию см. в Разделе 17.8.3.6, «Сохранение и восстановление состояния буфера пула».

  • innodb_buffer_pool_load_now

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

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

    Включение innodb_buffer_pool_load_now запускает действие загрузки, но не изменяет настройку переменной, которая всегда остается OFF или 0. Для просмотра прогресса загрузки буфера после запуска действия загрузки запросите переменную Innodb_buffer_pool_load_status.

    Дополнительную информацию см. в Разделе 17.8.3.6, «Сохранение и восстановление состояния буфера пула».

  • innodb_buffer_pool_size

    Формат командной строки --innodb-buffer-pool-size=#
    Системная переменная innodb_buffer_pool_size
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применяется подсказка Нет
    Тип Целое
    Значение по умолчанию 134217728
    Минимальное значение 5242880
    Максимальное значение (64-битные платформы) 2**64-1
    Максимальное значение (32-битные платформы) 2**32-1
    Единица измерения байты

    Размер в байтах буфера пула , области памяти, где InnoDB кэширует табличные и индексные данные. Значение по умолчанию составляет 134217728 байт (128 МБ). Максимальное значение зависит от архитектуры процессора; максимальное значение составляет 4294967295 (232-1) на 32-битных системах и 18446744073709551615 (264-1) на 64-битных системах. На 32-битных системах архитектура процессора и операционная система могут ограничить практическое максимальное значение. Если размер буферного пула превышает 1 ГБ, установка innodb_buffer_pool_instances на значение больше 1 может улучшить масштабируемость на загруженном сервере.

    Больший буферный пул требует меньше операций ввода-вывода с диска для доступа к тем же данным таблицы более одного раза. На выделенном сервере баз данных вы можете установить размер буферного пула на 80% от размера физической памяти машины. Учтите следующие потенциальные проблемы при настройке размера буферного пула и будьте готовы уменьшить размер буферного пула при необходимости.

    • Конкуренция за физическую память может вызвать кэширование в операционной системе.

    • InnoDB резервирует дополнительную память для буферов и управляющих структур, так что общий выделенный объем примерно на 10% больше, чем указанный размер буферного пула.

    • Адресное пространство для буферного пула должно быть непрерывным, что может быть проблемой в системах Windows с DLL, загружаемыми по определенным адресам.

    • Время инициализации буферного пула примерно пропорционально его размеру. В экземплярах с большими буферными пулами время инициализации может быть значительным. Для уменьшения периода инициализации можно сохранить состояние буферного пула при завершении работы сервера и восстановить его при запуске сервера. См. Раздел 17.8.3.6, «Сохранение и восстановление состояния буфера пула».

    При увеличении или уменьшении размера буферного пула операция выполняется частями. Размер фрагмента определяется переменной innodb_buffer_pool_chunk_size, которая имеет значение по умолчанию 128 МБ.

    Размер буферного пула должен всегда быть равен или кратен innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances. Если вы измените размер буферного пула на значение, которое не равно или не кратно innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances, размер буферного пула автоматически корректируется до значения, равного или кратного innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances.

    innodb_buffer_pool_size можно установить динамически, что позволяет изменять размер буферного пула без перезапуска сервера. Статус онлайн-операций изменения размера буферного пула сообщает переменная статуса Innodb_buffer_pool_resize_status. Дополнительную информацию см. в Разделе 17.8.3.1, «Настройка размера буферного пула InnoDB».

    Если сервер запускается с --innodb-dedicated-server, значение innodb_buffer_pool_size устанавливается автоматически, если оно не определено явно. Дополнительную информацию см. в Разделе 17.8.12, «Включение автоматической настройки InnoDB для выделенного сервера MySQL».

  • innodb_change_buffer_max_size

    Формат командной строки --innodb-change-buffer-max-size=#
    Системная переменная innodb_change_buffer_max_size
    Область действия Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 25
    Минимальное значение 0
    Максимальное значение 50

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

  • innodb_change_buffering

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

    none

    inserts

    deletes

    changes

    purges

    all

    Определяет, выполняет ли InnoDB буферизацию операций, оптимизацию, откладывающую операции записи во вторичные индексы, чтобы операции ввода/вывода можно было выполнять последовательно. Допустимые значения описаны в следующей таблице. Значения также можно указать численно.

    Таблица 17.24 Допустимые значения для innodb_change_buffering

    Таблица 17.24 Допустимые значения для innodb_change_buffering
    Значение Численное значение Описание
    none 0 Значение по умолчанию. Не буферизовать операции.
    inserts 1 Буферизовать операции вставки.
    deletes 2 Буферизовать операции маркировки удаления; строго говоря, записи, которые помечают записи индексов для последующего удаления во время операции очистки.
    changes 3 Буферизовать операции вставки и маркировки удаления.
    purges 4 Буферизовать физические операции удаления, которые происходят в фоновом режиме.
    all 5 Буферизовать операции вставки, маркировки удаления и очистки.

    До MySQL 8.4 значение по умолчанию было all.

    Дополнительную информацию см. в разделе 17.5.2, «Буфер изменений». Советы по настройке ввода/вывода см. в разделе 10.5.8, «Оптимизация ввода/вывода InnoDB».

  • innodb_change_buffering_debug

    Формат командной строки --innodb-change-buffering-debug=#
    Системная переменная innodb_change_buffering_debug
    Область действия Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 0
    Минимальное значение 0
    Максимальное значение 2

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

  • innodb_checkpoint_disabled

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

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

  • innodb_checksum_algorithm

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

    crc32

    strict_crc32

    innodb

    strict_innodb

    none

    strict_none

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

    Значение innodb обратно совместимо с более ранними версиями MySQL. Значение crc32 использует алгоритм, который быстрее вычисляет контрольную сумму для каждого изменённого блока и проверяет контрольные суммы при каждом чтении с диска. Он сканирует блоки по 64 бита, что быстрее, чем алгоритм контрольной суммы innodb, который сканирует блоки по 8 бит. Значение none записывает постоянное значение в поле контрольной суммы, а не вычисляет значение на основе данных блока. Блоки в табличном пространстве могут использовать смесь старых, новых и без контрольных сумм, постепенно обновляясь по мере изменения данных; как только блоки в табличном пространстве будут изменены на использование алгоритма crc32, связанные таблицы не смогут читаться более ранними версиями MySQL.

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

    В следующей таблице показаны различия между значениями параметров none, innodb и crc32 и их строгими аналогами. none, innodb и crc32 записывают указанный тип значения контрольной суммы в каждый блок данных, но для совместимости принимают другие значения контрольной суммы при проверке блока во время операции чтения. Строгие настройки также принимают допустимые значения контрольной суммы, но выдают сообщение об ошибке при обнаружении допустимого, но несовпадающего значения контрольной суммы. Использование строгой формы может ускорить проверку, если все файлы данных InnoDB в экземпляре созданы с одинаковым значением innodb_checksum_algorithm.

    Таблица 17.25 Разрешённые значения innodb_checksum_algorithm

    Таблица 17.25 Разрешённые значения innodb_checksum_algorithm
    Значение Сгенерированная контрольная сумма (при записи) Разрешённые контрольные суммы (при чтении)
    none Постоянное число. Любая из контрольных сумм, сгенерированных none, innodb или crc32.
    innodb Контрольная сумма, рассчитанная в программном обеспечении, с использованием исходного алгоритма из InnoDB. Любая из контрольных сумм, сгенерированных none, innodb или crc32.
    crc32 Контрольная сумма, рассчитанная с помощью алгоритма crc32, возможно с помощью аппаратной поддержки. Любая из контрольных сумм, сгенерированных none, innodb или crc32.
    strict_none Постоянное число Любая из контрольных сумм, сгенерированных none, innodb или crc32. InnoDB выводит сообщение об ошибке, если обнаруживается правильная, но несовпадающая контрольная сумма.
    strict_innodb Контрольная сумма, рассчитанная в программном обеспечении, с использованием исходного алгоритма из InnoDB. Любая из контрольных сумм, сгенерированных none, innodb или crc32. InnoDB выводит сообщение об ошибке, если обнаруживается правильная, но несовпадающая контрольная сумма.
    strict_crc32 Контрольная сумма, рассчитанная с помощью алгоритма crc32, возможно с помощью аппаратной поддержки. Любая из контрольных сумм, сгенерированных none, innodb или crc32. InnoDB выводит сообщение об ошибке, если обнаруживается правильная, но несовпадающая контрольная сумма.

  • innodb_cmp_per_index_enabled

    Формат командной строки --innodb-cmp-per-index-enabled[={OFF|ON}]
    Системная переменная innodb_cmp_per_index_enabled
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применимо ли подсказка Нет
    Тип Булево
    Значение по умолчанию OFF

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

    Дополнительную информацию см. в разделе 28.4.8 «Таблицы INFORMATION_SCHEMA INNODB_CMP_PER_INDEX и INNODB_CMP_PER_INDEX_RESET» и разделе 17.9.1.4 «Мониторинг сжатия таблиц InnoDB во время выполнения».

  • innodb_commit_concurrency

    Формат командной строки --innodb-commit-concurrency=#
    Системная переменная innodb_commit_concurrency
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применимо ли подсказка Нет
    Тип Целое число
    Значение по умолчанию 0
    Минимальное значение 0
    Максимальное значение 1000

    Количество может одновременно. Значение 0 (по умолчанию) разрешает любое количество для одновременного подтверждения.

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

  • innodb_compress_debug

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

    none

    zlib

    lz4

    lz4hc

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

    Для получения дополнительной информации см. раздел 17.9.2 «Сжатие страниц InnoDB».

  • innodb_compression_failure_threshold_pct

    Формат командной строки --innodb-compression-failure-threshold-pct=#
    Системная переменная innodb_compression_failure_threshold_pct
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 5
    Минимальное значение 0
    Максимальное значение 100

    Определяет пороговое значение уровня сбоев сжатия для таблицы в процентах, при достижении которого MySQL начинает добавлять заполнение внутри страниц, чтобы избежать дорогостоящих операций. Когда этот порог превышен, MySQL начинает оставлять дополнительное свободное пространство в каждой новой сжатой странице, динамически регулируя объем свободного пространства до процента от размера страницы, указанного в innodb_compression_pad_pct_max. Значение ноль отключает механизм, который контролирует эффективность сжатия и динамически регулирует объем заполнения.

    Для получения дополнительной информации см. Раздел 17.9.1.6, «Сжатие для рабочих нагрузок OLTP».

  • innodb_compression_level

    Формат командной строки --innodb-compression-level=#
    Системная переменная innodb_compression_level
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 6
    Минимальное значение 0
    Максимальное значение 9

    Указывает уровень zlib-сжатия для использования для InnoDB таблиц и индексов. Более высокое значение позволяет разместить больше данных на устройстве хранения, за счет больших затрат ресурсов ЦП во время сжатия. Более низкое значение позволяет уменьшить нагрузку на ЦП, когда место для хранения не является критическим, или вы ожидаете, что данные не будут сильно сжиматься.

    Для получения дополнительной информации см. Раздел 17.9.1.6, «Сжатие для рабочих нагрузок OLTP».

  • innodb_compression_pad_pct_max

    Формат командной строки --innodb-compression-pad-pct-max=#
    Системная переменная innodb_compression_pad_pct_max
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 50
    Минимальное значение 0
    Максимальное значение 75

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

    Для получения дополнительной информации см. Раздел 17.9.1.6, «Сжатие для рабочих нагрузок OLTP».

  • innodb_concurrency_tickets

    Формат командной строки --innodb-concurrency-tickets=#
    Системная переменная innodb_concurrency_tickets
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 5000
    Минимальное значение 1
    Максимальное значение 4294967295

    Определяет количество потоков, которые могут одновременно войти в InnoDB. Поток помещается в очередь, когда он пытается войти в InnoDB, если количество потоков уже достигло предела параллелизма. Когда поток может войти в InnoDB, ему выдается количество “билетов”, равное значению innodb_concurrency_tickets, и поток может свободно входить и выходить из InnoDB, пока не израсходует свои билеты. После этого поток снова становится объектом проверки параллелизма (и возможного помещения в очередь) в следующий раз, когда он попытается войти в InnoDB. Значение по умолчанию равно 5000.

    При небольшом значении innodb_concurrency_tickets, небольшие транзакции, которым нужно обработать только несколько строк, конкурируют достаточно честно с большими транзакциями, которые обрабатывают много строк. Недостатком небольшого значения innodb_concurrency_tickets является то, что большие транзакции должны многократно проходить через очередь, прежде чем они смогут завершиться, что увеличивает время, необходимое для выполнения задачи.

    При большом значении innodb_concurrency_tickets, большие транзакции тратят меньше времени на ожидание позиции в конце очереди (управляемой innodb_thread_concurrency) и больше времени на извлечение строк. Большие транзакции также требуют меньшего количества проходов через очередь для завершения своей задачи. Недостатком большого значения innodb_concurrency_tickets является то, что слишком много больших транзакций, работающих одновременно, могут заблокировать меньшие транзакции, заставляя их дольше ждать перед выполнением.

    При ненулевом значении innodb_thread_concurrency, может потребоваться увеличить или уменьшить значение innodb_concurrency_tickets, чтобы найти оптимальный баланс между большими и меньшими транзакциями. Отчет SHOW ENGINE INNODB STATUS показывает количество оставшихся билетов для выполняющейся транзакции на ее текущем проходе через очередь. Эти данные также можно получить из столбца TRX_CONCURRENCY_TICKETS таблицы Information Schema INNODB_TRX.

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

  • innodb_data_file_path

    Формат командной строки --innodb-data-file-path=file_name
    Системная переменная innodb_data_file_path
    Область видимости Глобальная
    Динамическая Нет
    SET_VAR Подсказка применяется Нет
    Тип Строка
    Значение по умолчанию ibdata1:12M:autoextend

    Определяет имя, размер и атрибуты файлов данных системного табличного пространства InnoDB. Если вы не укажете значение для innodb_data_file_path, поведение по умолчанию будет заключаться в создании одного автоматически расширяющегося файла данных, немного большего, чем 12 МБ, с именем ibdata1.

    Полный синтаксис для спецификации файла данных включает имя файла, размер файла, атрибут autoextend и атрибут max:

    file_name:file_size[:autoextend[:max:max_file_size]]
    

    Размеры файлов указываются в килобайтах, мегабайтах или гигабайтах путем добавления K, M или G к значению размера. При указании размера файла данных в килобайтах делайте это кратно 1024. В противном случае значения КБ округляются до ближайшей границы мегабайта (МБ). Сумма размеров файлов должна быть, как минимум, немного больше 12 МБ.

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

  • innodb_data_home_dir

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

    Общая часть пути к каталогу для файлов данных InnoDB. Значение по умолчанию — каталог MySQL data. Настройка конкатенируется с настройкой innodb_data_file_path, если эта настройка не определена с абсолютным путем.

    При указании значения для innodb_data_home_dir требуется конечный слэш. Например:

    [mysqld]
    innodb_data_home_dir = /path/to/myibdata/
    

    Эта настройка не влияет на расположение табличных пространств.

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

  • innodb_ddl_buffer_size

    Формат командной строки --innodb-ddl-buffer-size=#
    Системная переменная innodb_ddl_buffer_size
    Область действия Сеанс
    Динамическая Да
    SET_VAR Применимо Нет
    Тип Целое число
    Значение по умолчанию 1048576
    Минимальное значение 65536
    Максимальное значение 4294967295
    Единица измерения байты

    Определяет максимальный размер буфера для операций DDL. Значение по умолчанию — 1048576 байтов (приблизительно 1 МБ). Применимо к операциям онлайн-DDL, создающим или перестраивающим вторичные индексы. См. Раздел 17.12.4, «Управление памятью онлайн-DDL». Максимальный размер буфера на поток DDL — максимальный размер буфера, делённый на количество потоков DDL (innodb_ddl_buffer_size/innodb_ddl_threads).

  • innodb_ddl_log_crash_reset_debug

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

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

  • innodb_ddl_threads

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

    Определяет максимальное количество параллельных потоков для этапов сортировки и построения при создании индексов. Применимо к операциям онлайн-DDL, создающим или перестраивающим вторичные индексы. Для получения дополнительной информации см. Раздел 17.12.5, «Конфигурирование параллельных потоков для операций онлайн-DDL» и Раздел 17.12.4, «Управление памятью онлайн-DDL».

  • innodb_deadlock_detect

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

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

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

  • innodb_default_row_format

    Формат командной строки --innodb-default-row-format=value
    Системная переменная innodb_default_row_format
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применимо Нет
    Тип Перечисление
    Значение по умолчанию 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. Для получения дополнительной информации см. Определение формата строк таблицы.

    Внутренние временные таблицы InnoDB, созданные сервером для обработки запросов, используют формат строк DYNAMIC, независимо от настройки innodb_default_row_format.

  • innodb_directories

    Формат командной строки --innodb-directories=dir_name
    Системная переменная innodb_directories
    Область действия Глобальная
    Динамическая Нет
    SET_VAR Применяется ли подсказка Нет
    Тип Имя каталога
    Значение по умолчанию NULL

    Определяет каталоги, которые следует сканировать при запуске для поиска файлов табличного пространства. Этот параметр используется при перемещении или восстановлении файлов табличного пространства в новое местоположение, когда сервер выключен. Также он используется для указания каталогов файлов табличного пространства, созданных с использованием абсолютного пути или находящихся вне каталога данных.

    Обнаружение табличного пространства во время восстановления после сбоя опирается на настройку innodb_directories для идентификации табличных пространств, упоминаемых в журналах редо. Дополнительная информация приведена в разделе Обнаружение табличного пространства во время восстановления после сбоя.

    Значение по умолчанию равно NULL, но каталоги, определённые параметрами innodb_data_home_dir, innodb_undo_directory и datadir, всегда добавляются к аргументу innodb_directories при построении списка каталогов для сканирования при запуске. Эти каталоги добавляются независимо от того, задана ли настройка innodb_directories явно.

    innodb_directories можно указать как параметр в командной строке или в файле параметров MySQL. Значение аргумента заключено в кавычки, так как в противном случае некоторые интерпретаторы команд воспринимают точку с запятой (;) как специальный символ. (Например, оболочки Unix используют её как разделитель команд.)

    Командная строка:

    mysqld --innodb-directories="directory_path_1;directory_path_2"
    

    Файл параметров MySQL:

    [mysqld]
    innodb_directories="directory_path_1;directory_path_2"
    

    Нельзя использовать выражения с подстановкой для указания каталогов.

    Сканирование по innodb_directories также проходит по подкаталогам указанных каталогов. Повторяющиеся каталоги и подкаталоги исключаются из списка каталогов, подлежащих сканированию.

    Дополнительную информацию см. в разделе Раздел 17.6.3.6, «Перемещение файлов табличного пространства, когда сервер выключен».

  • innodb_disable_sort_file_cache

    Формат командной строки --innodb-disable-sort-file-cache[={OFF|ON}]
    Системная переменная innodb_disable_sort_file_cache
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применяется ли подсказка Нет
    Тип Булево
    Значение по умолчанию OFF

    Отключает кэш файловой системы операционной системы для временных файлов сортировки слиянием. Это эквивалентно открытию таких файлов с помощью O_DIRECT.

  • innodb_doublewrite

    Формат командной строки --innodb-doublewrite=value
    Системная переменная innodb_doublewrite
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применяется ли подсказка Нет
    Тип Перечисление
    Значение по умолчанию ON
    Допустимые значения

    ON

    OFF

    DETECT_AND_RECOVER

    DETECT_ONLY

    Переменная innodb_doublewrite управляет буферизацией двойной записи. Буферизация двойной записи включена по умолчанию в большинстве случаев.

    Вы можете установить innodb_doublewrite на ON или OFF при запуске сервера для включения или отключения буферизации двойной записи соответственно. DETECT_AND_RECOVER эквивалентно ON. При этом буфер двойной записи полностью включен, содержимое страниц базы данных записывается в буфер двойной записи, где к нему обращаются во время восстановления для исправления неполных записей страниц. При DETECT_ONLY, в буфер двойной записи записывается только метаданные. Содержимое страниц базы данных не записывается в буфер двойной записи, и восстановление не использует буфер двойной записи для исправления неполных записей страниц. Эта облегченная настройка предназначена только для обнаружения неполных записей страниц.

    MySQL поддерживает динамические изменения настройки innodb_doublewrite, включающей буфер двойной записи, между ON, DETECT_AND_RECOVER и DETECT_ONLY. MySQL не поддерживает динамические изменения между настройкой, включающей буфер двойной записи, и OFF, и наоборот.

    Если буфер двойной записи расположен на устройстве Fusion-io, поддерживающем атомарные записи, буфер двойной записи автоматически отключается, а записи в файлы данных выполняются с использованием атомарных записей Fusion-io вместо этого. Однако следует учитывать, что настройка innodb_doublewrite глобальна. Когда буфер двойной записи отключен, он отключен для всех файлов данных, включая те, которые не находятся на оборудовании Fusion-io. Эта функция поддерживается только на оборудовании Fusion-io и включена только для Fusion-io NVMFS в Linux. Для максимальной пользы от этой функции рекомендуется установить innodb_flush_method на O_DIRECT.

    Дополнительную информацию см. в разделе Раздел 17.6.4, «Буфер двойной записи».

  • innodb_doublewrite_batch_size

    Формат командной строки --innodb-doublewrite-batch-size=#
    Системная переменная innodb_doublewrite_batch_size
    Область действия Глобальная
    Динамическая Нет
    SET_VAR Применяется ли подсказка Нет
    Тип Целое число
    Значение по умолчанию 0
    Минимальное значение 0
    Максимальное значение 256

    Эта переменная предназначалась для представления количества страниц двойной записи, которые нужно записать в пакет. Эта функциональность была заменена на innodb_doublewrite_pages.

    Дополнительную информацию см. в разделе Раздел 17.6.4, «Буфер двойной записи».

  • innodb_doublewrite_dir

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

    Определяет каталог для файлов двойной записи. Если каталог не указан, файлы двойной записи создаются в каталоге innodb_data_home_dir, который по умолчанию совпадает с каталогом данных, если не указан иначе.

    Дополнительную информацию см. в разделе Раздел 17.6.4, «Буфер двойной записи».

  • innodb_doublewrite_files

    Формат командной строки --innodb-doublewrite-files=#
    Системная переменная innodb_doublewrite_files
    Область видимости Глобальная
    Динамическая Нет
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 2
    Минимальное значение 1
    Максимальное значение 256

    Определяет количество файлов doublewrite. По умолчанию создаются два файла doublewrite для каждого экземпляра пула буферов.

    Как минимум, существуют два файла doublewrite. Максимальное количество файлов doublewrite равно двум, умноженным на количество экземпляров пула буферов. (Количество экземпляров пула буферов управляется переменной innodb_buffer_pool_instances.)

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

  • innodb_doublewrite_pages

    Формат командной строки --innodb-doublewrite-pages=#
    Системная переменная innodb_doublewrite_pages
    Область видимости Глобальная
    Динамическая Нет
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 128
    Минимальное значение 1
    Максимальное значение 512

    Определяет максимальное количество страниц doublewrite на поток для пакетной записи. Если значение не указано, innodb_doublewrite_pages принимает значение по умолчанию 128.

    До MySQL 8.4 значение по умолчанию было равно значению innodb_write_io_threads, которое по умолчанию равно 4.

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

  • innodb_extend_and_initialize

    Формат командной строки --innodb=extend-and-initialize[={OFF|ON}]
    Системная переменная innodb_extend_and_initialize
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Логическое
    Значение по умолчанию ON

    Управляет тем, как пространство выделяется для таблиц в отдельных файлах и общих табличных пространствах в системах Linux.

    Когда включено, InnoDB записывает NULL в недавно выделенные страницы. Когда отключено, пространство выделяется с помощью вызовов posix_fallocate(), которые резервируют пространство без физической записи NULL.

    Для получения дополнительной информации см. Раздел 17.6.3.8, «Оптимизация выделения пространства табличного пространства в Linux».

  • innodb_fast_shutdown

    Формат командной строки --innodb-fast-shutdown=#
    Системная переменная innodb_fast_shutdown
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 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
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 0
    Минимальное значение 0
    Максимальное значение 2**32-1

    По умолчанию, установка innodb_fil_make_page_dirty_debug на ID табличного пространства немедленно делает первую страницу табличного пространства грязной. Если innodb_saved_page_number_debug установлено в значение, отличное от значения по умолчанию, установка innodb_fil_make_page_dirty_debug делает указанную страницу грязной. Параметр innodb_fil_make_page_dirty_debug доступен только в том случае, если поддержка отладки компилируется с использованием параметра WITH_DEBUG CMake.

  • innodb_file_per_table

    Формат командной строки --innodb-file-per-table[={OFF|ON}]
    Системная переменная innodb_file_per_table
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Логическое
    Значение по умолчанию ON

    Когда innodb_file_per_table включено, таблицы по умолчанию создаются в табличных пространствах с файлами для каждой таблицы. Когда отключено, таблицы по умолчанию создаются в системном табличном пространстве. Информация о табличных пространствах с файлами для каждой таблицы приведена в Разделе 17.6.3.2, «Табличные пространства с файлами для каждой таблицы». Информация о системном табличном пространстве InnoDB приведена в Разделе 17.6.3.1, «Системное табличное пространство».

    Переменная innodb_file_per_table может быть настроена во время выполнения с помощью оператора SET GLOBAL, указанного в командной строке при запуске или указанного в файле параметров. Настройка во время выполнения требует прав, достаточных для установки глобальных системных переменных (см. Раздел 7.1.9.1, «Права на системные переменные») и немедленно влияет на работу всех подключений.

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

    Настройка innodb_file_per-table не влияет на создание временных таблиц; временные таблицы создаются во временных табличных пространствах сеанса. См. Раздел 17.6.3.5, «Временные табличные пространства».

  • innodb_fill_factor

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

    Более подробную информацию см. в Разделе 17.6.2.3, «Построение отсортированных индексов».

  • innodb_flush_log_at_timeout

    Формат командной строки --innodb-flush-log-at-timeout=#
    Системная переменная innodb_flush_log_at_timeout
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применимо Нет
    Тип Целое число
    Значение по умолчанию 1
    Минимальное значение 1
    Максимальное значение 2700
    Единица измерения секунды

    Записывать и очищать журналы каждые N секунды. innodb_flush_log_at_timeout позволяет увеличить интервал времени между очистками, чтобы уменьшить частоту очистки и избежать влияния на производительность групповой фиксации бинарного журнала. Значение по умолчанию для innodb_flush_log_at_timeout составляет одну секунду.

  • innodb_flush_log_at_trx_commit

    Формат командной строки --innodb-flush-log-at-trx-commit=#
    Системная переменная innodb_flush_log_at_trx_commit
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применимо Нет
    Тип Перечисление
    Значение по умолчанию 1
    Допустимые значения

    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.

    Дополнительную информацию о наиболее устойчивой к неожиданным остановкам комбинации настроек на реплике см. в Разделе 19.4.2, «Обработка неожиданной остановки реплики».

    Предупреждение

    Многие операционные системы и некоторые устройства хранения данных обманывают операцию очистки на диск. Они могут сообщить mysqld, что очистка выполнена, хотя это не так. В этом случае долговечность транзакций не гарантируется даже при рекомендуемых настройках, и в худшем случае отключение питания может повредить данные InnoDB. Использование кэша диска с батарейным питанием в контроллере SCSI диска или в самом диске ускоряет очистку файлов и делает операцию безопаснее. Вы также можете попытаться отключить кэширование операций записи на диск в аппаратных кэшах.

  • innodb_flush_method

    Формат командной строки --innodb-flush-method=value
    Системная переменная innodb_flush_method
    Область действия Глобальная
    Динамическая Нет
    SET_VAR Применяется подсказка Нет
    Тип Строка
    Значение по умолчанию (Unix) O_DIRECT if supported, otherwise fsync
    Значение по умолчанию (Windows) unbuffered
    Допустимые значения (Unix)

    fsync

    O_DSYNC

    littlesync

    nosync

    O_DIRECT

    O_DIRECT_NO_FSYNC

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

    unbuffered

    normal

    Определяет метод, используемый для записи данных в InnoDB, что может повлиять на пропускную способность ввода-вывода.

    В Unix-подобных системах значение по умолчанию равно O_DIRECT, если поддерживается, в противном случае по умолчанию используется fsync. В Windows значение по умолчанию — unbuffered.

    Варианты параметра innodb_flush_method для Unix-подобных систем включают:

    • fsync или 0: InnoDB использует системный вызов fsync() для сброса данных и журнальных файлов.

    • O_DSYNC или 1: InnoDB использует O_SYNC для открытия и сброса журнальных файлов и fsync() для сброса данных. InnoDB не использует O_DSYNC напрямую из-за проблем на многих разновидностях Unix.

    • littlesync или 2: Этот параметр используется для внутренних тестов производительности и в настоящее время не поддерживается. Используйте на свой страх и риск.

    • nosync или 3: Этот параметр используется для внутренних тестов производительности и в настоящее время не поддерживается. Используйте на свой страх и риск.

    • O_DIRECT или 4: InnoDB использует O_DIRECT (или directio() на Solaris) для открытия файлов данных и использует fsync() для сброса данных и журнальных файлов. Этот параметр доступен в некоторых версиях GNU/Linux, FreeBSD и Solaris.

    • O_DIRECT_NO_FSYNC: InnoDB использует O_DIRECT при выполнении операций ввода-вывода сброса, но пропускает системный вызов fsync() после каждой операции записи.

      MySQL вызывает fsync() после создания нового файла, после увеличения размера файла и после закрытия файла, чтобы убедиться, что изменения метаданных файловой системы синхронизированы. Системный вызов fsync() по-прежнему пропускается после каждой операции записи.

      Возможность потери данных существует, если файлы журнала redo и файлы данных находятся на разных устройствах хранения, и произошел непредвиденный выход из строя перед сбросом записей из кэша устройства, который не поддерживает питание. Если вы используете или намерены использовать разные устройства хранения для файлов журнала redo и файлов данных, и файлы данных находятся на устройстве с кэшем, не поддерживающим питание, используйте O_DIRECT вместо этого.

    На платформах, которые поддерживают системные вызовы fdatasync(), переменная innodb_use_fdatasync позволяет использовать варианты innodb_flush_method, которые используют fsync(), чтобы использовать fdatasync() вместо этого. Системный вызов fdatasync() не сбрасывает изменения в метаданных файла, если они не требуются для последующего извлечения данных, что обеспечивает потенциальное преимущество производительности.

    Варианты параметра innodb_flush_method для Windows включают:

    • unbuffered или 0: InnoDB использует небуферизованный ввод-вывод.

      Примечание

      Запуск MySQL-сервера на жёстком диске с секторами 4 КБ в Windows не поддерживается с unbuffered. Обходной вариант — использовать innodb_flush_method=normal.

    • normal или 1: InnoDB использует буферизованный ввод-вывод.

    Влияние каждого параметра на производительность зависит от конфигурации оборудования и рабочей нагрузки. Сравните параметры вашей конфигурации, чтобы определить, какой параметр использовать или оставить значение по умолчанию. Проверьте системную переменную Innodb_data_fsyncs, чтобы увидеть общее количество вызовов fsync() (или вызовов fdatasync(), если innodb_use_fdatasync включено) для каждого параметра. Соотношение операций чтения и записи в вашей рабочей нагрузке может повлиять на производительность параметра. Например, на системе с контроллером RAID оборудования и кэшем записи с батарейным питанием O_DIRECT может помочь избежать двойного буферизации между буфером InnoDB и кэшем файловой системы операционной системы. На некоторых системах, где данные и журнальные файлы InnoDB расположены на SAN, значение по умолчанию или O_DSYNC может быть быстрее для рабочей нагрузки с интенсивным чтением и в основном операциями SELECT. Всегда тестируйте этот параметр с оборудованием и рабочей нагрузкой, отражающими вашу производственную среду. Для общих советов по настройке ввода-вывода см. Раздел 10.5.8, «Оптимизация ввода-вывода InnoDB на диске».

  • innodb_flush_neighbors

    Формат командной строки --innodb-flush-neighbors=#
    Системная переменная innodb_flush_neighbors
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применяется подсказка Нет
    Тип Перечисление
    Значение по умолчанию 0
    Допустимые значения

    0

    1

    2

    Указывает, следует ли при сбросе страницы из InnoDB также сбрасывать другие в том же .

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

    • Значение 1 сбрасывает смежные несброшенные страницы в том же объёме.

    • Значение 2 сбрасывает несброшенные страницы в том же объёме.

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

  • innodb_flush_sync

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

    Переменная innodb_flush_sync, которая включена по умолчанию, игнорирует параметры innodb_io_capacity и innodb_io_capacity_max во время кратковременных всплесков активности ввода-вывода, которые происходят в . Чтобы придерживаться скорости ввода-вывода, определённой параметрами innodb_io_capacity и innodb_io_capacity_max, отключите innodb_flush_sync.

    Дополнительную информацию о настройке переменной innodb_flush_sync см. в Разделе 17.8.7, «Настройка ёмкости ввода-вывода InnoDB».

  • innodb_flushing_avg_loops

    Формат командной строки --innodb-flushing-avg-loops=#
    Системная переменная innodb_flushing_avg_loops
    Область Глобальная
    Динамическая Да
    SET_VAR Применяется ли подсказка Нет
    Тип Целое число
    Значение по умолчанию 30
    Минимальное значение 1
    Максимальное значение 1000

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

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

  • innodb_force_load_corrupted

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

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

  • innodb_force_recovery

    Формат командной строки --innodb-force-recovery=#
    Системная переменная innodb_force_recovery
    Область Глобальная
    Динамическая Нет
    SET_VAR Применяется ли подсказка Нет
    Тип Целое число
    Значение по умолчанию 0
    Минимальное значение 0
    Максимальное значение 6

    Режим , который обычно изменяется только в серьезных ситуациях при устранении неполадок. Возможные значения от 0 до 6. Значения этих значений и важная информация о innodb_force_recovery см. в Разделе 17.20.3, «Принудительное восстановление InnoDB».

    Предупреждение

    Устанавливайте эту переменную только в значение, большее 0, в экстренных ситуациях, чтобы вы могли запустить InnoDB и сохранить ваши таблицы. В целях безопасности, InnoDB предотвращает операции INSERT, UPDATE или DELETE, когда innodb_force_recovery больше 0. Значение innodb_force_recovery 4 или больше переводит InnoDB в режим только для чтения.

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

  • innodb_fsync_threshold

    Формат командной строки --innodb-fsync-threshold=#
    Системная переменная innodb_fsync_threshold
    Область Глобальная
    Динамическая Да
    SET_VAR Применяется ли подсказка Нет
    Тип Целое число
    Значение по умолчанию 0
    Минимальное значение 0
    Максимальное значение 2**64-1

    По умолчанию, когда InnoDB создает новый файл данных, такой как новый журнал или файл табличного пространства, файл полностью записывается в кэш операционной системы перед сбросом на диск, что может привести к большому объёму операций записи на диск сразу. Чтобы обеспечить более мелкие периодические сбросы данных из кэша операционной системы, вы можете использовать переменную innodb_fsync_threshold для определения порога в байтах. Когда порог в байтах достигается, содержимое кэша операционной системы сбрасывается на диск. Значение по умолчанию 0 включает поведение по умолчанию, которое сбрасывает данные на диск только после полного заполнения кэша файла.

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

  • innodb_ft_aux_table

    Системная переменная innodb_ft_aux_table
    Область Глобальная
    Динамическая Да
    SET_VAR Применяется ли подсказка Нет
    Тип Строка

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

    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 отображают информацию об индексе поиска для указанной таблицы.

    Для получения дополнительной информации см. Раздел 17.15.4, «Таблицы InnoDB INFORMATION_SCHEMA FULLTEXT».

  • innodb_ft_cache_size

    Формат командной строки --innodb-ft-cache-size=#
    Системная переменная innodb_ft_cache_size
    Область Глобальная
    Динамическая Нет
    SET_VAR Применяется ли подсказка Нет
    Тип Целое число
    Значение по умолчанию 8000000
    Минимальное значение 1600000
    Максимальное значение 80000000
    Единица измерения байты

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

    Дополнительная информация приведена в Кэше индекса InnoDB полнотекстового поиска.

  • innodb_ft_enable_diag_print

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

    Включать ли дополнительный вывод диагностической информации о полнотекстовом поиске (FTS). Этот параметр предназначен в первую очередь для расширенной отладки FTS и не представляет интереса для большинства пользователей. Вывод печатается в журнал ошибок и включает в себя информацию, такую как:

    • Прогресс синхронизации индекса FTS (когда достигается предел кэша FTS). Например:

      FTS SYNC for table test, deleted count: 100 size: 10000 bytes
      SYNC words: 100
      
    • Прогресс оптимизации FTS. Например:

      FTS start optimize test
      FTS_OPTIMIZE: optimize "mysql"
      FTS_OPTIMIZE: processed "mysql"
      
    • Прогресс построения индекса FTS. Например:

      Number of doc processed: 1000
      
    • Для запросов FTS печатаются дерево разбора запроса, вес слов, время обработки запроса и использование памяти. Например:

      FTS Search Processing time: 1 secs: 100 millisec: row(s) 10000
      Full Search Memory: 245666 (bytes),  Row: 10000
      
  • innodb_ft_enable_stopword

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

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

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

  • innodb_ft_max_token_size

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

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

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

  • innodb_ft_min_token_size

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

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

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

  • innodb_ft_num_word_optimize

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

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

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

  • innodb_ft_result_cache_limit

    Формат командной строки --innodb-ft-result-cache-limit=#
    Системная переменная innodb_ft_result_cache_limit
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 2000000000
    Минимальное значение 1000000
    Максимальное значение 2**32-1
    Единица измерения байты

    Предел кэша результатов запроса полнотекстового поиска InnoDB (определяется в байтах) для каждого запроса полнотекстового поиска или для каждого потока. Промежуточные и окончательные результаты запроса полнотекстового поиска InnoDB обрабатываются в памяти. Используйте innodb_ft_result_cache_limit, чтобы установить ограничение размера для кэша результатов запроса полнотекстового поиска, чтобы избежать чрезмерного потребления памяти в случае очень больших результатов запроса полнотекстового поиска InnoDB (например, миллионы или сотни миллионов строк). Память выделяется по мере необходимости при обработке запроса полнотекстового поиска. Если достигается предел размера кэша результатов, возвращается ошибка, указывающая на то, что запрос превышает максимально допустимый объем памяти.

    Максимальное значение innodb_ft_result_cache_limit для всех типов платформ и разрядностей равно 2**32-1.

  • innodb_ft_server_stopword_table

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

    Этот параметр используется для указания собственного списка стоп-слов индекса 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.

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

  • innodb_ft_sort_pll_degree

    Формат командной строки --innodb-ft-sort-pll-degree=#
    Системная переменная innodb_ft_sort_pll_degree
    Область действия Глобальная
    Динамическая Нет
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 2
    Минимальное значение 1
    Максимальное значение 16

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

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

  • innodb_ft_total_cache_size

    Формат командной строки --innodb-ft-total-cache-size=#
    Системная переменная innodb_ft_total_cache_size
    Область действия Глобальная
    Динамическая Нет
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 640000000
    Минимальное значение 32000000
    Максимальное значение 1600000000
    Единица измерения байты

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

    Для получения дополнительной информации см. Кэш полнотекстового индекса InnoDB.

  • innodb_ft_user_stopword_table

    Формат командной строки --innodb-ft-user-stopword-table=db_name/table_name
    Системная переменная innodb_ft_user_stopword_table
    Область действия Глобальная, сеанса
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Строка
    Значение по умолчанию 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.

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

  • innodb_idle_flush_pct

    Формат командной строки --innodb-idle-flush-pct=#
    Системная переменная innodb_idle_flush_pct
    Область действия Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 100
    Минимальное значение 0
    Максимальное значение 100

    Ограничивает очистку страниц, когда InnoDB находится в режиме ожидания. Значение innodb_idle_flush_pct представляет собой процент от настройки innodb_io_capacity, которая определяет количество операций ввода-вывода в секунду, доступных для InnoDB. Для получения дополнительной информации см. Ограничение скорости очистки буфера в периоды простоя.

  • innodb_io_capacity

    Формат командной строки --innodb-io-capacity=#
    Системная переменная innodb_io_capacity
    Область действия Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 10000
    Минимальное значение 100
    Максимальное значение 2**32-1

    Переменная innodb_io_capacity определяет количество операций ввода-вывода в секунду (IOPS), доступных для фоновых задач InnoDB, таких как страниц из и слияние данных из .

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

  • innodb_io_capacity_max

    Формат командной строки --innodb-io-capacity-max=#
    Системная переменная innodb_io_capacity_max
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применимо для подсказки Нет
    Тип Целое число
    Значение по умолчанию 2 * innodb_io_capacity
    Минимальное значение 100
    Максимальное значение 2**32-1

    Если процесс сброса данных отстаёт, InnoDB может производить более агрессивный сброс, выполняя операции ввода-вывода (I/O) с большей скоростью, чем определено переменной innodb_io_capacity. Переменная innodb_io_capacity_max определяет максимальное число операций I/O, выполняемых фоновыми задачами InnoDB в таких ситуациях. Этот параметр не контролирует поведение innodb_flush_sync.

    Значение по умолчанию равно удвоенному значению innodb_io_capacity.

    Подробности о настройке переменной innodb_io_capacity_max см. в Разделе 17.8.7, «Настройка производительности ввода-вывода InnoDB».

  • innodb_limit_optimistic_insert_debug

    Формат командной строки --innodb-limit-optimistic-insert-debug=#
    Системная переменная innodb_limit_optimistic_insert_debug
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применимо для подсказки Нет
    Тип Целое число
    Значение по умолчанию 0
    Минимальное значение 0
    Максимальное значение 2**32-1

    Ограничивает количество записей на странице. Значение по умолчанию 0 означает отсутствие ограничения. Этот параметр доступен только при включённой поддержке отладки с помощью опции WITH_DEBUG CMake.

  • innodb_lock_wait_timeout

    Формат командной строки --innodb-lock-wait-timeout=#
    Системная переменная innodb_lock_wait_timeout
    Область действия Глобальная, Сессия
    Динамическая Да
    SET_VAR Применимо для подсказки Нет
    Тип Целое число
    Значение по умолчанию 50
    Минимальное значение 1
    Максимальное значение 1073741824
    Единица измерения секунды

    Время в секундах, которое InnoDB ждёт блокировку, прежде чем отказаться. Значение по умолчанию 50 секунд. Транзакция, пытающаяся получить доступ к строке, заблокированной другой транзакцией InnoDB, ждёт не более этого времени, прежде чем получить ошибку:

    ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
    

    При достижении таймаута ожидания блокировки выполняется текущая команда (а не вся транзакция). Чтобы вся транзакция была отменена, запустите сервер с параметром --innodb-rollback-on-timeout. Также см. Раздел 17.20.5, «Обработка ошибок InnoDB».

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

    innodb_lock_wait_timeout относится к блокировкам строк InnoDB. MySQL не работает внутри InnoDB, и этот таймаут не применяется к ожиданию блокировок таблиц.

    Значение таймаута ожидания блокировки не применяется, когда innodb_deadlock_detect включен (по умолчанию), так как InnoDB сразу обнаруживает тупиковые ситуации и отменяет одну из заблокированных транзакций. Когда innodb_deadlock_detect выключен, InnoDB полагается на innodb_lock_wait_timeout для отмены транзакции при возникновении тупиковой ситуации. Смотрите Раздел 17.7.5.2, «Обнаружение тупиковых ситуаций».

    innodb_lock_wait_timeout может быть установлено во время работы с помощью команды SET GLOBAL или SET SESSION. Изменение глобального значения требует соответствующих привилегий (см. Раздел 7.1.9.1, «Права на системные переменные») и влияет на работу всех последующих подключений. Любой клиент может изменить значение параметра SESSION для innodb_lock_wait_timeout, что повлияет только на этого клиента.

  • innodb_log_buffer_size

  • innodb_log_checkpoint_fuzzy_now

  • innodb_log_checkpoint_now

  • innodb_log_checksums

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

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

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

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

  • innodb_log_compressed_pages

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

    Указывает, записываются ли изображения в журнал. При внесении изменений в сжатые данные может произойти повторное сжатие.

    innodb_log_compressed_pages включен по умолчанию для предотвращения повреждения, которое может произойти, если в процессе восстановления используется другая версия алгоритма сжатия zlib. Если вы уверены, что версия zlib не будет изменена, вы можете отключить innodb_log_compressed_pages для уменьшения генерации журнала восстановления для рабочих нагрузок, изменяющих сжатые данные.

    Чтобы оценить влияние включения или отключения innodb_log_compressed_pages, сравните генерацию журнала восстановления для обоих значений в рамках одной рабочей нагрузки. Для измерения генерации журнала восстановления можно использовать наблюдение за Log sequence number (LSN) в разделе LOG выходных данных SHOW ENGINE INNODB STATUS или мониторинг состояния Innodb_os_log_written для количества байтов, записанных в файлы журнала восстановления.

    Для получения дополнительной информации см. Раздел 17.9.1.6, «Сжатие для рабочих нагрузок OLTP».

  • innodb_log_file_size

    Формат командной строки --innodb-log-file-size=#
    Устаревший Да
    Системная переменная innodb_log_file_size
    Область действия Глобальная
    Динамическая Нет
    SET_VAR Подсказка применяется Нет
    Тип Целое
    Значение по умолчанию 50331648
    Минимальное значение 4194304
    Максимальное значение 512GB / innodb_log_files_in_group
    Единица измерения байты
    Примечание

    innodb_log_file_size и innodb_log_files_in_group устарели и заменены на innodb_redo_log_capacity; см. Раздел 17.6.5, «Журнал восстановления».

    Размер в байтах каждого файла журнала в группе. Общий размер файлов журнала (innodb_log_file_size * innodb_log_files_in_group) не может превышать максимального значения, немного меньшего 512 ГБ. Например, пара файлов журналов размером 255 ГБ приближается к пределу, но его не превышает. Значение по умолчанию составляет 48 МБ.

    Как правило, общий размер файлов журнала должен быть достаточно большим, чтобы сервер мог сглаживать пики и спады активности рабочей нагрузки, что часто означает наличие достаточного пространства для журнала восстановления, чтобы обработать более часа активности записи. Чем больше значение, тем меньше требуется активность сброса контрольных точек в буферном пуле, что экономит дисковые вводы-выводы. Более крупные файлы журнала также замедляют работу .

    Минимальное значение innodb_log_file_size составляет 4 МБ.

    Для получения дополнительной информации см. Настройка журнала восстановления. Для рекомендаций по настройке ввода-вывода см. Раздел 10.5.8, «Оптимизация дисковых вводов-выводов InnoDB».

    Если сервер запускается с --innodb-dedicated-server, значение innodb_log_file_size устанавливается автоматически, если оно не определено явно. Дополнительную информацию см. в Разделе 17.8.12, «Включение автоматической настройки InnoDB для выделенного сервера MySQL».

  • innodb_log_files_in_group

    Формат командной строки --innodb-log-files-in-group=#
    Устаревший Да
    Системная переменная innodb_log_files_in_group
    Область действия Глобальная
    Динамическая Нет
    SET_VAR Подсказка применяется Нет
    Тип Целое
    Значение по умолчанию 2
    Минимальное значение 2
    Максимальное значение 100
    Примечание

    innodb_log_file_size и innodb_log_files_in_group устарели и заменены на innodb_redo_log_capacity; см. Раздел 17.6.5, «Журнал восстановления».

    Количество файлов журнала в группе. Записи в файлы осуществляются циклически. Значение по умолчанию (и рекомендуемое) — 2. Путь к файлам задаётся параметром innodb_log_group_home_dir. Общий размер файлов журнала (innodb_log_file_size * innodb_log_files_in_group) может составлять до 512 ГБ.

    Для получения дополнительной информации см. Настройка журнала восстановления.

    Если сервер запускается с --innodb-dedicated-server, значение innodb_log_files_in_group устанавливается автоматически, если оно не определено явно. Дополнительную информацию см. в Разделе 17.8.12, «Включение автоматической настройки InnoDB для выделенного сервера MySQL».

  • innodb_log_group_home_dir

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

    Путь к каталогу, содержащему файлы InnoDB журнала восстановления.

    Для получения дополнительной информации см. Настройка журнала восстановления.

  • innodb_log_spin_cpu_abs_lwm

    Формат командной строки --innodb-log-spin-cpu-abs-lwm=#
    Системная переменная innodb_log_spin_cpu_abs_lwm
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применяется подсказка Нет
    Тип Целое число
    Значение по умолчанию 80
    Минимальное значение 0
    Максимальное значение 4294967295

    Определяет минимальное количество использования ЦП, ниже которого потоки пользователей перестают вращаться при ожидании списания резервного журнала. Значение выражено как сумма использования ядер ЦП. Например, значение по умолчанию 80 составляет 80% одного ядра ЦП. На системе с многоядерным процессором значение 150 представляет 100% использования одного ядра ЦП плюс 50% использования второго ядра ЦП.

    Для получения дополнительной информации см. Раздел 10.5.4, «Оптимизация журналирования InnoDB».

  • innodb_log_spin_cpu_pct_hwm

    Формат командной строки --innodb-log-spin-cpu-pct-hwm=#
    Системная переменная innodb_log_spin_cpu_pct_hwm
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применяется подсказка Нет
    Тип Целое число
    Значение по умолчанию 50
    Минимальное значение 0
    Максимальное значение 100

    Определяет максимальное количество использования ЦП, выше которого потоки пользователей перестают вращаться при ожидании списания резервного журнала. Значение выражено в процентах от общей вычислительной мощности всех ядер ЦП. Значение по умолчанию составляет 50%. Например, 100% использования двух ядер ЦП составляет 50% от общей вычислительной мощности ЦП на сервере с четырьмя ядрами ЦП.

    Переменная innodb_log_spin_cpu_pct_hwm учитывает родство процессоров. Например, если сервер имеет 48 ядер, но процесс mysqld закреплен только за четырьмя ядрами ЦП, остальные 44 ядра игнорируются.

    Для получения дополнительной информации см. Раздел 10.5.4, «Оптимизация журналирования InnoDB».

  • innodb_log_wait_for_flush_spin_hwm

    Формат командной строки --innodb-log-wait-for-flush-spin-hwm=#
    Системная переменная innodb_log_wait_for_flush_spin_hwm
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применяется подсказка Нет
    Тип Целое число
    Значение по умолчанию 400
    Минимальное значение 0
    Максимальное значение 2**32-1
    Единица измерения микросекунды

    Определяет максимальное среднее время списания журнала, после которого потоки пользователей перестают вращаться, ожидая списания резервного журнала. Значение по умолчанию составляет 400 микросекунд.

    Для получения дополнительной информации см. Раздел 10.5.4, «Оптимизация журналирования InnoDB».

  • innodb_log_write_ahead_size

    Формат командной строки --innodb-log-write-ahead-size=#
    Системная переменная innodb_log_write_ahead_size
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применяется подсказка Нет
    Тип Целое число
    Значение по умолчанию 8192
    Минимальное значение 512 (log file block size)
    Максимальное значение Equal to innodb_page_size
    Единица измерения байты

    Определяет размер блока предварительной записи для журнала резервного копирования в байтах. Чтобы избежать «чтения при записи», установите innodb_log_write_ahead_size в соответствии с размером блока кэша операционной системы или файловой системы. Значение по умолчанию составляет 8192 байта. Чтение при записи происходит, когда блоки резервного журнала не полностью кэшируются в операционной системе или файловой системе из-за несоответствия между размером блока предварительной записи резервного журнала и размером блока кэша операционной системы или файловой системы.

    Допустимые значения для innodb_log_write_ahead_size являются кратными размеру блока файла журнала (2n). Минимальное значение равно размеру блока файла журнала (512). Предварительная запись не происходит, когда указано минимальное значение. Максимальное значение равно значению innodb_page_size. Если вы укажете значение для innodb_log_write_ahead_size, которое больше значения innodb_page_size, настройка innodb_log_write_ahead_size усекается до значения innodb_page_size.

    Установка значения innodb_log_write_ahead_size слишком низким по отношению к блоку кэша операционной системы или файловой системы приводит к «чтению при записи». Установка значения слишком высокой может незначительно повлиять на производительность записи файла журнала из-за одновременной записи нескольких блоков.

    Для получения дополнительной информации см. Раздел 10.5.4, «Оптимизация журналирования InnoDB».

  • innodb_log_writer_threads

    Формат командной строки --innodb-log-writer-threads[={OFF|ON}]
    Системная переменная innodb_log_writer_threads
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применяется подсказка Нет
    Тип Булево
    Значение по умолчанию OFF, if available logical processors < 32
    Значение по умолчанию ON, if available logical processors >= 32

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

    Значение по умолчанию было ON до MySQL 9.1.0.

    Для получения дополнительной информации см. Раздел 10.5.4, «Оптимизация журналирования InnoDB».

  • innodb_lru_scan_depth

    Формат командной строки --innodb-lru-scan-depth=#
    Системная переменная innodb_lru_scan_depth
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 1024
    Минимальное значение 100
    Максимальное значение 2**32-1

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

    Настройка значения меньше, чем значение по умолчанию, обычно подходит для большинства рабочих нагрузок. Значение, значительно превышающее необходимое, может повлиять на производительность. Рассмотрите возможность увеличения значения только в том случае, если у вас есть избыточная емкость ввода-вывода при типичной рабочей нагрузке. И наоборот, если рабочая нагрузка с интенсивной записью насыщает вашу емкость ввода-вывода, уменьшите значение, особенно в случае большого буферного пула.

    При настройке innodb_lru_scan_depth, начните с малого значения и увеличивайте настройку с целью редко видеть ноль свободных страниц. Также рассмотрите возможность корректировки innodb_lru_scan_depth при изменении количества экземпляров буферного пула, так как innodb_lru_scan_depth * innodb_buffer_pool_instances определяет объем работы, выполняемой потоком очистки страниц каждую секунду.

    Для получения дополнительной информации см. Раздел 17.8.3.5, «Настройка очистки буферного пула». Для получения общих рекомендаций по настройке ввода-вывода см. Раздел 10.5.8, «Оптимизация ввода-вывода InnoDB».

  • innodb_max_dirty_pages_pct

    Формат командной строки --innodb-max-dirty-pages-pct=#
    Системная переменная innodb_max_dirty_pages_pct
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Числовое
    Значение по умолчанию 90
    Минимальное значение 0
    Максимальное значение 99.999

    InnoDB пытается данные из так, чтобы процент не превышал этого значения.

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

    Для получения дополнительной информации см. Раздел 17.8.3.5, «Настройка очистки буферного пула». Для получения общих рекомендаций по настройке ввода-вывода см. Раздел 10.5.8, «Оптимизация ввода-вывода InnoDB».

  • innodb_max_dirty_pages_pct_lwm

    Формат командной строки --innodb-max-dirty-pages-pct-lwm=#
    Системная переменная innodb_max_dirty_pages_pct_lwm
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Числовое
    Значение по умолчанию 10
    Минимальное значение 0
    Максимальное значение 99.999

    Определяет нижнюю границу, представляющую процент , при котором включается предварительная очистка для управления соотношением грязных страниц. Значение 0 полностью отключает поведение предварительной очистки. Настроенное значение всегда должно быть меньше значения innodb_max_dirty_pages_pct. Для получения дополнительной информации см. Раздел 17.8.3.5, «Настройка очистки буферного пула».

  • innodb_max_purge_lag

    Формат командной строки --innodb-max-purge-lag=#
    Системная переменная innodb_max_purge_lag
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 0
    Минимальное значение 0
    Максимальное значение 4294967295

    Определяет желаемую максимальную задержку очистки. Если это значение превышено, к операциям INSERT, UPDATE и DELETE применяется задержка, чтобы дать время для завершения очистки. Значение по умолчанию равно 0, что означает отсутствие максимальной задержки очистки и задержки.

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

  • innodb_max_purge_lag_delay

    Формат командной строки --innodb-max-purge-lag-delay=#
    Системная переменная innodb_max_purge_lag_delay
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 0
    Минимальное значение 0
    Максимальное значение 10000000
    Единица измерения микросекунды

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

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

  • innodb_max_undo_log_size

    Формат командной строки --innodb-max-undo-log-size=#
    Системная переменная innodb_max_undo_log_size
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 1073741824
    Минимальное значение 10485760
    Максимальное значение 2**64-1
    Единица измерения байты

    Определяет пороговый размер для табличных пространств отката. Если табличное пространство отката превышает пороговое значение, оно может быть помечено для усечения, когда включен innodb_undo_log_truncate. Значение по умолчанию — 1073741824 байта (1024 МБ).

    Для получения дополнительной информации см. Усечение табличных пространств отката.

  • innodb_merge_threshold_set_all_debug

    Формат командной строки --innodb-merge-threshold-set-all-debug=#
    Системная переменная innodb_merge_threshold_set_all_debug
    Область действия Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 50
    Минимальное значение 1
    Максимальное значение 50

    Определяет процентное значение, заполняющее страницу для страниц индекса, которое переопределяет текущий параметр MERGE_THRESHOLD для всех индексов, которые в данный момент находятся в кэше словаря. Эта опция доступна только в том случае, если поддержка отладки скомпилирована с использованием опции WITH_DEBUG CMake. Для получения дополнительной информации см. Раздел 17.8.11, «Настройка порогового значения слияния для страниц индекса».

  • innodb_monitor_disable

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

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

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

  • innodb_monitor_enable

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

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

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

  • innodb_monitor_reset

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

    counter

    module

    pattern

    all

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

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

  • innodb_monitor_reset_all

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

    counter

    module

    pattern

    all

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

  • innodb_numa_interleave

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

    Включает политику памяти NUMA interleave для распределения буферного пула InnoDB . Когда включен innodb_numa_interleave, политика памяти NUMA устанавливается в MPOL_INTERLEAVE для процесса mysqld. После распределения буферного пула InnoDB политика памяти NUMA возвращается к MPOL_DEFAULT. Для того чтобы опция innodb_numa_interleave была доступна, MySQL должен быть скомпилирован в системе Linux с поддержкой NUMA. Значение по умолчанию равно ON, если система поддерживает его, в противном случае значение по умолчанию равно OFF.

    CMake устанавливает значение по умолчанию WITH_NUMA в зависимости от того, поддерживает ли текущая платформа NUMA. Для получения дополнительной информации см. Раздел 2.8.7, «Опции конфигурации исходного кода MySQL».

  • innodb_old_blocks_pct

    Формат командной строки --innodb-old-blocks-pct=#
    Системная переменная innodb_old_blocks_pct
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 37
    Минимальное значение 5
    Максимальное значение 95

    Задает приблизительный процент InnoDB , используемый для старых блоков. Диапазон значений составляет от 5 до 95. Значение по умолчанию — 37 (то есть 3/8 пула). Часто используется в сочетании с innodb_old_blocks_time.

    Для получения дополнительной информации см. Раздел 17.8.3.3, «Повышение устойчивости к сканированию буферного пула». Для получения информации об управлении буферным пулом, алгоритме и политиках см. Раздел 17.5.1, «Буферный пул».

  • innodb_old_blocks_time

    Формат командной строки --innodb-old-blocks-time=#
    Системная переменная innodb_old_blocks_time
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 1000
    Минимальное значение 0
    Максимальное значение 2**32-1
    Единица измерения миллисекунды

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

    Указывает, как долго в миллисекундах блок, вставленный в старый должен оставаться там после своего первого доступа, прежде чем его можно будет переместить в новый подсписок. Если значение равно 0, блок, вставленный в старый подсписок, немедленно перемещается в новый подсписок при первом доступе к нему, независимо от того, как скоро после вставки произойдет доступ. Если значение больше 0, блоки остаются в старом подсписке до тех пор, пока доступ не произойдет, по крайней мере, через столько миллисекунд после первого доступа. Например, значение 1000 приводит к тому, что блоки остаются в старом подсписке в течение 1 секунды после первого доступа, прежде чем они смогут переместиться в новый подсписок.

    Значение по умолчанию — 1000.

    Эта переменная часто используется в сочетании с innodb_old_blocks_pct. Для получения дополнительной информации см. Раздел 17.8.3.3, «Повышение устойчивости к сканированию буферного пула». Для получения информации об управлении буферным пулом, алгоритме и политиках см. Раздел 17.5.1, «Буферный пул».

  • innodb_online_alter_log_max_size

    Формат командной строки --innodb-online-alter-log-max-size=#
    Системная переменная innodb_online_alter_log_max_size
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 134217728
    Минимальное значение 65536
    Максимальное значение 2**64-1
    Единица измерения байты

    Указывает верхний предел в байтах размера временных файлов журнала, используемых во время операций для таблиц InnoDB . Для каждого создаваемого индекса или изменяемой таблицы существует один такой файл журнала. Этот файл журнала хранит данные, вставленные, обновленные или удаленные в таблице во время операции DDL. Временный файл журнала расширяется по мере необходимости на значение innodb_sort_buffer_size до максимального значения, указанного innodb_online_alter_log_max_size. Если временный файл журнала превышает верхний предел размера, операция ALTER TABLE завершается ошибкой, и все незафиксированные параллельные операции DML отменяются. Таким образом, большое значение для этого параметра позволяет выполнять больше операций DML во время операции онлайн-DDL, но также увеличивает период времени в конце операции DDL, когда таблица заблокирована для применения данных из журнала.

  • innodb_open_files

    Формат командной строки --innodb-open-files=#
    Системная переменная innodb_open_files
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию -1 (обозначает автоматическое изменение размера; не присваивайте это литеральное значение)
    Минимальное значение 10
    Максимальное значение 2147483647

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

    Предел innodb_open_files можно установить во время выполнения с помощью оператора SELECT innodb_set_open_files_limit(N) , где N — это желаемый предел innodb_open_files; например:

    mysql> SELECT innodb_set_open_files_limit(1000);
    

    Оператор выполняет хранимую процедуру, которая устанавливает новый предел. Если процедура выполнена успешно, она возвращает значение вновь установленного предела; в противном случае возвращается сообщение об ошибке.

    Не разрешается устанавливать innodb_open_files с помощью оператора SET. Чтобы установить innodb_open_files во время выполнения, используйте описанный выше оператор SELECT innodb_set_open_files_limit(N) .

    Установка innodb_open_files=default не поддерживается. Допускаются только целые значения.

    Чтобы предотвратить потребление всего предела innodb_open_files файлами, не управляемыми LRU, файлы, не управляемые LRU, ограничены 90 процентами этого предела, что резервирует 10 процентов для файлов, управляемых LRU.

  • innodb_optimize_fulltext_only

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

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

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

  • Чистильщики страниц InnoDB

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

    Количество потоков чистильщиков страниц, которые очищают грязные страницы из буферного пула. Потоки чистильщиков страниц выполняют очистку списков и очистку по принципу LRU. При наличии нескольких потоков чистильщиков страниц задачи очистки буферного пула для каждого буферного пула распределяются между потоками чистильщиков страниц. Значение по умолчанию для чистильщиков страниц InnoDB устанавливается таким же, как для число буферных пулов. Если заданное количество потоков чистильщиков превышает количество буферных пулов, тогда чистильщики страниц InnoDB автоматически устанавливается равным количеству буферных пулов.

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

    Поддержка многопоточных чистильщиков страниц распространяется на фазы завершения и восстановления.

    Системный вызов setpriority() используется на платформах Linux, где он поддерживается и где пользователь, выполняющий mysqld, имеет право назначить приоритет потокам page_cleaner над другими потоками MySQL и InnoDB, чтобы помочь очистке страниц соответствовать текущей рабочей нагрузке. Поддержка setpriority() показана в этом сообщении при запуске InnoDB:

    [Note] InnoDB: If the mysqld execution user is authorized, page cleaner
    thread priority can be changed. See the man page of setpriority().
    

    Для систем, где запуск и остановка сервера не управляются systemd, авторизация пользователя, выполняющего mysqld, может быть настроена в /etc/security/limits.conf. Например, если mysqld выполняется под пользователем mysql, вы можете авторизовать пользователя mysql, добавив эти строки в /etc/security/limits.conf:

    mysql              hard    nice       -20
    mysql              soft    nice       -20
    

    Для управляемых systemd систем то же самое можно сделать, указав LimitNICE=-20 в локальном файле конфигурации systemd. Например, создайте файл с именем override.conf в /etc/systemd/system/mysqld.service.d/override.conf и добавьте эту запись:

    [Service]
    LimitNICE=-20
    

    После создания или изменения override.conf перезагрузите конфигурацию systemd, а затем попросите systemd перезапустить службу MySQL:

    systemctl daemon-reload
    systemctl restart mysqld  # RPM platforms
    systemctl restart mysql   # Debian platforms
    

    Для получения дополнительной информации об использовании локального файла конфигурации systemd см. Настройка systemd для MySQL.

    После авторизации пользователя, выполняющего mysqld, используйте команду cat для проверки настроенных Nice ограничений для процесса mysqld:

    $> cat /proc/mysqld_pid/limits | grep nice
    Max nice priority         18446744073709551596 18446744073709551596
    
  • Размер страницы InnoDB

    Формат командной строки --innodb-page-size=#
    Системная переменная innodb_page_size
    Область действия Глобальная
    Динамическая Нет
    SET_VAR Применяется подсказка Нет
    Тип Перечисление
    Значение по умолчанию 16384
    Допустимые значения

    4096

    8192

    16384

    32768

    65536

    Указывает размер для InnoDB. Значения могут быть указаны в байтах или килобайтах. Например, значение размера страницы в 16 килобайт может быть указано как 16384, 16 КБ или 16к.

    Размер страницы InnoDB может быть сконфигурирован только до запуска экземпляра MySQL и не может быть изменен после этого. Если значение не указано, экземпляр запускается с использованием значения по умолчанию для размера страницы. См. Раздел 17.8.1, «Конфигурация запуска InnoDB».

    Для размеров страницы 32 КБ и 64 КБ максимальная длина строки составляет примерно 16000 байт. ROW_FORMAT=COMPRESSED не поддерживается, когда размер страницы InnoDB устанавливается в 32 КБ или 64 КБ. Для размера страницы InnoDB размер экстентов составляет 2 МБ. Для размера страницы InnoDB размер экстентов составляет 4 МБ. Размер буфера журнала InnoDB должен быть установлен как минимум на 16 МБ (по умолчанию 64 МБ) при использовании размеров страницы 32 КБ или 64 КБ.

    Размер страницы по умолчанию 16 КБ или больше подходит для широкого спектра рабочих нагрузок, особенно для запросов, включающих сканирование таблиц и операций DML, включающих массовые обновления. Более мелкие размеры страниц могут быть более эффективными для рабочих нагрузок, включающих множество небольших записей, где проблема может возникать при наличии многих строк на одной странице. Более мелкие размеры страниц также могут быть эффективными с устройствами хранения данных, которые обычно используют небольшие размеры блоков. Удержание размера страницы InnoDB близко к размеру блока устройства хранения минимизирует количество неизменённых данных, которые записываются на диск.

    Минимальный размер файла для первого файла данных системного табличного пространства (ibdata1) зависит от значения размера страницы InnoDB. Смотрите описание опции пути к файлам данных InnoDB для получения дополнительной информации.

    Экземпляр MySQL, использующий определенный InnoDB размер страницы, не может использовать файлы данных или журнальные файлы из экземпляра, использующего другой размер страницы.

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

  • Параллельные потоки чтения InnoDB

    Формат командной строки --innodb-parallel-read-threads=#
    Системная переменная innodb_parallel_read_threads
    Область действия Сеанс
    Динамическая Да
    SET_VAR Применяется подсказка Нет
    Тип Целое число
    Значение по умолчанию (available logical processors / 8), min of 4
    Минимальное значение 1
    Максимальное значение 256

    Определяет количество потоков, которые могут использоваться для параллельного чтения кластеризованного индекса. Поддерживается также параллельное сканирование разделов. Параллельные потоки чтения могут улучшить производительность CHECK TABLE. InnoDB читает кластеризованный индекс дважды во время операции CHECK TABLE. Второе чтение может выполняться параллельно. Эта функция не применяется к сканированию индексов второго уровня. Переменная сеанса параллельные потоки чтения InnoDB должна быть установлена в значение больше 1 для того, чтобы производилось параллельное чтение кластеризованного индекса. Фактическое количество потоков, используемых для параллельного чтения кластеризованного индекса, определяется значением параллельных потоков чтения InnoDB или количеством поддеревьев индекса для сканирования, в зависимости от того, что меньше. Страницы, считанные в буферный пул во время сканирования, сохраняются в конце списка буферного пула LRU, чтобы их можно было быстро удалить при необходимости свободных страниц буферного пула.

    Максимальное количество параллельных потоков чтения (256) — это общее количество потоков для всех соединений клиентов. Если предел потоков достигнут, соединения возвращаются к использованию одного потока. Значение по умолчанию рассчитывается путём деления количества доступных логических процессоров системы на 8, с минимальным значением по умолчанию 4.

    До MySQL 8.4 значение по умолчанию всегда было 4.

  • innodb_print_all_deadlocks

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

    Когда эта опция включена, информация о всех взаимных блокировках в транзакциях пользователя InnoDB записывается в лог ошибок mysqld лог ошибок. В противном случае вы увидите информацию только о последней взаимной блокировке, используя оператор SHOW ENGINE INNODB STATUS. Случайная взаимная блокировка InnoDB не обязательно является проблемой, поскольку InnoDB немедленно обнаруживает условие и автоматически откатывает одну из транзакций. Вы можете использовать эту опцию для устранения неполадок, связанных с возникновением взаимных блокировок, если приложение не имеет соответствующей логики обработки ошибок для обнаружения отката и повтора операции. Большое количество взаимных блокировок может указывать на необходимость реструктуризации транзакций, которые выдают операторы SELECT ... FOR UPDATE для нескольких таблиц, так чтобы каждая транзакция обращалась к таблицам в одном и том же порядке, тем самым избегая условия взаимной блокировки.

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

  • innodb_print_ddl_logs

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

    Включение этой опции приводит к тому, что MySQL записывает журналы DDL в stderr. Для получения дополнительной информации см. Просмотр журналов DDL.

  • innodb_purge_batch_size

    Формат командной строки --innodb-purge-batch-size=#
    Системная переменная innodb_purge_batch_size
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 300
    Минимальное значение 1
    Максимальное значение 5000

    Определяет количество страниц журнала отката, которые очистка анализирует и обрабатывает за один раз из . В конфигурации многопоточной очистки поток координатора очистки делит innodb_purge_batch_size на innodb_purge_threads и назначает это количество страниц каждому потоку очистки. Переменная innodb_purge_batch_size также определяет количество страниц журнала отката, которые очистка освобождает после каждых 128 итераций по журналам отката.

    Опция innodb_purge_batch_size предназначена для тонкой настройки производительности в сочетании с параметром innodb_purge_threads. Большинству пользователей не нужно изменять innodb_purge_batch_size от его значения по умолчанию.

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

  • innodb_purge_threads

    Формат командной строки --innodb-purge-threads=#
    Системная переменная innodb_purge_threads
    Область видимости Глобальная
    Динамическая Нет
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 1 if # of available logical processors is <= 16; otherwise 4
    Минимальное значение 1
    Максимальное значение 32

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

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

  • innodb_purge_rseg_truncate_frequency

    Формат командной строки --innodb-purge-rseg-truncate-frequency=#
    Системная переменная innodb_purge_rseg_truncate_frequency
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 128
    Минимальное значение 1
    Максимальное значение 128

    Определяет частоту, с которой система очистки освобождает сегменты отката, в терминах количества вызовов очистки. Табличное пространство отката не может быть усечено, пока его сегменты отката не будут освобождены. Обычно система очистки освобождает сегменты отката один раз каждые 128 раз, когда вызывается очистка. Значение по умолчанию равно 128. Уменьшение этого значения увеличивает частоту, с которой поток очистки освобождает сегменты отката.

    innodb_purge_rseg_truncate_frequency предназначен для использования с innodb_undo_log_truncate. Для получения дополнительной информации см. Усечение табличных пространств отката.

  • innodb_random_read_ahead

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

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

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

  • innodb_read_ahead_threshold

    Формат командной строки --innodb-read-ahead-threshold=#
    Системная переменная innodb_read_ahead_threshold
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применимо ли подсказка Нет
    Тип Целое число
    Значение по умолчанию 56
    Минимальное значение 0
    Максимальное значение 64

    Определяет чувствительность линейного поиска, который InnoDB использует для предварительной выборки страниц в буферный пул. Если InnoDB последовательно читает как минимум innodb_read_ahead_threshold страниц из фрагмента (64 страницы), он инициирует асинхронное чтение всего последующего фрагмента. Допустимый диапазон значений составляет от 0 до 64. Значение 0 отключает предварительную выборку. При значении по умолчанию 56, InnoDB должен прочитать как минимум 56 страниц последовательно из фрагмента, чтобы инициировать асинхронное чтение последующего фрагмента.

    Знание того, сколько страниц было прочитано с помощью механизма предварительной выборки и сколько из этих страниц было удалено из буферного пула, не использовавшись, может быть полезно при тонкой настройке параметра innodb_read_ahead_threshold. Вывод SHOW ENGINE INNODB STATUS отображает информацию о счетчиках из глобальных переменных состояния Innodb_buffer_pool_read_ahead и Innodb_buffer_pool_read_ahead_evicted, которые сообщают о количестве страниц, добавленных в буферный пул запросами предварительной выборки, и о количестве таких страниц, удаленных из буферного пула, не использовавшись, соответственно. Переменные состояния сообщают глобальные значения с момента последней перезагрузки сервера.

    SHOW ENGINE INNODB STATUS также отображает скорость чтения страниц предварительной выборки и скорость удаления таких страниц без доступа. Средние значения за секунду основаны на статистике, собранной с момента последнего вызова SHOW ENGINE INNODB STATUS, и отображаются в разделе BUFFER POOL AND MEMORY вывода SHOW ENGINE INNODB STATUS.

    Более подробную информацию см. в разделе 17.8.3.4 «Настройка предварительной выборки буфера InnoDB (Read-Ahead)». Общие рекомендации по настройке ввода-вывода см. в разделе 10.5.8 «Оптимизация ввода-вывода InnoDB».

  • innodb_read_io_threads

    Формат командной строки --innodb-read-io-threads=#
    Системная переменная innodb_read_io_threads
    Область действия Глобальная
    Динамическая Нет
    SET_VAR Применимо ли подсказка Нет
    Тип Целое число
    Значение по умолчанию (available logical processors / 2), min of 4
    Минимальное значение 1
    Максимальное значение 64

    Количество потоков ввода-вывода для операций чтения в InnoDB. Его аналогом для потоков записи является innodb_write_io_threads. Более подробную информацию см. в разделе 17.8.5 «Настройка количества фоновых потоков ввода-вывода InnoDB». Общие рекомендации по настройке ввода-вывода см. в разделе 10.5.8 «Оптимизация ввода-вывода InnoDB». Значение по умолчанию равно количеству доступных логических процессоров на системе, делённому на 2, с минимальным значением по умолчанию 4.

    До MySQL 8.4 значение по умолчанию всегда было 4.

    Примечание

    В системах Linux запуск нескольких серверов MySQL (обычно более 12) с настройками по умолчанию для innodb_read_io_threads, innodb_write_io_threads и настройкой Linux aio-max-nr может превысить системные ограничения. В идеале, увеличьте настройку aio-max-nr; в качестве обходного решения вы можете уменьшить значения для одной или обеих переменных MySQL.

  • innodb_read_only

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

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

    Включение innodb_read_only предотвращает создание и удаление таблиц для всех движков хранения, а не только InnoDB. Операции создания и удаления таблиц для любого движка хранения изменяют таблицы словаря данных в базе данных системы mysql, но эти таблицы используют движок хранения InnoDB и не могут быть изменены при включённом innodb_read_only. Такой же принцип применяется к другим операциям с таблицами, требующим изменения таблиц словаря данных. Примеры:

    • Если системная переменная innodb_read_only включена, ANALYZE TABLE может завершиться неудачно, поскольку она не может обновить статистические таблицы в словаре данных, которые используют InnoDB. Для операций ANALYZE TABLE, обновляющих распределение ключей, неудача может произойти даже если операция обновляет саму таблицу (например, если это таблица MyISAM). Чтобы получить обновлённые статистические данные распределения, установите information_schema_stats_expiry=0.

    • ALTER TABLE tbl_name ENGINE=engine_name завершается неудачно, потому что обновляет обозначение движка хранения, которое хранится в словаре данных.

    Кроме того, другие таблицы в базе данных системы mysql используют движок хранения InnoDB. Делание этих таблиц только для чтения приводит к ограничениям на операции, которые их изменяют. Примеры:

    • Операции управления учётными записями, такие как CREATE USER и GRANT, завершаются неудачно, потому что таблицы разрешений используют InnoDB.

    • Операции управления плагинами INSTALL PLUGIN и UNINSTALL PLUGIN завершаются неудачно, потому что таблица системы mysql.plugin использует InnoDB.

    • Операции управления загружаемыми функциями CREATE FUNCTION и DROP FUNCTION завершаются неудачно, потому что таблица системы mysql.func использует InnoDB.

  • innodb_redo_log_archive_dirs

    Формат командной строки --innodb-redo-log-archive-dirs
    Системная переменная innodb_redo_log_archive_dirs
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Строка
    Значение по умолчанию NULL

    Определяет помеченные каталоги, в которых могут быть созданы архивные файлы журнала redo. Можно определить несколько помеченных каталогов в списке, разделенном точкой с запятой. Например:

    innodb_redo_log_archive_dirs='label1:/backups1;label2:/backups2'
    

    Метка может быть любой строкой символов, за исключением двоеточий (:), которые не допускаются. Пустая метка также допускается, но двоеточие (:) в этом случае все еще требуется.

    Необходимо указать путь, и каталог должен существовать. Путь может содержать двоеточия (':'), но точки с запятой (;) не допускаются.

  • innodb_redo_log_capacity

    Формат командной строки --innodb-redo-log-capacity=#
    Системная переменная innodb_redo_log_capacity
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 104857600
    Минимальное значение 8388608
    Максимальное значение 549755813888
    Единица измерения байты

    Определяет объем дискового пространства, занимаемого файлами журнала redo.

    innodb_redo_log_capacity заменяет переменные innodb_log_files_in_group и innodb_log_file_size, которые игнорируются, если определен innodb_redo_log_capacity.

    Если innodb_redo_log_capacity не определено, и если ни innodb_log_file_size, ни innodb_log_files_in_group не определены, то используется значение по умолчанию innodb_redo_log_capacity.

    Если innodb_redo_log_capacity не определено, и если innodb_log_file_size и/или innodb_log_files_in_group определено, то емкость журнала redo InnoDB вычисляется как (innodb_log_files_in_group * innodb_log_file_size). Этот расчет не изменяет значение ненастроенного параметра innodb_redo_log_capacity.

    Переменная состояния сервера Innodb_redo_log_capacity_resized указывает общую емкость журнала redo для всех файлов журнала redo.

    Если сервер запущен с --innodb-dedicated-server, значение innodb_redo_log_capacity устанавливается автоматически, если оно не определено явно. Дополнительную информацию см. в Разделе 17.8.12, «Включение автоматической конфигурации InnoDB для выделенного сервера MySQL».

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

  • innodb_redo_log_encrypt

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

    Управляет шифрованием данных журнала redo для таблиц, зашифрованных с помощью функции шифрования данных в состоянии покоя InnoDB data-at-rest encryption feature. Шифрование данных журнала redo по умолчанию отключено. Для получения дополнительной информации см. Шифрование журнала redo.

  • innodb_replication_delay

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

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

  • innodb_rollback_on_timeout

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

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

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

  • innodb_rollback_segments

    Формат командной строки --innodb-rollback-segments=#
    Системная переменная innodb_rollback_segments
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 128
    Минимальное значение 1
    Максимальное значение 128

    innodb_rollback_segments определяет количество выделяемых для каждого пространства таблиц отката и глобального временного пространства таблиц для транзакций, которые генерируют записи отката. Количество транзакций, которые поддерживает каждый сегмент отката, зависит от размера страницы InnoDB и количества журналов отката, назначенных каждой транзакции. Для получения дополнительной информации см. Раздел 17.6.6, «Журналы отката».

    Для получения дополнительной информации см. Раздел 17.3, «Многоверсионность InnoDB». Для получения информации о пространствах таблиц отката см. Раздел 17.6.3.4, «Пространства таблиц отката».

  • innodb_saved_page_number_debug

    Формат командной строки --innodb-saved-page-number-debug=#
    Системная переменная innodb_saved_page_number_debug
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 0
    Минимальное значение 0
    Максимальное значение 2**32-1

    Сохраняет номер страницы. Установка параметра innodb_fil_make_page_dirty_debug делает страницу, определенную innodb_saved_page_number_debug, нечистой. Параметр innodb_saved_page_number_debug доступен только в том случае, если поддержка отладки компилируется с использованием параметра WITH_DEBUG CMake.

  • innodb_segment_reserve_factor

    Формат командной строки --innodb-segment-reserve-factor=#
    Системная переменная innodb_segment_reserve_factor
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Числовая
    Значение по умолчанию 12.5
    Минимальное значение 0.03
    Максимальное значение 40

    Определяет процент страниц сегментов файлов табличного пространства, зарезервированных как пустые страницы. Настройка применима к табличным пространствам file-per-table и общим табличным пространствам. Значение по умолчанию для innodb_segment_reserve_factor составляет 12,5 процента, что соответствует проценту зарезервированных страниц в предыдущих выпусках MySQL.

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

  • innodb_sort_buffer_size

    Формат командной строки --innodb-sort-buffer-size=#
    Системная переменная innodb_sort_buffer_size
    Область видимости Глобальная
    Динамическая Нет
    SET_VAR Подсказка применяется Нет
    Тип Целочисленная
    Значение по умолчанию 1048576
    Минимальное значение 65536
    Максимальное значение 67108864
    Единица измерения байты

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

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

  • innodb_spin_wait_delay

    Формат командной строки --innodb-spin-wait-delay=#
    Системная переменная innodb_spin_wait_delay
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целочисленная
    Значение по умолчанию 6
    Минимальное значение 0
    Максимальное значение 1000

    Максимальная задержка между опросами блокировки. Низкоуровневая реализация этого механизма варьируется в зависимости от комбинации оборудования и операционной системы, поэтому задержка не соответствует фиксированному интервалу времени.

    Может использоваться в сочетании с переменной innodb_spin_wait_pause_multiplier для более точного управления продолжительностью задержек опроса спин-блокировки.

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

  • innodb_spin_wait_pause_multiplier

    Формат командной строки --innodb-spin-wait-pause-multiplier=#
    Системная переменная innodb_spin_wait_pause_multiplier
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целочисленная
    Значение по умолчанию 50
    Минимальное значение 0
    Максимальное значение 100

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

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

  • innodb_stats_auto_recalc

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

    Приводит к тому, что InnoDB автоматически пересчитывается после существенного изменения данных в таблице. Пороговое значение составляет 10% строк в таблице. Эта настройка применяется к таблицам, созданным при включенном параметре innodb_stats_persistent. Автоматический пересчет статистики также можно настроить, указав STATS_AUTO_RECALC=1 в операторе CREATE TABLE или ALTER TABLE. Объем данных, используемых для получения статистики, контролируется переменной innodb_stats_persistent_sample_pages.

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

  • innodb_stats_include_delete_marked

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

    По умолчанию, InnoDB считывает незафиксированные данные при вычислении статистики. В случае незафиксированной транзакции, удаляющей строки из таблицы, InnoDB исключает записи, помеченные для удаления, при вычислении оценок строк и статистики индексов, что может привести к неоптимальным планам выполнения для других транзакций, работающих с таблицей одновременно, используя уровень изоляции транзакций, отличный от READ UNCOMMITTED. Чтобы избежать этого сценария, можно включить innodb_stats_include_delete_marked, чтобы гарантировать, что InnoDB включает записи, помеченные для удаления, при вычислении постоянной статистики оптимизатора.

    Когда включен innodb_stats_include_delete_marked, ANALYZE TABLE учитывает записи, помеченные для удаления, при пересчете статистики.

    innodb_stats_include_delete_marked — это глобальная настройка, которая влияет на все таблицы InnoDB. Она применима только к постоянной статистике оптимизатора.

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

  • innodb_stats_method

    Формат командной строки --innodb-stats-method=value
    Системная переменная innodb_stats_method
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применяется подсказка Нет
    Тип Перечисление
    Значение по умолчанию 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 игнорируются.

    Метод, используемый для генерации статистики таблиц, влияет на то, как оптимизатор выбирает индексы для выполнения запросов, как описано в Разделе 10.3.8, «Сбор статистики индексов InnoDB и MyISAM».

  • innodb_stats_on_metadata

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

    Этот параметр применяется только тогда, когда оптимизатор настроен на неперсистентное использование. Статистика оптимизатора не сохраняется на диск, когда innodb_stats_persistent отключен или когда отдельные таблицы создаются или изменяются с помощью STATS_PERSISTENT=0. Дополнительную информацию см. в Разделе 17.8.10.2, «Настройка параметров неперсистентной статистики оптимизатора».

    При включенном innodb_stats_on_metadata, InnoDB обновляет неперсистентные данные при выполнении метаданных, таких как SHOW TABLE STATUS, или при обращении к таблицам схемы Information Schema TABLES или STATISTICS. (Эти обновления аналогичны тем, что происходят для ANALYZE TABLE.) При отключенном значении InnoDB статистика не обновляется во время этих операций. Отключение параметра может повысить скорость доступа к схемам с большим количеством таблиц или индексов. Это также может повысить стабильность запросов, которые включают InnoDB таблицы.

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

  • innodb_stats_persistent

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

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

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

  • innodb_stats_persistent_sample_pages

    Формат командной строки --innodb-stats-persistent-sample-pages=#
    Системная переменная innodb_stats_persistent_sample_pages
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применяется подсказка Нет
    Тип Целое число
    Значение по умолчанию 20
    Минимальное значение 1
    Максимальное значение 18446744073709551615

    Количество страниц индексов, которые нужно просмотреть при оценке и других для индексированного столбца, например, таких, которые вычисляются командой ANALYZE TABLE. Увеличение значения повышает точность статистики индексов, что может улучшить , за счёт увеличения ввода-вывода во время выполнения ANALYZE TABLE для таблицы InnoDB. Дополнительную информацию см. в Разделе 17.8.10.1, «Настройка параметров персистентной статистики оптимизатора».

    Примечание

    Установка высокого значения для innodb_stats_persistent_sample_pages может привести к длительному выполнению ANALYZE TABLE. Чтобы оценить количество страниц базы данных, обработаемых командой ANALYZE TABLE, см. Раздел 17.8.10.3, «Оценка сложности ANALYZE TABLE для таблиц InnoDB».

    innodb_stats_persistent_sample_pages применяется только при включенном innodb_stats_persistent для таблицы; при отключенном innodb_stats_persistent используется innodb_stats_transient_sample_pages.

  • innodb_stats_transient_sample_pages

    Формат командной строки --innodb-stats-transient-sample-pages=#
    Системная переменная innodb_stats_transient_sample_pages
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 8
    Минимальное значение 1
    Максимальное значение 18446744073709551615

    Количество индексов для выборки при оценке и других для индексированного столбца, таких как те, которые вычисляются с помощью ANALYZE TABLE. Значение по умолчанию равно 8. Увеличение значения повышает точность статистики индексов, что может улучшить , за счет увеличения операций ввода-вывода при открытии таблицы InnoDB или пересчете статистики. Для получения дополнительной информации см. Раздел 17.8.10.2, «Настройка параметров неперсистентной статистики оптимизатора».

    Примечание

    Установка высокого значения для innodb_stats_transient_sample_pages может привести к длительному времени выполнения ANALYZE TABLE. Чтобы оценить количество страниц базы данных, к которым обращается ANALYZE TABLE, см. Раздел 17.8.10.3, «Оценка сложности ANALYZE TABLE для таблиц InnoDB».

    innodb_stats_transient_sample_pages применяется только тогда, когда innodb_stats_persistent отключен для таблицы; когда innodb_stats_persistent включен, вместо этого применяется innodb_stats_persistent_sample_pages. Заменяет innodb_stats_sample_pages, который был удален в MySQL 8.0. Для получения дополнительной информации см. Раздел 17.8.10.2, «Настройка параметров неперсистентной статистики оптимизатора».

  • innodb_status_output

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

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

  • innodb_status_output_locks

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

    Включает или отключает монитор блокировок InnoDB. При включении монитор блокировок InnoDB выводит дополнительную информацию о блокировках в выводе SHOW ENGINE INNODB STATUS и в периодическом выводе, выводимом в журнал ошибок MySQL. Периодический вывод для монитора блокировок InnoDB выводится как часть вывода стандартного монитора InnoDB. Поэтому стандартный монитор InnoDB должен быть включен, чтобы монитор блокировок InnoDB периодически выводил данные в журнал ошибок MySQL. Для получения дополнительной информации см. Раздел 17.17.2, «Включение мониторов InnoDB».

  • innodb_strict_mode

    Формат командной строки --innodb-strict-mode[={OFF|ON}]
    Системная переменная innodb_strict_mode
    Область видимости Глобальная, сеанса
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Логическое
    Значение по умолчанию ON

    Когда innodb_strict_mode включен, InnoDB возвращает ошибки, а не предупреждения, при проверке на наличие недопустимых или несовместимых параметров таблицы.

    Он проверяет, что параметры KEY_BLOCK_SIZE, ROW_FORMAT, DATA DIRECTORY, TEMPORARY и TABLESPACE совместимы друг с другом и другими настройками.

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

    Вы можете включить или выключить innodb_strict_mode в командной строке при запуске mysqld или в файле MySQL. Вы также можете включить или выключить innodb_strict_mode во время выполнения с помощью оператора SET [GLOBAL|SESSION] innodb_strict_mode=mode, где mode — это либо ON, либо OFF. Изменение настройки GLOBAL требует прав, достаточных для установки глобальных системных переменных (см. Раздел 7.1.9.1, «Права на системные переменные»), и влияет на работу всех клиентов, которые подключаются впоследствии. Любой клиент может изменить настройку SESSION для innodb_strict_mode, и эта настройка влияет только на этого клиента.

    Установка значения сеанса этой системной переменной является ограниченной операцией. Пользователь сеанса должен иметь права, достаточные для установки ограниченных переменных сеанса. См. Раздел 7.1.9.1, «Права на системные переменные».

  • innodb_sync_array_size

    Формат командной строки --innodb-sync-array-size=#
    Системная переменная innodb_sync_array_size
    Область видимости Глобальная
    Динамическая Нет
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 1
    Минимальное значение 1
    Максимальное значение 1024

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

  • innodb_sync_spin_loops

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

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

  • innodb_sync_debug

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

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

  • innodb_table_locks

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

    Если autocommit = 0, то InnoDB учитывает LOCK TABLES; MySQL не возвращается из LOCK TABLES ... WRITE, пока все другие потоки не освободят все свои блокировки на таблицу. Значение по умолчанию для innodb_table_locks равно 1, что означает, что LOCK TABLES заставляет InnoDB внутренне блокировать таблицу, если autocommit = 0.

    innodb_table_locks = 0 не оказывает влияния на таблицы, явно заблокированные с помощью LOCK TABLES ... WRITE. Он оказывает влияние на таблицы, заблокированные для чтения или записи с помощью LOCK TABLES ... WRITE неявно (например, через триггеры) или с помощью LOCK TABLES ... READ.

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

  • innodb_temp_data_file_path

    Формат командной строки --innodb-temp-data-file-path=file_name
    Системная переменная innodb_temp_data_file_path
    Область действия Глобальная
    Динамическая Нет
    SET_VAR Применяется ли подсказка Нет
    Тип Строка
    Значение по умолчанию ibtmp1:12M:autoextend

    Определяет относительный путь, имя, размер и атрибуты файлов данных глобального временного пространства таблиц. Глобальное временное пространство таблиц хранит сегменты отката изменений, внесенных в временные таблицы, созданные пользователем.

    Если для innodb_temp_data_file_path не указано значение, по умолчанию создается один автоматически расширяющийся файл данных с именем ibtmp1 в каталоге innodb_data_home_dir. Начальный размер файла немного больше 12 МБ.

    Синтаксис для указания файла данных глобального временного пространства таблиц включает имя файла, размер файла и атрибуты autoextend и max:

    file_name:file_size[:autoextend[:max:max_file_size]]
    

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

    Размеры файлов указываются в КБ, МБ или ГБ, добавляя K, M или G к значению размера. Сумма размеров файлов должна быть немного больше 12 МБ.

    Предел размера отдельных файлов определяется операционной системой. Размер файла может превышать 4 ГБ на операционных системах, поддерживающих большие файлы. Использование сырых разделов диска для файлов данных глобального временного пространства таблиц не поддерживается.

    Атрибуты autoextend и max могут использоваться только для файла данных, указанного последним в настройке innodb_temp_data_file_path. Например:

    [mysqld]
    innodb_temp_data_file_path=ibtmp1:50M;ibtmp2:12M:autoextend:max:500M
    

    Параметр autoextend заставляет файл данных автоматически увеличивать свой размер, когда заканчивается свободное место. Приращение autoextend по умолчанию составляет 64 МБ. Чтобы изменить приращение, измените значение переменной innodb_autoextend_increment.

    Путь к каталогу файлов данных глобального временного пространства таблиц формируется путем конкатенации путей, определенных innodb_data_home_dir и innodb_temp_data_file_path.

    Перед запуском InnoDB в режиме только для чтения установите innodb_temp_data_file_path в местоположение, отличное от каталога данных. Путь должен быть относительным по отношению к каталогу данных. Например:

    --innodb-temp-data-file-path=../../../tmp/ibtmp1:12M:autoextend
    

    Дополнительную информацию см. в разделе Глобальное временное пространство таблиц.

  • innodb_temp_tablespaces_dir

    Формат командной строки --innodb-temp-tablespaces-dir=dir_name
    Системная переменная innodb_temp_tablespaces_dir
    Область действия Глобальная
    Динамическая Нет
    SET_VAR Применяется ли подсказка Нет
    Тип Имя каталога
    Значение по умолчанию #innodb_temp

    Определяет местоположение, где InnoDB создает пул временных пространств таблиц сеанса при запуске. По умолчанию расположение — это каталог #innodb_temp в каталоге данных. Допускается полный путь или путь, относительный к каталогу данных.

    Временные пространства таблиц сеанса всегда хранят временные таблицы, созданные пользователем, и внутренние временные таблицы, созданные оптимизатором с использованием InnoDB. (Ранее движок хранения на диске для внутренних временных таблиц определялся системной переменной, которая больше не поддерживается. См. Движок хранения для временных внутренних таблиц на диске.)

    Дополнительную информацию см. в разделе Временные пространства таблиц сеанса.

  • innodb_thread_concurrency

    Командная строка --innodb-thread-concurrency=#
    Системная переменная innodb_thread_concurrency
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применимо Нет
    Тип Целое число
    Значение по умолчанию 0
    Минимальное значение 0
    Максимальное значение 1000

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

    InnoDB пытается поддерживать количество потоков внутри InnoDB меньше или равно пределу innodb_thread_concurrency. Потоки, ожидающие блокировок, не учитываются в количестве одновременно выполняемых потоков.

    Правильная настройка зависит от рабочей нагрузки и вычислительной среды. Рассмотрите настройку этой переменной, если ваша инстанция MySQL разделяет ресурсы ЦП с другими приложениями или если ваша рабочая нагрузка или количество одновременных пользователей растет. Протестируйте диапазон значений, чтобы определить настройку, обеспечивающую наилучшую производительность. innodb_thread_concurrency является динамической переменной, что позволяет экспериментировать с различными настройками в рабочей тестовой системе. Если определенная настройка работает плохо, вы можете быстро установить innodb_thread_concurrency обратно в 0.

    Используйте следующие рекомендации, чтобы найти и поддерживать подходящую настройку:

    • Если количество одновременных потоков пользователей для рабочей нагрузки постоянно мало и не влияет на производительность, установите innodb_thread_concurrency=0 (без ограничения).

    • Если ваша рабочая нагрузка постоянно большая или периодически возрастает, установите значение innodb_thread_concurrency и настройте его, пока не найдете количество потоков, обеспечивающее наилучшую производительность. Например, предположим, что ваша система обычно имеет от 40 до 50 пользователей, но периодически количество увеличивается до 60, 70 или более. В результате тестирования вы обнаружили, что производительность остается в основном стабильной при ограничении в 80 одновременных пользователей. В этом случае установите innodb_thread_concurrency на 80.

    • Если вы не хотите, чтобы InnoDB использовал больше определенного количества виртуальных процессоров для пользовательских потоков (например, 20 виртуальных процессоров), установите innodb_thread_concurrency на это число (или, возможно, меньше, в зависимости от результатов тестирования производительности). Если ваша цель состоит в изоляции MySQL от других приложений, рассмотрите возможность привязки процесса mysqld исключительно к виртуальным процессорам. Однако имейте в виду, что эксклюзивная привязка может привести к не оптимальному использованию аппаратных ресурсов, если процесс mysqld не постоянно занят. В этом случае вы можете привязать процесс mysqld к виртуальным процессорам, но разрешить другим приложениям использовать некоторые или все виртуальные процессоры.

      Примечание

      С точки зрения операционной системы, использование решения для управления ресурсами для управления тем, как время ЦП делится между приложениями, может быть предпочтительнее, чем привязка процесса mysqld. Например, вы можете назначить 90% времени виртуального ЦП определенному приложению, пока другие важные процессы не работают, и уменьшить это значение до 40%, когда другие важные процессы работают.

    • В некоторых случаях оптимальное значение innodb_thread_concurrency может быть меньше, чем количество виртуальных процессоров.

    • Слишком высокое значение innodb_thread_concurrency может привести к снижению производительности из-за увеличения конкуренции за системные внутренние компоненты и ресурсы.

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

    Значение 0 отключает счетчики queries inside InnoDB и queries in queue в разделе ROW OPERATIONS вывода SHOW ENGINE INNODB STATUS.

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

  • innodb_thread_sleep_delay

    Командная строка --innodb-thread-sleep-delay=#
    Системная переменная innodb_thread_sleep_delay
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применимо Нет
    Тип Целое число
    Значение по умолчанию 10000
    Минимальное значение 0
    Максимальное значение 1000000
    Единица измерения микросекунды

    Время сна потоков InnoDB перед присоединением к очереди InnoDB в микросекундах. Значение по умолчанию равно 10000. Значение 0 отключает сон. Вы можете установить innodb_adaptive_max_sleep_delay на максимальное разрешенное значение для innodb_thread_sleep_delay, и InnoDB автоматически корректирует innodb_thread_sleep_delay вверх или вниз в зависимости от текущей активности планирования потоков. Эта динамическая корректировка помогает механизму планирования потоков работать плавно в периоды небольшой загрузки системы или при работе вблизи полной загрузки.

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

  • innodb_tmpdir

    Формат командной строки --innodb-tmpdir=dir_name
    Системная переменная innodb_tmpdir
    Область действия Глобальная, Сеанс
    Динамическая Да
    SET_VAR Применимо Нет
    Тип Имя каталога
    Значение по умолчанию NULL

    Используется для определения альтернативного каталога для временных файлов сортировки, создаваемых во время операций онлайн-перестроения таблиц.

    Операции онлайн-перестроения таблиц также создают файл временной таблицы в том же каталоге, что и исходная таблица. Параметр innodb_tmpdir не применим к файлам временных таблиц.

    Допустимым значением является любой путь к каталогу, кроме пути к каталогу данных MySQL. Если значение NULL (по умолчанию), временные файлы создаются в каталоге временных файлов MySQL ($TMPDIR в Unix, %TEMP% в Windows или каталог, указанный в конфигурационном параметре --tmpdir). Если в строке каталога указана символическая ссылка, она разрешается и сохраняется как абсолютный путь. Путь не должен превышать 512 байт. Операция онлайн-перестроения таблиц сообщает об ошибке, если innodb_tmpdir настроена на недопустимый каталог. innodb_tmpdir переопределяет настройку MySQL tmpdir, но только для операций онлайн-перестроения таблиц.

    Для настройки innodb_tmpdir требуется привилегия FILE.

    Параметр innodb_tmpdir был введен для предотвращения переполнения каталога временных файлов, расположенного на tmpfs файловой системе. Такие переполнения могут произойти из-за больших временных файлов сортировки, создаваемых при операциях онлайн-перестроения таблиц.

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

    Дополнительную информацию см. в Разделе 17.12.3, «Требования к пространству для онлайн DDL». Сведения об операциях онлайн-перестроения таблиц см. в Разделе 17.12, «InnoDB и онлайн DDL».

  • innodb_trx_purge_view_update_only_debug

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

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

  • innodb_trx_rseg_n_slots_debug

    Формат командной строки --innodb-trx-rseg-n-slots-debug=#
    Системная переменная innodb_trx_rseg_n_slots_debug
    Область действия Глобальная
    Динамическая Да
    SET_VAR Применимо Нет
    Тип Целое число
    Значение по умолчанию 0
    Минимальное значение 0
    Максимальное значение 1024

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

  • innodb_undo_directory

    Формат командной строки --innodb-undo-directory=dir_name
    Системная переменная innodb_undo_directory
    Область действия Глобальная
    Динамическая Нет
    SET_VAR Применимо Нет
    Тип Имя каталога

    Путь, где InnoDB создаёт табличные пространства отката. Обычно используется для размещения пространств отката на другом накопителе.

    Значение по умолчанию отсутствует (NULL). Если переменная innodb_undo_directory не определена, табличные пространства отката создаются в каталоге данных.

    Табличные пространства отката по умолчанию (innodb_undo_001 и innodb_undo_002), созданные при инициализации экземпляра MySQL, всегда находятся в каталоге, определённом переменной innodb_undo_directory.

    Табличные пространства отката, созданные с помощью синтаксиса CREATE UNDO TABLESPACE, создаются в каталоге, определённом переменной innodb_undo_directory, если не указан другой путь.

    Дополнительную информацию см. в Разделе 17.6.3.4, «Табличные пространства отката».

  • innodb_undo_log_encrypt

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

    Управляет шифрованием данных журнала отката для таблиц, зашифрованных с помощью функции шифрования данных в покое InnoDB. Применяется только к журналам отката, находящимся в отдельных файлах. См. Раздел 17.6.3.4, «Табличные пространства отката». Шифрование не поддерживается для данных журналов отката, находящихся в системном табличном пространстве. Для получения дополнительной информации см. Шифрование журнала отката.

  • innodb_undo_log_truncate

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

    При включении, пространства таблиц отката, превышающие пороговое значение, определенное в innodb_max_undo_log_size, помечаются для усечения. Усечению могут подвергаться только пространства таблиц отката. Усечение журналов отката, находящихся в системном пространстве таблиц, не поддерживается. Для усечения должно быть не менее двух пространств таблиц отката.

    Переменная innodb_purge_rseg_truncate_frequency может использоваться для ускорения усечения пространств таблиц отката.

    Более подробная информация в разделе Усечение пространств таблиц отката.

  • innodb_undo_tablespaces

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

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

    Примечание

    Переменная innodb_undo_tablespaces устарела; её установка не оказывает никакого эффекта. Ожидайте её удаления в будущих выпусках MySQL.

    Более подробная информация в разделе Раздел 17.6.3.4, “Пространства таблиц отката”.

  • innodb_use_fdatasync

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

    На платформах, поддерживающих fdatasync() системные вызовы, включение innodb_use_fdatasync позволяет использовать fdatasync() вместо fsync() системных вызовов для операционных системных сбросов. Вызов fdatasync() не сбрасывает изменения в метаданные файлов, если это не требуется для последующего извлечения данных, что потенциально повышает производительность.

    Подмножество настроек innodb_flush_method, такие как fsync, O_DSYNC и O_DIRECT, используют fsync() системные вызовы. Переменная innodb_use_fdatasync применима при использовании этих настроек.

    До MySQL 8.4 этот параметр был отключен по умолчанию.

  • innodb_use_native_aio

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

    Указывает, использовать ли подсистему асинхронных ввода-вывода. Изменение этой переменной во время работы сервера невозможно. Обычно не требуется настройка этого параметра, так как он включён по умолчанию.

    Данная функция улучшает масштабируемость систем с интенсивным вводом-выводом, которые, как правило, демонстрируют много ожидающих операций чтения/записи в выводе SHOW ENGINE INNODB STATUS.

    Работа с большим количеством потоков ввода-вывода InnoDB, особенно нескольких таких экземпляров на одном сервере, может превысить лимиты на системах Linux. В этом случае может появиться следующая ошибка:

    EAGAIN: The specified maxevents exceeds the user's limit of available events.
    

    Обычно эту ошибку можно исправить, установив более высокое ограничение для /proc/sys/fs/aio-max-nr.

    Однако, если проблема с подсистемой асинхронного ввода-вывода в ОС препятствует запуску InnoDB, можно запустить сервер с innodb_use_native_aio=0. Этот параметр может быть автоматически отключён во время запуска, если InnoDB обнаруживает потенциальную проблему, такую как комбинация расположения tmpdir, файловой системы tmpfs и ядра Linux, не поддерживающего AIO на tmpfs.

    Более подробная информация в разделе Раздел 17.8.6, “Использование асинхронного ввода-вывода на Linux”.

  • innodb_validate_tablespace_paths

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

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

    Предупреждение

    Запуск сервера с отключенной проверкой путей к пространствам таблиц после перемещения файлов пространств таблиц может привести к неопределённому поведению.

    Более подробная информация в разделе Раздел 17.6.3.7, “Отключение проверки путей к пространствам таблиц”.

  • innodb_version

    Номер версии InnoDB. Это устаревшая переменная, значение которой совпадает со значением системной переменной MySQL сервера version.

  • innodb_write_io_threads

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

    Количество потоков ввода-вывода для операций записи в InnoDB. Значение по умолчанию равно 4. Соответствующая переменная для потоков чтения — innodb_read_io_threads. Дополнительную информацию см. в разделе 17.8.5, «Настройка количества фоновых потоков ввода-вывода InnoDB». Советы по общей настройке ввода-вывода см. в разделе 10.5.8, «Оптимизация ввода-вывода на диске InnoDB».

    Примечание

    В системах Linux запуск нескольких серверов MySQL (обычно более 12) с настройками по умолчанию для innodb_read_io_threads, innodb_write_io_threads и параметра Linux aio-max-nr может превышать системные ограничения. В идеале, увеличьте настройку aio-max-nr; в качестве обходного решения можно уменьшить значения для одной или обеих переменных MySQL.

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

    Советы по общей настройке ввода-вывода см. в разделе 10.5.8, «Оптимизация ввода-вывода на диске InnoDB».

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

Spec-Zone.ru

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