Spec-Zone.ru › MySQL 8.4

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_instances Да Да Да Глобальный Нет
innodb_buffer_pool_load_abort Да Да Да Глобальный Да
innodb_buffer_pool_load_at_startup Да Да Да Глобальный Нет
innodb_buffer_pool_load_now Да Да Да Глобальный Да
Innodb_buffer_pool_load_status Да Глобальный Нет
Innodb_buffer_pool_pages_data Да Глобальный Нет
Innodb_buffer_pool_pages_dirty Да Глобальный Нет
Innodb_buffer_pool_pages_flushed Да Глобальный Нет
Innodb_buffer_pool_pages_free Да Глобальный Нет
Innodb_buffer_pool_pages_latched Да Глобальный Нет
Innodb_buffer_pool_pages_misc Да Глобальный Нет
Innodb_buffer_pool_pages_total Да Глобальный Нет
Innodb_buffer_pool_read_ahead Да Глобальный Нет
Innodb_buffer_pool_read_ahead_evicted Да Глобальный Нет
Innodb_buffer_pool_read_ahead_rnd Да Глобальный Нет
Innodb_buffer_pool_read_requests Да Глобальный Нет
Innodb_buffer_pool_reads Да Глобальный Нет
Innodb_buffer_pool_resize_status Да Глобальный Нет
innodb_buffer_pool_size Да Да Да Глобальный Да
Innodb_buffer_pool_wait_free Да Глобальный Нет
Innodb_buffer_pool_write_requests Да Глобальный Нет
innodb_change_buffer_max_size Да Да Да Глобальный Да
innodb_change_buffering Да Да Да Глобальный Да
innodb_change_buffering_debug Да Да Да Глобальный Да
innodb_checkpoint_disabled Да Да Да Глобальный Да
innodb_checksum_algorithm Да Да Да Глобальный Да
innodb_cmp_per_index_enabled Да Да Да Глобальный Да
innodb_commit_concurrency Да Да Да Глобальный Да
innodb_compress_debug Да Да Да Глобальный Да
innodb_compression_failure_threshold_pct Да Да Да Глобальный Да
innodb_compression_level Да Да Да Глобальный Да
innodb_compression_pad_pct_max Да Да Да Глобальный Да
innodb_concurrency_tickets Да Да Да Глобальный Да
innodb_data_file_path Да Да Да Глобальный Нет
Innodb_data_fsyncs Да Глобальный Нет
innodb_data_home_dir Да Да Да Глобальный Нет
Innodb_data_pending_fsyncs Да Глобальный Нет
Innodb_data_pending_reads Да Глобальный Нет
Innodb_data_pending_writes Да Глобальный Нет
Innodb_data_read Да Глобальный Нет
Innodb_data_reads Да Глобальный Нет
Innodb_data_writes Да Глобальный Нет
Innodb_data_written Да Глобальный Нет
Innodb_dblwr_pages_written Да Глобальный Нет
Innodb_dblwr_writes Да Глобальный Нет
innodb_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_fil_make_page_dirty_debug Да Да Да Глобальный Да
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_read_only Да Да Да Глобально Нет
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_saved_page_number_debug Да Да Да Глобальный Да
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_trx_purge_view_update_only_debug Да Да Да Глобальный Да
innodb_trx_rseg_n_slots_debug Да Да Да Глобально Да
innodb_undo_directory Да Да Да Глобально Нет
innodb_undo_log_encrypt Да Да Да Глобально Да
innodb_undo_log_truncate Да Да Да Глобально Да
innodb_undo_tablespaces Да Да Да Глобально Да
Innodb_undo_tablespaces_active Да Глобально Нет
Innodb_undo_tablespaces_explicit Да Глобально Нет
Innodb_undo_tablespaces_implicit Да Глобально Нет
Innodb_undo_tablespaces_total Да Глобально Нет
innodb_use_fdatasync Да Да Да Глобально Да
innodb_use_native_aio Да Да Да Глобально Нет
innodb_validate_tablespace_paths Да Да Да Глобально Нет
innodb_version Да Глобально Нет
innodb_write_io_threads Да Да Да Глобально Нет
unique_checks Да Оба Да

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

  • --innodb-dedicated-server

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

    Примечание

    В более ранних версиях MySQL 8.0, innodb_log_file_size и innodb_log_files_in_group также устанавливались с помощью --innodb-dedicated-server. innodb_log_file_size и innodb_log_files_in_group с тех пор устарели и заменены на innodb_redo_log_capacity. См. Раздел 17.6.5, «Журнал переигрывания».

    В MySQL 8.0, innodb_flush_method также автоматически устанавливался этим параметром, но в MySQL 8.4 это больше не так.

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

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

  • --innodb-status-file

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

    Определяет низкую отметку (low water mark), представляющую процент ёмкости, при котором включается динамическая настройка. Дополнительную информацию см. в разделе 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

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

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

END_OF_DOCUMENT_MARKER
  • 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 МБ). Применяется к операциям online DDL, которые создают или перестраивают вторичные индексы. См. Раздел 17.12.4, «Управление памятью online DDL». Максимальный размер буфера на поток DDL равен максимальному размеру буфера, деленному на количество потоков DDL (innodb_ddl_buffer_size/innodb_ddl_threads).

  • innodb_ddl_log_crash_reset_debug

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

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

  • innodb_ddl_threads

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

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

  • innodb_deadlock_detect

    Формат командной строки --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 или при использовании параметра 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 управляет буферизацией doublewrite. Буферизация doublewrite включена по умолчанию в большинстве случаев.

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

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

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

    Подробную информацию см. в разделе Раздел 17.6.4, «Буфер doublewrite».

  • innodb_doublewrite_batch_size

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

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

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

  • innodb_doublewrite_dir

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

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

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

  • innodb_doublewrite_files

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

    Управляет тем, как пространство выделяется для таблиц file-per-table и общих табличных пространств в системах 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 включено, таблицы создаются в табличных пространствах file-per-table по умолчанию. Когда отключено, таблицы создаются в системном табличном пространстве по умолчанию. Для получения информации о табличных пространствах file-per-table см. Раздел 17.6.3.2, «Табличные пространства File-Per-Table». Для получения информации о системном табличном пространстве InnoDB см. Раздел 17.6.3.1, «Системное табличное пространство».

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

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

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

  • innodb_fill_factor

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

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

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

    Устанавливайте эту переменную только в случае чрезвычайной ситуации, чтобы вы могли начать 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 Применимо к подсказкам Нет
    Тип Строка

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

    SET GLOBAL innodb_ft_aux_table = 'test/t1';
    

    После установки этой переменной в формате db_name/table_name таблицы INFORMATION_SCHEMA INNODB_FT_INDEX_TABLE, INNODB_FT_INDEX_CACHE, INNODB_FT_CONFIG, INNODB_FT_DELETED и INNODB_FT_BEING_DELETED отображают информацию об индексе поиска для указанной таблицы.

    Дополнительную информацию см. в Разделе 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
    Максимальное значение (64-битные платформы, 8.4.0) 2**64-1
    Максимальное значение 2**32-1

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

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

  • innodb_io_capacity_max

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

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

    Значение по умолчанию вдвое больше значения innodb_io_capacity.

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

  • innodb_limit_optimistic_insert_debug

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

    Ограничивает количество записей на страницу. Значение по умолчанию 0 означает, что ограничение не накладывается. Этот параметр доступен только в том случае, если поддержка отладки компилируется с использованием параметра WITH_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. Изменение параметра GLOBAL требует прав, достаточных для установки глобальных системных переменных (см. раздел 7.1.9.1, «Привилегии системных переменных»), и влияет на работу всех клиентов, которые подключаются впоследствии. Любой клиент может изменить параметр SESSION для innodb_lock_wait_timeout, что влияет только на этого клиента.

  • innodb_log_buffer_size

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

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

  • innodb_log_checkpoint_fuzzy_now

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

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

  • innodb_log_checkpoint_now

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

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

  • 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 МБ.

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

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

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

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

  • innodb_log_files_in_group

    Формат командной строки --innodb-log-files-in-group=#
    Устаревший Да
    Системная переменная 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_log_spin_cpu_abs_lwm

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

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

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

  • innodb_log_spin_cpu_pct_hwm

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

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

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

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

  • innodb_log_wait_for_flush_spin_hwm

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

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

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

  • innodb_log_write_ahead_size

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

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

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

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

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

  • innodb_log_writer_threads

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

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

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

  • innodb_lru_scan_depth

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

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

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

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

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

  • innodb_max_dirty_pages_pct

    Формат командной строки --innodb-max-dirty-pages-pct=#
    Системная переменная 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.16, «Инструкция 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.16, «Инструкция 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.16, «Инструкция 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_page_cleaners

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

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

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

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

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

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

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

    mysql              hard    nice       -20
    mysql              soft    nice       -20
    

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

    [Service]
    LimitNICE=-20
    

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

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

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

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

    $> cat /proc/mysqld_pid/limits | grep nice
    Max nice priority         18446744073709551596 18446744073709551596
    
  • innodb_page_size

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

    4096

    8192

    16384

    32768

    65536

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

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

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

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

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

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

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

  • innodb_parallel_read_threads

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

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

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

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

END_OF_DOCUMENT_MARKER
  • innodb_print_all_deadlocks

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

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

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

  • innodb_print_ddl_logs

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

    Определяет частоту, с которой система очистки освобождает сегменты отката, в терминах количества вызовов очистки. Таблицу undo нельзя усечь, пока её сегменты отката не будут освобождены. Обычно система очистки освобождает сегменты отката один раз каждые 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

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

    Подробности о соображениях производительности для различных типов запросов предварительной выборки см. в разделе 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 (предварительное чтение)». Советы по общей настройке ввода-вывода см. в Разделе 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. Увеличение значения улучшает точность статистики индекса, что может улучшить производительность, за счет увеличения I/O во время выполнения ANALYZE TABLE для таблицы InnoDB. Дополнительную информацию см. в разделе 17.8.10.1, «Настройка параметров постоянной статистики оптимизатора».

    Примечание

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

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

  • innodb_stats_transient_sample_pages

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

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

    Примечание

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

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

  • innodb_status_output

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

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

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

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

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

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

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

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

  • innodb_trx_purge_view_update_only_debug

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

    Приостанавливает очистку помеченных удалением записей, позволяя обновлять представление очистки. Эта опция искусственно создает ситуацию, в которой представление очистки обновляется, но очистки еще не выполнены. Эта опция доступна только при наличии поддержки отладки, скомпилированной с помощью опции WITH_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-8.4-en/innodb-parameters.html

Spec-Zone.ru

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