Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb
HTML Download (TGZ) - 10.0Mb
HTML Download (Zip) - 10.1Mb


MySQL 8.0 リファレンスマニュアル  /  InnoDB ストレージエンジン  /  InnoDB の起動オプションおよびシステム変数

このページは機械翻訳したものです。

15.14 InnoDB の起動オプションおよびシステム変数

  • true または false であるシステム変数は、サーバー起動時に変数の名前を指定することで有効にすることができ、--skip- プリフィクスを使用することで無効にすることができます。 たとえば、InnoDB 適応ハッシュインデックスを有効または無効にするには、コマンドラインで --innodb-adaptive-hash-index または --skip-innodb-adaptive-hash-index を使用するか、オプションファイルで innodb_adaptive_hash_index または skip_innodb_adaptive_hash_index を使用します。

  • 数値が指定されるシステム変数は、コマンド行で --var_name=value として指定するか、オプションファイルで var_name=value として指定できます。

  • 多くのシステム変数は、実行時に変更できます (セクション5.1.9.2「動的システム変数」を参照してください)。

  • GLOBAL および SESSION 変数スコープ修飾子については、SET ステートメントのドキュメントを参照してください。

  • 特定のオプションでは、InnoDB データファイルの場所およびレイアウトが制御されます。セクション15.8.1「InnoDB の起動構成」では、これらのオプションを使用する方法について説明します。

  • 初期段階では使用しないような一部のオプションは、マシンの処理能力やデータベースのワークロードに基づいて、InnoDB のパフォーマンス特性を調整する際に役立ちます。

  • オプションおよびシステム変数の指定に関する詳細は、セクション4.2.2「プログラムオプションの指定」を参照してください。

表 15.24 「InnoDB オプションおよび変数リファレンス」

名前 コマンド行 オプションファイル システム変数 ステータス変数 変数スコープ 動的
daemon_memcached_enable_binlog はい はい はい グローバル いいえ
daemon_memcached_engine_lib_name はい はい はい グローバル いいえ
daemon_memcached_engine_lib_path はい はい はい グローバル いいえ
daemon_memcached_option はい はい はい グローバル いいえ
daemon_memcached_r_batch_size はい はい はい グローバル いいえ
daemon_memcached_w_batch_size はい はい はい グローバル いいえ
foreign_key_checks はい 両方 はい
innodb はい はい
innodb_adaptive_flushing はい はい はい グローバル はい
innodb_adaptive_flushing_lwm はい はい はい グローバル はい
innodb_adaptive_hash_index はい はい はい グローバル はい
innodb_adaptive_hash_index_parts はい はい はい グローバル いいえ
innodb_adaptive_max_sleep_delay はい はい はい グローバル はい
innodb_api_bk_commit_interval はい はい はい グローバル はい
innodb_api_disable_rowlock はい はい はい グローバル いいえ
innodb_api_enable_binlog はい はい はい グローバル いいえ
innodb_api_enable_mdl はい はい はい グローバル いいえ
innodb_api_trx_level はい はい はい グローバル はい
innodb_autoextend_increment はい はい はい グローバル はい
innodb_autoinc_lock_mode はい はい はい グローバル いいえ
innodb_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_log_crash_reset_debug はい はい はい グローバル はい
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_enabled はい グローバル いいえ
innodb_redo_log_encrypt はい はい はい グローバル はい
innodb_replication_delay はい はい はい グローバル はい
innodb_rollback_on_timeout はい はい はい グローバル いいえ
innodb_rollback_segments はい はい はい グローバル はい
Innodb_row_lock_current_waits はい グローバル いいえ
Innodb_row_lock_time はい グローバル いいえ
Innodb_row_lock_time_avg はい グローバル いいえ
Innodb_row_lock_time_max はい グローバル いいえ
Innodb_row_lock_waits はい グローバル いいえ
Innodb_rows_deleted はい グローバル いいえ
Innodb_rows_inserted はい グローバル いいえ
Innodb_rows_read はい グローバル いいえ
Innodb_rows_updated はい グローバル いいえ
innodb_saved_page_number_debug はい はい はい グローバル はい
innodb_sort_buffer_size はい はい はい グローバル いいえ
innodb_spin_wait_delay はい はい はい グローバル はい
innodb_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_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_native_aio はい はい はい グローバル いいえ
innodb_validate_tablespace_paths はい はい はい グローバル いいえ
innodb_version はい グローバル いいえ
innodb_write_io_threads はい はい はい グローバル いいえ
unique_checks はい 両方 はい

InnoDB コマンドオプション

  • --innodb[=value]

    コマンド行形式 --innodb[=value]
    非推奨 はい
    列挙
    デフォルト値 ON
    有効な値

    OFF

    ON

    FORCE

    サーバーが InnoDB サポートでコンパイルされた場合に、InnoDB ストレージエンジンのロードを制御します。 このオプションの形式はトライステートであり、指定可能な値は OFFON、または FORCE です。 セクション5.6.1「プラグインのインストールおよびアンインストール」を参照してください。

    InnoDB を無効にするには、--innodb=OFF または --skip-innodb を使用します。 この場合、デフォルトのストレージエンジンは InnoDB であるため、--default-storage-engine および --default-tmp-storage-engine を使用して永続テーブルと TEMPORARY テーブルの両方のデフォルトをほかのエンジンに設定しないかぎり、サーバーは起動しません。

    InnoDB ストレージエンジンを無効にすることはできなくなり、--innodb=OFF および --skip-innodb オプションは非推奨であり、効果はありません。 使用すると警告が表示されます。 これらのオプションは、将来の MySQL リリースで削除される予定です。

  • --innodb-status-file

    コマンド行形式 --innodb-status-file[={OFF|ON}]
    Boolean
    デフォルト値 OFF

    --innodb-status-file の起動オプションは、InnoDBinnodb_status.pid という名前のファイルをデータディレクトリに作成し、SHOW ENGINE INNODB STATUS 出力を 15 秒ごとにおよそ書き込むかどうかを制御します。

    innodb_status.pid ファイルはデフォルトでは作成されません。 これを作成するには、--innodb-status-file オプションを指定して mysqld を起動します。 サーバーが正常に停止すると、InnoDB によってファイルが削除されます。 異常停止が発生した場合は、ステータスファイルを手動で削除する必要がある場合があります。

    --innodb-status-file オプションは一時的な使用を目的としています。これは、SHOW ENGINE INNODB STATUS の出力生成がパフォーマンスに影響し、innodb_status.pid ファイルが時間の経過とともに非常に大きくなる可能性があるためです。

    関連情報については、セクション15.17.2「InnoDB モニターの有効化」を参照してください。

  • --skip-innodb

    InnoDB ストレージエンジンを無効にします。 --innodb の説明を参照してください。

InnoDB システム変数

  • daemon_memcached_enable_binlog

    コマンド行形式 --daemon-memcached-enable-binlog[={OFF|ON}]
    システム変数 daemon_memcached_enable_binlog
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    MySQL binary logInnoDB memcached プラグイン (daemon_memcached) を使用するには、ソースサーバーでこのオプションを有効にします。 このオプションは、サーバーの起動時にのみ設定できます。 --log-bin オプションを使用して、ソースサーバーで MySQL バイナリログを有効にする必要もあります。

    詳細は、セクション15.20.7「InnoDB memcached プラグインとレプリケーション」を参照してください。

  • daemon_memcached_engine_lib_name

    コマンド行形式 --daemon-memcached-engine-lib-name=file_name
    システム変数 daemon_memcached_engine_lib_name
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    ファイル名
    デフォルト値 innodb_engine.so

    InnoDB memcached プラグインを実装する共有ライブラリを指定します。

    詳細は、セクション15.20.3「InnoDB memcached プラグインの設定」を参照してください。

  • daemon_memcached_engine_lib_path

    コマンド行形式 --daemon-memcached-engine-lib-path=dir_name
    システム変数 daemon_memcached_engine_lib_path
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    ディレクトリ名
    デフォルト値 NULL

    InnoDB memcached プラグインを実装する共有ライブラリを含むディレクトリのパスです。 デフォルト値は、MySQL プラグインディレクトリを表す NULL です。 MySQL プラグインディレクトリの外部にある別のストレージエンジン用の memcached プラグインを指定しないかぎり、このパラメータを変更する必要はありません。

    詳細は、セクション15.20.3「InnoDB memcached プラグインの設定」を参照してください。

  • daemon_memcached_option

    コマンド行形式 --daemon-memcached-option=options
    システム変数 daemon_memcached_option
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    文字列
    デフォルト値

    起動時に、空白文字で区切られた memcached オプションをベースとなる memcached メモリーオブジェクトのキャッシュデーモンに渡すために使用されます。 たとえば、memcached がリスニングするポートの変更、同時接続の最大数の削減、キーと値のペアの最大メモリーサイズの変更、またはエラーログのデバッグメッセージの有効化を行うことができます。

    使用法の詳細は、セクション15.20.3「InnoDB memcached プラグインの設定」を参照してください。 memcached オプションについては、memcached のマニュアルページを参照してください。

  • daemon_memcached_r_batch_size

    コマンド行形式 --daemon-memcached-r-batch-size=#
    システム変数 daemon_memcached_r_batch_size
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 1

    COMMIT を実行して新しいトランザクションを開始する前に実行する memcached 読取り操作 (get 操作) の数を指定します。 daemon_memcached_w_batch_size の対の片方です。

    この値はデフォルトで 1 に設定されているため、SQL ステートメントを介してテーブルに加えられた変更は、memcached 操作からすぐに参照できます。 ベースとなるテーブルが memcached インタフェースからのみアクセスされているシステム上で、頻繁なコミットによるオーバーヘッドを削減するために、これを大きくすることがあります。 大きすぎる値を設定すると、Undo データまたは Redo データの量によっては、長時間実行されるトランザクションの場合と同様に、一部のストレージでオーバーヘッドが発生する可能性があります。

    詳細は、セクション15.20.3「InnoDB memcached プラグインの設定」を参照してください。

  • daemon_memcached_w_batch_size

    コマンド行形式 --daemon-memcached-w-batch-size=#
    システム変数 daemon_memcached_w_batch_size
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 1

    COMMIT を実行して新しいトランザクションを開始する前に実行する、addsetincr などの memcached 書込み操作の数を指定します。 daemon_memcached_r_batch_size の対の一方です。

    格納されるデータは停止時に保持することが重要であり、すぐにコミットする必要があると仮定すると、この値はデフォルトで 1 に設定されます。 クリティカルでないデータを格納する場合、頻繁なコミットによるオーバーヘッドを削減するためにこの値を増やすことができますが、予期しない終了が発生すると、最後の N-1 のコミットされていない書込み操作が失われる可能性があります。

    詳細は、セクション15.20.3「InnoDB memcached プラグインの設定」を参照してください。

  • innodb_adaptive_flushing

    コマンド行形式 --innodb-adaptive-flushing[={OFF|ON}]
    システム変数 innodb_adaptive_flushing
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    ワークロードに基づいて、InnoDB バッファープール内のダーティーページをフラッシュする比率を動的に調整するかどうかを指定します。 フラッシュ比率を動的に調整する目的は、I/O アクティビティーのバーストを回避することです。 この設定はデフォルトで有効になっています。 詳しくはセクション15.8.3.5「バッファープールのフラッシュの構成」をご覧ください。 一般的な I/O チューニングのアドバイスについては、セクション8.5.8「InnoDB ディスク I/O の最適化」を参照してください。

  • innodb_adaptive_flushing_lwm

    コマンド行形式 --innodb-adaptive-flushing-lwm=#
    システム変数 innodb_adaptive_flushing_lwm
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 10
    最小値 0
    最大値 70

    adaptive flushing が有効な redo log 容量の割合を表す最低水位標を定義します。 詳細は、セクション15.8.3.5「バッファープールのフラッシュの構成」を参照してください。

  • innodb_adaptive_hash_index

    コマンド行形式 --innodb-adaptive-hash-index[={OFF|ON}]
    システム変数 innodb_adaptive_hash_index
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    InnoDB 適応型ハッシュインデックスが有効と無効のどちらになっているのかを示します。 ワークロードに応じて、適応型ハッシュインデックスの作成を動的に有効または無効にして、クエリーのパフォーマンスを改善することが望ましい場合があります。 適応型ハッシュインデックスがすべてのワークロードに役立つとは限らないため、現実的なワークロードを使用して、有効と無効の両方でベンチマークを実施してください。 詳細は、セクション15.5.3「適応型ハッシュインデックス」を参照してください。

    この変数はデフォルトで有効になっています。 SET GLOBAL ステートメントを使用すると、サーバーを再起動せずに、このパラメータを変更できます。 実行時に設定を変更するには、グローバルシステム変数を設定するのに十分な権限が必要です。 セクション5.1.9.1「システム変数権限」を参照してください。 サーバーの起動時に --skip-innodb-adaptive-hash-index を使用して無効にすることもできます。

    適応型ハッシュインデックスを無効にすると、すぐにハッシュテーブルが空になります。 ハッシュテーブルが空になっても通常の操作は続行でき、ハッシュテーブルを使用していた実行中のクエリーは、代わりにインデックスの B ツリーに直接アクセスします。 適応型ハッシュインデックスを再度有効にすると、通常の操作時にハッシュテーブルが再度移入されます。

  • innodb_adaptive_hash_index_parts

    コマンド行形式 --innodb-adaptive-hash-index-parts=#
    システム変数 innodb_adaptive_hash_index_parts
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    数値
    デフォルト値 8
    最小値 1
    最大値 512

    適応ハッシュインデックス検索システムをパーティション化します。 各インデックスは特定のパーティションにバインドされ、各パーティションは個別のラッチで保護されます。

    適応ハッシュインデックス検索システムは、デフォルトで 8 つの部分にパーティション化されています。 最大設定は 512 です。

    関連情報については、セクション15.5.3「適応型ハッシュインデックス」を参照してください。

  • innodb_adaptive_max_sleep_delay

    コマンド行形式 --innodb-adaptive-max-sleep-delay=#
    システム変数 innodb_adaptive_max_sleep_delay
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 150000
    最小値 0
    最大値 1000000

    InnoDB で、現在のワークロードに応じて innodb_thread_sleep_delay の値を自動的に調整できます。 ゼロ以外の値を指定すると、innodb_adaptive_max_sleep_delay オプションで指定した最大値まで、innodb_thread_sleep_delay 値の動的な自動調整が可能になります。 値はマイクロ秒数を表しています。 このオプションは、InnoDB スレッド数が 16 個を上回る高負荷のシステムで役立つことがあります。 (実際には、同時接続数が数百または数千になる MySQL システムの大部分の変数です。)

    詳細は、セクション15.8.4「InnoDB のスレッド並列性の構成」を参照してください。

  • innodb_api_bk_commit_interval

    コマンド行形式 --innodb-api-bk-commit-interval=#
    システム変数 innodb_api_bk_commit_interval
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 5
    最小値 1
    最大値 1073741824

    InnoDB memcached インタフェースが使用されるアイドル状態の接続が自動コミットされる頻度 (秒単位) です。 詳細は、セクション15.20.6.4「InnoDB memcached プラグインのトランザクション動作の制御」を参照してください。

  • innodb_api_disable_rowlock

    コマンド行形式 --innodb-api-disable-rowlock[={OFF|ON}]
    システム変数 innodb_api_disable_rowlock
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    InnoDB memcached が DML 操作を実行するときに行ロックを無効にするには、このオプションを使用します。 デフォルトでは、innodb_api_disable_rowlock は無効になっています。これは、memcachedget および set 操作の行ロックを要求することを意味します。 innodb_api_disable_rowlock が有効な場合、memcached は行ロックではなくテーブルロックを要求します。

    innodb_api_disable_rowlock は動的ではありません。 これは mysqld コマンド行で指定するか、または MySQL 構成ファイルに入力する必要があります。 構成は、MySQL サーバーの起動時に発生するプラグインのインストール時に有効になります。

    詳細は、セクション15.20.6.4「InnoDB memcached プラグインのトランザクション動作の制御」を参照してください。

  • innodb_api_enable_binlog

    コマンド行形式 --innodb-api-enable-binlog[={OFF|ON}]
    システム変数 innodb_api_enable_binlog
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    MySQL バイナリログとともに、InnoDB memcached プラグインを使用できます。 詳細は、InnoDB memcached バイナリログの有効化を参照してください。

  • innodb_api_enable_mdl

    コマンド行形式 --innodb-api-enable-mdl[={OFF|ON}]
    システム変数 innodb_api_enable_mdl
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    InnoDB memcached プラグインで使用されるテーブルをロックします。これにより、SQL インタフェースから DDL によって削除または変更できなくなります。 詳細は、セクション15.20.6.4「InnoDB memcached プラグインのトランザクション動作の制御」を参照してください。

  • innodb_api_trx_level

    コマンド行形式 --innodb-api-trx-level=#
    システム変数 innodb_api_trx_level
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 0

    memcached インタフェースによって処理されるクエリーのトランザクション isolation level を制御します。 よく聞く名前に対応する定数は、次のとおりです。

    • 0 = READ UNCOMMITTED

    • 1 = READ COMMITTED

    • 2 = REPEATABLE READ

    • 3 = SERIALIZABLE

    詳細は、セクション15.20.6.4「InnoDB memcached プラグインのトランザクション動作の制御」を参照してください。

  • innodb_autoextend_increment

    コマンド行形式 --innodb-autoextend-increment=#
    システム変数 innodb_autoextend_increment
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 64
    最小値 1
    最大値 1000

    自動拡張 InnoDB system tablespace ファイルがいっぱいになったときにサイズを拡張するための増分サイズ (MB)。 デフォルト値は 64 です。 関連情報については、システムテーブルスペースデータファイル構成,およびシステムテーブルスペースのサイズ変更を参照してください。

    innodb_autoextend_increment 設定は、file-per-table テーブルスペースファイルまたは general tablespace ファイルには影響しません。 これらのファイルは、innodb_autoextend_increment の設定に関係なく自動拡張されます。 拡張は少量で始まり、その後の拡張は増分が 4MB で発生します。

  • innodb_autoinc_lock_mode

    コマンド行形式 --innodb-autoinc-lock-mode=#
    システム変数 innodb_autoinc_lock_mode
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 2
    有効な値

    0

    1

    2

    自動インクリメント値を生成する際に使用されるロックモードです。 許容値は、従来型、連続型またはインターリーブ型の場合、それぞれ 0、1 または 2 です。

    デフォルト設定は、MySQL 8.0 の時点では 2 (インターリーブ)、それより前では 1 (連続) です。 デフォルト設定としてインターリーブロックモードを変更すると、MySQL 5.7 で発生したデフォルトのレプリケーションタイプとして、ステートメントベースから行ベースのレプリケーションへの変更が反映されます。 ステートメントベースレプリケーションでは、SQL ステートメントの特定のシーケンスに対して自動インクリメント値が予測可能かつ繰り返し可能な順序で割り当てられるように、連続した自動インクリメントロックモードが必要ですが、行ベースレプリケーションは SQL ステートメントの実行順序には影響しません。

    各ロックモードの特性については、InnoDB AUTO_INCREMENT のロックモード を参照してください。

  • innodb_background_drop_list_empty

    コマンド行形式 --innodb-background-drop-list-empty[={OFF|ON}]
    システム変数 innodb_background_drop_list_empty
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 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 ヒントの適用 いいえ
    Integer
    デフォルト値 134217728
    最小値 1048576
    最大値 innodb_buffer_pool_size / innodb_buffer_pool_instances

    innodb_buffer_pool_chunk_size は、InnoDB バッファプールのサイズ変更操作のチャンクサイズを定義します。

    サイズ変更操作中にすべてのバッファプールページがコピーされないようにするために、この操作は chunks で実行されます。 デフォルトでは、innodb_buffer_pool_chunk_size は 128MB (134217728 バイト) です。 チャンクに含まれるページ数は、innodb_page_size の値によって異なります。innodb_buffer_pool_chunk_size は、1MB (1048576 バイト) 単位で増減できます。

    innodb_buffer_pool_chunk_size 値を変更する場合は、次の条件が適用されます:

    • バッファプールの初期化時に innodb_buffer_pool_chunk_size*innodb_buffer_pool_instances が現在のバッファプールサイズより大きい場合、innodb_buffer_pool_chunk_sizeinnodb_buffer_pool_size / innodb_buffer_pool_instances に切り捨てられます。

    • バッファプールサイズは、常に innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances と等しいか倍数である必要があります。 innodb_buffer_pool_chunk_size を変更すると、innodb_buffer_pool_sizeinnodb_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 の倍数である必要があり、これらの変数設定のいずれかを変更するにはサーバーを再起動する必要があります。

    詳しくはセクション15.8.3.1「InnoDB バッファプールサイズの構成」をご覧ください。

  • innodb_buffer_pool_debug

    コマンド行形式 --innodb-buffer-pool-debug[={OFF|ON}]
    システム変数 innodb_buffer_pool_debug
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    このオプションを有効にすると、バッファプールのサイズが 1GB 未満の場合に複数のバッファプールインスタンスが許可され、innodb_buffer_pool_instances に設定されている 1GB の最小バッファプールサイズ制約は無視されます。 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 ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    MySQL サーバーの停止時に InnoDB buffer pool にキャッシュされたページを記録して、次回の再起動時に warmup プロセスを短縮するかどうかを指定します。 一般に、innodb_buffer_pool_load_at_startup と組み合わせて使用されます。 innodb_buffer_pool_dump_pct オプションは、ダンプする最後に使用されたバッファープールページの割合を定義します。

    innodb_buffer_pool_dump_at_shutdowninnodb_buffer_pool_load_at_startup の両方がデフォルトで有効になっています。

    詳細は、セクション15.8.3.6「バッファープールの状態の保存と復元」を参照してください。

  • innodb_buffer_pool_dump_now

    コマンド行形式 --innodb-buffer-pool-dump-now[={OFF|ON}]
    システム変数 innodb_buffer_pool_dump_now
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    InnoDB buffer pool にキャッシュされたページをすぐに記録します。 一般に、innodb_buffer_pool_load_now と組み合わせて使用されます。

    詳細は、セクション15.8.3.6「バッファープールの状態の保存と復元」を参照してください。

  • innodb_buffer_pool_dump_pct

    コマンド行形式 --innodb-buffer-pool-dump-pct=#
    システム変数 innodb_buffer_pool_dump_pct
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 25
    最小値 1
    最大値 100

    各バッファープールが読み出してダンプする直近で使用されたページの割合を指定。 指定できる範囲は 1~ 100 です。 デフォルト値は 25 です。 たとえば、100 ページのバッファプールが 4 つあり、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 で生成されるテーブルスペース ID およびページ ID のリストを保持するファイルの名前を指定します。 テーブルスペース ID およびページ ID は、space, page_id という形式で保存されます。 デフォルトでは、ファイルの名前は ib_buffer_pool で、InnoDB データディレクトリにあります。 データディレクトリに対してデフォルト以外の場所を指定する必要があります。

    SET ステートメントを使用して、実行時にファイル名を指定できます:

    SET GLOBAL innodb_buffer_pool_filename='file_name';

    起動時に、起動文字列または MySQL 構成ファイルでファイル名を指定することもできます。 起動時にファイル名を指定する場合は、ファイルが存在する必要があります。存在しない場合は、そのようなファイルまたはディレクトリがないことを示す起動エラーが InnoDB によって返されます。

    詳細は、セクション15.8.3.6「バッファープールの状態の保存と復元」を参照してください。

  • innodb_buffer_pool_in_core_file

    コマンド行形式 --innodb-buffer-pool-in-core-file[={OFF|ON}]
    導入 8.0.14
    システム変数 innodb_buffer_pool_in_core_file
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    innodb_buffer_pool_in_core_file 変数を無効にすると、InnoDB バッファープールページが除外され、コアファイルのサイズが小さくなります。 この変数を使用するには、core_file 変数を有効にし、オペレーティングシステムで madvise() に対する MADV_DONTDUMP の POSIX 以外の拡張機能をサポートする必要があります。これは Linux 3.4 以降でサポートされています。 詳細は、セクション15.8.3.7「コアファイルからのバッファープールページの除外」を参照してください。

  • innodb_buffer_pool_instances

    コマンド行形式 --innodb-buffer-pool-instances=#
    システム変数 innodb_buffer_pool_instances
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 (Windows, 32 ビットプラットフォーム) (autosized)
    デフォルト値 (その他) 8 (or 1 if innodb_buffer_pool_size < 1GB
    最小値 1
    最大値 64

    InnoDBバッファープールが分割される領域の数です。 バッファープールが数 G バイトの範囲にあるシステムでは、バッファープールを個別のインスタンスに分割すると、キャッシュされたページに対して異なるスレッドが読み取りおよび書き込みを行うときの競合が減るため、並列性が向上する場合があります。 バッファープールに格納される各ページまたはバッファープールから読み取られる各ページは、ハッシュ関数を使用して、バッファープールインスタンスのいずれかにランダムに割り当てられます。 各バッファープールは、独自の空きリスト、フラッシュリストLRU、およびバッファープールに接続されたその他のすべてのデータ構造を管理し、独自のバッファープール相互排他ロックによって保護されます。

    このオプションは、innodb_buffer_pool_size を 1GB 以上に設定する場合にのみ有効になります。 バッファプールの合計サイズは、すべてのバッファプールに分割されます。 最高の効率を得るには、innodb_buffer_pool_instancesinnodb_buffer_pool_size の組み合わせを、各バッファープールインスタンスが少なくとも 1G バイトになるように指定します。

    32-bit Windows システムのデフォルト値は、次に説明するように、innodb_buffer_pool_size の値によって異なります:

    • innodb_buffer_pool_size が 1.3G バイトよりも大きい場合は、innodb_buffer_pool_instances のデフォルトが innodb_buffer_pool_size/128M バイトになり、チャンクごとに個別のメモリー割り当てリクエストを持ちます。32 ビット版 Windows で単一のバッファープールで必要となる連続したアドレス空間を割り当てることができないという重大なリスクが存在する境界として、1.3G バイトが選択されました。

    • それ以外の場合、デフォルトは 1 です。

    他のすべてのプラットフォームでは、innodb_buffer_pool_size が 1GB 以上の場合、デフォルト値は 8 です。 それ以外の場合、デフォルトは 1 です。

    関連情報については、セクション15.8.3.1「InnoDB バッファプールサイズの構成」を参照してください。

  • innodb_buffer_pool_load_abort

    コマンド行形式 --innodb-buffer-pool-load-abort[={OFF|ON}]
    システム変数 innodb_buffer_pool_load_abort
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    innodb_buffer_pool_load_at_startup または innodb_buffer_pool_load_now によってトリガーされた InnoDB buffer pool コンテンツをリストアするプロセスを中断します。

    詳細は、セクション15.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 ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    MySQL サーバーの起動時に、以前に保持していたものと同じページをロードすることで、InnoDB buffer pool が自動的に warmed up になるように指定します。 一般に、innodb_buffer_pool_dump_at_shutdown と組み合わせて使用されます。

    innodb_buffer_pool_dump_at_shutdowninnodb_buffer_pool_load_at_startup の両方がデフォルトで有効になっています。

    詳細は、セクション15.8.3.6「バッファープールの状態の保存と復元」を参照してください。

  • innodb_buffer_pool_load_now

    コマンド行形式 --innodb-buffer-pool-load-now[={OFF|ON}]
    システム変数 innodb_buffer_pool_load_now
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    サーバーの再起動を待たずに一連のデータページをロードすることで、InnoDB buffer pool を即時に warms up します。 ベンチマーク時にキャッシュメモリーを既知の状態に戻したり、レポートやメンテナンスのためにクエリーを実行したあとに、MySQL サーバーの通常のワークロードを再開する準備をしたりする際に役立ちます。

    詳細は、セクション15.8.3.6「バッファープールの状態の保存と復元」を参照してください。

  • innodb_buffer_pool_size

    コマンド行形式 --innodb-buffer-pool-size=#
    システム変数 innodb_buffer_pool_size
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 134217728
    最小値 5242880
    最大値 (64 ビットプラットフォーム) 2**64-1
    最大値 (32 ビットプラットフォーム) 2**32-1

    InnoDB がテーブルおよびインデックスのデータをキャッシュするメモリー領域であるバッファープールのサイズ (バイト単位) です。 デフォルト値は 134217728 バイト (128MB) です。 最大値は、CPU アーキテクチャーによって異なります。最大値は、32 ビットシステムでは 4294967295 (232-1)、64 ビットシステムでは 18446744073709551615 (264-1) です。 32 ビットシステムでは、CPU アーキテクチャーおよびオペレーティングシステムに、指定された最大値よりも小さい実用的な最大サイズが課されている可能性があります。 バッファープールのサイズが 1G バイトよりも大きい場合に、innodb_buffer_pool_instances を 1 よりも大きい値に設定すると、高負荷のサーバーで拡張性を改善できます。

    バッファプールを大きくすると、同じテーブルデータに複数回アクセスするために必要なディスク I/O が少なくなります。 専用データベースサーバーでは、バッファプールサイズをマシンの物理メモリーサイズの 80% に設定できます。 バッファープールサイズを構成するときは、次の潜在的な問題に注意し、必要に応じてバッファープールのサイズをスケールバックする準備をしてください。

    • 物理メモリーの競合により、オペレーティングシステムでページングが発生する可能性があります。

    • InnoDB では、バッファおよび制御構造体用に追加のメモリーが予約されるため、割り当てられる領域の合計は、指定されたバッファプールサイズよりも約 10% 大きくなります。

    • バッファープールのアドレス空間は連続している必要があります。これは、特定のアドレスで DLL をロードする Windows システムで問題になる可能性があります。

    • バッファープールを初期化する時間は、ほぼそのサイズに比例しています。 バッファプールが大きいインスタンスでは、初期化にかなりの時間がかかる場合があります。 初期化期間を短縮するには、サーバーの停止時にバッファプールの状態を保存し、サーバーの起動時にリストアします。 セクション15.8.3.6「バッファープールの状態の保存と復元」を参照してください。

    バッファープールサイズを増減すると、操作はチャンク単位で実行されます。 チャンクサイズは、innodb_buffer_pool_chunk_size 変数 (デフォルトは 128 MB) によって定義されます。

    バッファプールサイズは、常に 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 ステータス変数は、オンラインバッファプールのサイズ変更操作のステータスを報告します。 詳しくはセクション15.8.3.1「InnoDB バッファプールサイズの構成」をご覧ください。

    innodb_dedicated_server が有効な場合、innodb_buffer_pool_size 値は明示的に定義されていなければ自動的に構成されます。 詳細は、セクション15.8.12「専用 MySQL Server の自動構成の有効化」を参照してください。

  • innodb_change_buffer_max_size

    コマンド行形式 --innodb-change-buffer-max-size=#
    システム変数 innodb_change_buffer_max_size
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 25
    最小値 0
    最大値 50

    buffer pool の合計サイズに対する InnoDB change buffer の最大サイズの割合。 この値は、MySQL サーバーで頻繁に挿入、更新、および削除アクティビティーが発生する場合は大きくし、MySQL サーバーでレポート用に使用されるデータが変更されない場合は小さくするとよいでしょう。 詳細は、セクション15.5.2「変更バッファ」を参照してください。 一般的な I/O チューニングのアドバイスについては、セクション8.5.8「InnoDB ディスク I/O の最適化」を参照してください。

  • innodb_change_buffering

    コマンド行形式 --innodb-change-buffering=value
    システム変数 innodb_change_buffering
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    列挙
    デフォルト値 all
    有効な値

    none

    inserts

    deletes

    changes

    purges

    all

    InnoDBバッファリングの変更 (I/O 操作を連続して実行できるように、セカンダリインデックスへの書き込み操作を遅延させる最適化) を実行するかどうかを指定します。 次のテーブルに、許可される値を示します。 値は数値で指定することもできます。

    表 15.25 innodb_change_buffering に許可される値

    数値 説明
    none 0 どの操作もバッファリングしません。
    inserts 1 挿入操作をバッファリングします。
    deletes 2 バッファ削除マーキング操作。厳密に言えば、パージ操作中に後で削除するためにインデックスレコードをマークする書込み。
    changes 3 バッファの挿入および削除マーク操作。
    purges 4 バックグラウンドで実行される物理的な削除操作をバッファリングします。
    all 5 デフォルト。 バッファの挿入、削除マーク操作およびパージ。

    詳細は、セクション15.5.2「変更バッファ」を参照してください。 一般的な I/O チューニングのアドバイスについては、セクション8.5.8「InnoDB ディスク I/O の最適化」を参照してください。

  • innodb_change_buffering_debug

    コマンド行形式 --innodb-change-buffering-debug=#
    システム変数 innodb_change_buffering_debug
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 0
    最大値 2

    InnoDB 変更バッファリングのデバッグフラグを設定します。 値 1 を指定すると、変更バッファに対するすべての変更が強制されます。 値 2 を指定すると、マージ時に予期しない終了が発生します。 デフォルト値の 0 は、変更バッファリングデバッグフラグが設定されていないことを示します。 このオプションは、デバッグサポートが WITH_DEBUG CMake オプションを使用してコンパイルされている場合にのみ使用できます。

  • innodb_checkpoint_disabled

    コマンド行形式 --innodb-checkpoint-disabled[={OFF|ON}]
    システム変数 innodb_checkpoint_disabled
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    これは、エキスパートによるデバッグのみを目的としたデバッグオプションです。 チェックポイントを無効にして、故意のサーバーイグジットが常に InnoDB リカバリを開始するようにします。 通常は、サーバーの終了後にリカバリが必要な redo ログエントリを書き込む DML 操作を実行する前に、短い間隔でのみ有効にする必要があります。 このオプションは、デバッグサポートが WITH_DEBUG CMake オプションを使用してコンパイルされている場合にのみ使用できます。

  • innodb_checksum_algorithm

    コマンド行形式 --innodb-checksum-algorithm=value
    システム変数 innodb_checksum_algorithm
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    列挙
    デフォルト値 crc32
    有効な値

    innodb

    crc32

    none

    strict_innodb

    strict_crc32

    strict_none

    InnoDB tablespaces のディスクブロックに格納されている checksum を生成および検証する方法を指定します。 innodb_checksum_algorithm のデフォルト値は crc32 です。

    3.8.0 までのバージョンの MySQL Enterprise Backup は、CRC32 チェックサムを使用するテーブルスペースのバックアップをサポートしていません。 MySQL Enterprise Backup は、CRC32 チェックサムのサポートを 3.8.1 で (いくつかの制限付きで) 追加しています。 詳細は、MySQL Enterprise Backup 3.8.1 の変更履歴を参照してください。

    innodb は、以前のバージョンの MySQL と下位互換性があります。 値 crc32 では、より高速に、変更されたすべてのブロックのチェックサムを計算し、ディスク読み取りごとにチェックサムをチェックするアルゴリズムが使用されます。 ブロックを一度に 32 ビットスキャンします。これは、ブロックを一度に 8 ビットスキャンする innodb チェックサムアルゴリズムより高速です。 値 none では、ブロックデータに基づいて値が計算されるのではなく、チェックサムフィールドに定数値が書き込まれます。 テーブルスペース内のブロックは、データの変更時に徐々に更新される古いチェックサム値と新しいチェックサム値を混在させて使用できます。テーブルスペース内のブロックが crc32 アルゴリズムを使用するように変更されると、関連付けられたテーブルを以前のバージョンの MySQL で読み取ることはできません。

    チェックサムアルゴリズムの厳密な形式では、テーブルスペースで有効だが一致しないチェックサム値が検出されると、エラーが報告されます。 テーブルスペースを初めて設定する場合は、新しいインスタンスでのみ厳密な設定を使用することをお薦めします。 厳密な設定は、ディスク読取り時にすべてのチェックサム値を計算する必要がないため、多少高速です。

    次のテーブルに、noneinnodb および crc32 オプションの値とそれぞれに対応する厳密な値の違いを示します。noneinnodb および crc32 は、指定されたタイプのチェックサム値を各データブロックに書き込みますが、互換性のために、読取り操作中にブロックを検証するときに他のチェックサム値を受け入れます。 厳密な設定も有効なチェックサム値を受け入れますが、一致しない有効なチェックサム値が検出されるとエラーメッセージを出力します。 厳密な形式を使用すると、インスタンス内のすべての InnoDB データファイルが同一の innodb_checksum_algorithm 値で作成される場合に、検証が高速になります。

    表 15.26 許可される innodb_checksum_algorithm 値

    生成されるチェックサム (書き込み時) 許可されたチェックサム (読取り時)
    none 定数。 noneinnodb、または crc32 で生成されるチェックサムのいずれか。
    innodb ソフトウェアで InnoDB の元のアルゴリズムを使用して計算されたチェックサム。 noneinnodb、または crc32 で生成されるチェックサムのいずれか。
    crc32 crc32 アルゴリズムを使用して計算されたチェックサム (ハードウェアの支援を得て実行される可能性もあります)。 noneinnodb、または crc32 で生成されるチェックサムのいずれか。
    strict_none 定数 noneinnodb、または crc32 で生成されるチェックサムのいずれか。 有効だが一致しないチェックサムが検出されると、InnoDB はエラーメッセージを出力します。
    strict_innodb ソフトウェアで InnoDB の元のアルゴリズムを使用して計算されたチェックサム。 noneinnodb、または crc32 で生成されるチェックサムのいずれか。 有効だが一致しないチェックサムが検出されると、InnoDB はエラーメッセージを出力します。
    strict_crc32 crc32 アルゴリズムを使用して計算されたチェックサム (ハードウェアの支援を得て実行される可能性もあります)。 noneinnodb、または crc32 で生成されるチェックサムのいずれか。 有効だが一致しないチェックサムが検出されると、InnoDB はエラーメッセージを出力します。

  • innodb_cmp_per_index_enabled

    コマンド行形式 --innodb-cmp-per-index-enabled[={OFF|ON}]
    システム変数 innodb_cmp_per_index_enabled
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX テーブルでインデックスごとの圧縮関連の統計を有効にします。 これらの統計は収集にコストがかかる可能性があるため、このオプションは、InnoDB compressed テーブルに関連するパフォーマンスチューニング中に開発、テストまたはレプリカインスタンスでのみ有効にします。

    詳細は、セクション26.51.7「INFORMATION_SCHEMA INNODB_CMP_PER_INDEX および INNODB_CMP_PER_INDEX_RESET テーブル」およびセクション15.9.1.4「実行時の InnoDB テーブル圧縮の監視」を参照してください。

  • innodb_commit_concurrency

    コマンド行形式 --innodb-commit-concurrency=#
    システム変数 innodb_commit_concurrency
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 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 オプションを使用してコンパイルされている場合にのみ使用できます。

    関連情報については、セクション15.9.2「InnoDB ページ圧縮」を参照してください。

  • innodb_compression_failure_threshold_pct

    コマンド行形式 --innodb-compression-failure-threshold-pct=#
    システム変数 innodb_compression_failure_threshold_pct
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 5
    最小値 0
    最大値 100

    高コストの compression failures を回避するために MySQL が compressed ページ内でパディングの追加を開始するテーブルの圧縮失敗率のしきい値をパーセンテージで定義します。 このしきい値を超えると、MySQL は、最大で innodb_compression_pad_pct_max で指定されたページサイズの割合まで空き領域の量を動的に調整することで、新しい各圧縮済みページ内に追加の空き領域を残し始めます。 値をゼロにすると、圧縮の効率性をモニターするメカニズムが無効になり、パディングの量が動的に調整されます。

    詳細は、セクション15.9.1.6「OLTP ワークロードの圧縮」を参照してください。

  • innodb_compression_level

    コマンド行形式 --innodb-compression-level=#
    システム変数 innodb_compression_level
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 6
    最小値 0
    最大値 9

    InnoDB圧縮されたテーブルおよびインデックスで使用される zlib 圧縮のレベルを指定します。 値を大きくすると、ストレージデバイス上に収容できるデータ量が多くなりますが、圧縮時の CPU オーバーヘッドも多くなるという犠牲が伴います。 値を小さくすると、ストレージ領域がクリティカルでない場合に、CPU のオーバーヘッドを削減できます。それ以外の場合は、データが特に圧縮可能でないと予測されます。

    詳細は、セクション15.9.1.6「OLTP ワークロードの圧縮」を参照してください。

  • innodb_compression_pad_pct_max

    コマンド行形式 --innodb-compression-pad-pct-max=#
    システム変数 innodb_compression_pad_pct_max
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 50
    最小値 0
    最大値 75

    圧縮された各ページ内の空き領域として予約できる最大の割合を指定します。これにより、圧縮されたテーブルまたはインデックスが更新され、データが再度圧縮される可能性があるときに、ページ内のデータおよび変更ログを再編成する余地が得られます。 innodb_compression_failure_threshold_pct がゼロ以外の値に設定され、compression failures のレートがカットオフポイントを通過する場合にのみ適用されます。

    詳細は、セクション15.9.1.6「OLTP ワークロードの圧縮」を参照してください。

  • innodb_concurrency_tickets

    コマンド行形式 --innodb-concurrency-tickets=#
    システム変数 innodb_concurrency_tickets
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 5000
    最小値 1
    最大値 4294967295

    同時に InnoDB に入ることができるスレッドの数を決定します。 スレッドが InnoDB に入ろうとしたときに、すでにスレッド数が並列実行の制限に達している場合は、そのスレッドがキューに配置されます。 スレッドが InnoDB に入ることを許可されている場合は、innodb_concurrency_tickets の値と同じ数の「チケット」が与えられ、チケットを使い切るまでスレッドは InnoDB に自由に入ることができます。 それ以降は、スレッドが次に InnoDB に入ろうとしたときに、再度並列実行チェックの対象となります (キューに入る対象となる可能性もあります)。 デフォルト値は 5000 です。

    innodb_concurrency_tickets 値を小さくすると、1、2 行しか処理する必要のない小規模なトランザクションと、多数の行を処理する大規模なトランザクションが競合する可能性が高くなります。 小さい innodb_concurrency_tickets 値のデメリットは、大規模なトランザクションが完了する前にキューを何度もループする必要があり、これによりタスクの完了に必要な時間が長くなることです。

    innodb_concurrency_tickets 値を大きくすると、大規模なトランザクションで (innodb_thread_concurrency で制御される) キューの終了時の位置を待機する時間が短くなり、行を取得する時間が長くなります。 また、大規模なトランザクションでは、タスクを完了するために必要なキューとの間の移動も少なくなります。 innodb_concurrency_tickets 値を大きくする欠点は、同時に実行する大規模なトランザクションの数が非常に多くなることで、小規模なトランザクションが実行されるまでの待機時間が長くなるため、枯渇する可能性がある点です。

    ゼロ以外の innodb_thread_concurrency 値では、innodb_concurrency_tickets 値を上下に調整して、大規模なトランザクションと小規模なトランザクションの間の最適なバランスを見つける必要がある場合があります。 SHOW ENGINE INNODB STATUS レポートには、キューを通過する現時点で実行中のトランザクション用に残されているチケットの数が表示されます。 このデータは、INFORMATION_SCHEMA.INNODB_TRX テーブルの TRX_CONCURRENCY_TICKETS カラムから取得することもできます。

    詳細は、セクション15.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 の値を指定しない場合、デフォルトの動作では、12MB を少し超える単一の自動拡張データファイルが ibdata1 という名前で作成されます。

    データファイル指定の完全な構文には、ファイル名、ファイルサイズ、autoextend 属性および max 属性が含まれます:

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

    ファイルサイズは、KM または G をサイズ値に追加することで、KB、MB または GB 単位で指定します。 データファイルのサイズを KB 単位で指定する場合は、1024 の倍数で指定します。 それ以外の場合、KB 値は最も近いメガバイト (MB) 境界に丸められます。 ファイルサイズの合計は、12MB 以上である必要があります。

    その他の構成情報については、システムテーブルスペースデータファイル構成 を参照してください。 サイズ変更の手順は、システムテーブルスペースのサイズ変更 を参照してください。

  • innodb_data_home_dir

    コマンド行形式 --innodb-data-home-dir=dir_name
    システム変数 innodb_data_home_dir
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    ディレクトリ名

    InnoDB system tablespace データファイルのディレクトリパスの共通部分。 デフォルト値は、MySQL の data ディレクトリです。 設定が絶対パスで定義されていないかぎり、この設定は innodb_data_file_path 設定と連結されます。

    innodb_data_home_dir の値を指定する場合は、末尾にスラッシュが必要です。 例:

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

    この設定は、file-per-table テーブルスペースの場所には影響しません。

    関連情報については、セクション15.8.1「InnoDB の起動構成」を参照してください。

  • innodb_ddl_log_crash_reset_debug

    コマンド行形式 --innodb-ddl-log-crash-reset-debug[={OFF|ON}]
    システム変数 innodb_ddl_log_crash_reset_debug
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    DDL ログクラッシュインサーションカウンタを 1 にリセットするには、このデバッグオプションを有効にします。 このオプションは、デバッグサポートが WITH_DEBUG CMake オプションを使用してコンパイルされている場合にのみ使用できます。

  • innodb_deadlock_detect

    コマンド行形式 --innodb-deadlock-detect[={OFF|ON}]
    システム変数 innodb_deadlock_detect
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    このオプションは、デッドロック検出を無効にするために使用します。 同時実行性の高いシステムでは、多数のスレッドが同じロックを待機している場合、デッドロック検出によって速度が低下する可能性があります。 デッドロック検出を無効にし、デッドロック発生時のトランザクションロールバックの innodb_lock_wait_timeout 設定に依存する方が効率的な場合があります。

    関連情報については、セクション15.7.5.2「デッドロック検出」を参照してください。

  • innodb_dedicated_server

    コマンド行形式 --innodb-dedicated-server[={OFF|ON}]
    システム変数 innodb_dedicated_server
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    innodb_dedicated_server が有効な場合、InnoDB は次の変数を自動的に構成します:

    • innodb_buffer_pool_size

    • innodb_log_file_size

    • innodb_log_files_in_group (MySQL 8.0.14 の時点)

    • innodb_flush_method

    MySQL インスタンスが、使用可能なすべてのシステムリソースを使用できる専用サーバーに存在する場合にのみ、innodb_dedicated_server を有効にすることを検討してください。 MySQL インスタンスが他のアプリケーションとシステムリソースを共有している場合、innodb_dedicated_server を有効にすることはお薦めしません。

    詳細は、セクション15.8.12「専用 MySQL Server の自動構成の有効化」を参照してください。

  • innodb_default_row_format

    コマンド行形式 --innodb-default-row-format=value
    システム変数 innodb_default_row_format
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    列挙
    デフォルト値 DYNAMIC
    有効な値

    DYNAMIC

    COMPACT

    REDUNDANT

    innodb_default_row_format オプションは、InnoDB テーブルおよびユーザー作成一時テーブルのデフォルトの行形式を定義します。 デフォルト設定は DYNAMIC です。 許可されるその他の値は、COMPACT および REDUNDANT です。 system tablespace での使用がサポートされていない COMPRESSED 行フォーマットは、デフォルトとして定義できません。

    新しく作成されたテーブルでは、ROW_FORMAT オプションが明示的に指定されていない場合、または ROW_FORMAT=DEFAULT が使用されている場合に、innodb_default_row_format で定義された行形式が使用されます。

    ROW_FORMAT オプションが明示的に指定されていない場合、または ROW_FORMAT=DEFAULT が使用されている場合は、テーブルを再構築する操作によって、テーブルの行形式も innodb_default_row_format で定義された形式に暗黙的に変更されます。 詳細は、テーブルの行形式の定義を参照してください。

    クエリーを処理するためにサーバーによって作成された内部 InnoDB 一時テーブルは、innodb_default_row_format の設定に関係なく、DYNAMIC 行形式を使用します。

  • innodb_directories

    コマンド行形式 --innodb-directories=dir_name
    システム変数 innodb_directories
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    ディレクトリ名

    起動時にテーブルスペースファイルをスキャンするディレクトリを定義します。 このオプションは、サーバーがオフラインのときにテーブルスペースファイルを新しい場所に移動またはリストアする場合に使用します。 また、絶対パスを使用して作成されたテーブルスペースファイル、またはデータディレクトリの外部にあるテーブルスペースファイルのディレクトリを指定するためにも使用されます。

    クラッシュリカバリ中のテーブルスペースの検出は、redo ログで参照されるテーブルスペースを識別するために innodb_directories 設定に依存します。 詳細は、クラッシュリカバリ中のテーブルスペースの検出を参照してください。

    innodb_data_home_dirinnodb_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 スキャンは、指定されたディレクトリのサブディレクトリも走査します。 重複するディレクトリおよびサブディレクトリは、スキャンされるディレクトリのリストから破棄されます。

    詳細は、セクション15.6.3.6「サーバーがオフラインのときのテーブルスペースファイルの移動」を参照してください。

  • innodb_disable_sort_file_cache

    コマンド行形式 --innodb-disable-sort-file-cache[={OFF|ON}]
    システム変数 innodb_disable_sort_file_cache
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    マージソート一時ファイルのオペレーティングシステムファイルシステムキャッシュを無効にします。 その結果、このようなファイルが O_DIRECT の同等のものとともに開きます。

  • innodb_doublewrite

    コマンド行形式 --innodb-doublewrite[={OFF|ON}]
    システム変数 innodb_doublewrite
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    innodb_doublewrite 変数は、二重書込みバッファを有効にするかどうかを制御します。 ほとんどの場合、デフォルトで有効になっています。 二重書込みバッファを無効にするには、innodb_doublewrite を 0 に設定するか、--skip-innodb-doublewrite でサーバーを起動します。 たとえば、ベンチマークの実行時などのように、データ整合性よりもパフォーマンスに関心がある場合は、二重書込みバッファを無効にすることを検討してください。

    二重書き込みバッファーがアトミック書き込みをサポートする Fusion-io デバイス上にある場合、二重書き込みバッファーは自動的に無効になり、代わりに Fusion-io アトミック書き込みを使用してデータファイル書き込みが実行されます。 ただし、innodb_doublewrite 設定はグローバルであることに注意してください。 二重書き込みバッファーが無効になっている場合、Fusion-io ハードウェア上に存在しないデータファイルを含むすべてのデータファイルに対して無効になります。 この機能は Fusion-io ハードウェアでのみサポートされ、Linux の Fusion-io NVMFS でのみ有効になります。 この機能を最大限に活用するには、O_DIRECTinnodb_flush_method 設定をお薦めします。

    関連情報については、セクション15.6.4「二重書き込みバッファー」を参照してください。

  • innodb_doublewrite_batch_size

    コマンド行形式 --innodb-doublewrite-batch-size=#
    導入 8.0.20
    システム変数 innodb_doublewrite_batch_size
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 0
    最小値 0
    最大値 256

    バッチで書き込む二重書込みページの数を定義します。

    詳細は、セクション15.6.4「二重書き込みバッファー」を参照してください。

  • innodb_doublewrite_dir

    コマンド行形式 --innodb-doublewrite-dir=dir_name
    導入 8.0.20
    システム変数 innodb_doublewrite_dir
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    ディレクトリ名

    二重書込みファイルのディレクトリを定義します。 ディレクトリが指定されていない場合、二重書込みファイルが innodb_data_home_dir ディレクトリに作成され、指定されていない場合はデータディレクトリにデフォルト設定されます。

    詳細は、セクション15.6.4「二重書き込みバッファー」を参照してください。

  • innodb_doublewrite_files

    コマンド行形式 --innodb-doublewrite-files=#
    導入 8.0.20
    システム変数 innodb_doublewrite_files
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 innodb_buffer_pool_instances * 2
    最小値 2
    最大値 256

    二重書込みファイルの数を定義します。 デフォルトでは、バッファープールインスタンスごとに 2 つの二重書き込みファイルが作成されます。

    少なくとも 2 つの二重書込みファイルがあります。 二重書込みファイルの最大数は、バッファプールインスタンスの 2 倍です。 (バッファープールインスタンスの数は、innodb_buffer_pool_instances 変数によって制御されます。)

    詳細は、セクション15.6.4「二重書き込みバッファー」を参照してください。

  • innodb_doublewrite_pages

    コマンド行形式 --innodb-doublewrite-pages=#
    導入 8.0.20
    システム変数 innodb_doublewrite_pages
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 innodb_write_io_threads value
    最小値 innodb_write_io_threads value
    最大値 512

    バッチ書込みのスレッド当たりの二重書込みページの最大数を定義します。 値が指定されていない場合、innodb_doublewrite_pagesinnodb_write_io_threads 値に設定されます。

    詳細は、セクション15.6.4「二重書き込みバッファー」を参照してください。

  • innodb_extend_and_initialize

    コマンド行形式 --innodb=extend-and-initialize[={OFF|ON}]
    導入 8.0.22
    システム変数 innodb_extend_and_initialize
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    Linux システムの file-per-table テーブルスペースおよび一般テーブルスペースへの領域の割当て方法を制御します。

    有効にすると、InnoDB は新しく割り当てられたページに NULL を書き込みます。 無効にすると、領域は posix_fallocate() コールを使用して割り当てられます。このコールは、物理的に NULL を書き込まずに領域を予約します。

    詳細は、セクション15.6.3.8「Linux でのテーブルスペースの領域割当ての最適化」を参照してください。

  • innodb_fast_shutdown

    コマンド行形式 --innodb-fast-shutdown=#
    システム変数 innodb_fast_shutdown
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 1
    有効な値

    0

    1

    2

    InnoDBシャットダウンモードです。 値が 0 の場合、InnoDB は、停止前に slow shutdown、完全な purge および変更バッファのマージを実行します。 この値を 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 ヒントの適用 いいえ
    Integer
    デフォルト値 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 ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    innodb_file_per_table が有効な場合、テーブルはデフォルトで file-per-table テーブルスペースに作成されます。 無効にすると、デフォルトでシステムテーブルスペースにテーブルが作成されます。 file-per-table テーブルスペースについては、セクション15.6.3.2「File-Per-Table テーブルスペース」 を参照してください。 InnoDB システムテーブルスペースの詳細は、セクション15.6.3.1「システムテーブルスペース」 を参照してください。

    innodb_file_per_table 変数は、実行時に SET GLOBAL ステートメントを使用して構成するか、起動時にコマンドラインで指定するか、またはオプションファイルで指定できます。 実行時の構成には、グローバルシステム変数を設定するのに十分な権限 (セクション5.1.9.1「システム変数権限」 を参照) が必要で、すべての接続の操作にすぐに影響します。

    file-per-table テーブルスペースに存在するテーブルが切り捨てられるか削除されると、解放された領域がオペレーティングシステムに戻されます。 システムテーブルスペースに存在するテーブルの切捨てまたは削除では、システムテーブルスペースの領域のみが解放されます。 システムテーブルスペースのデータファイルは縮小しないため、システムテーブルスペースの空き領域は InnoDB データに再度使用できますが、オペレーティングシステムには戻されません。

    innodb_file_per-table 設定は、一時テーブルの作成には影響しません。 MySQL 8.0.14 では、一時テーブルはセッション一時テーブルスペースに作成され、その前にグローバル一時テーブルスペースに作成されます。 セクション15.6.3.5「一時テーブルスペース」を参照してください。

  • innodb_fill_factor

    コマンド行形式 --innodb-fill-factor=#
    システム変数 innodb_fill_factor
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 100
    最小値 10
    最大値 100

    InnoDB では、インデックスの作成または再構築時にバルクロードが実行されます。 このインデックス作成方法は、「ソートされたインデックス構築」と呼ばれます。

    innodb_fill_factor では、ソートされたインデックスの作成時に入力される各 B ツリーページ上の領域の割合が定義され、将来のインデックスの増加のために予約されている残りの領域が使用されます。 たとえば、innodb_fill_factor を 80 に設定すると、将来のインデックス増加のために各 B ツリーページの領域の 20% が予約されます。 実際の割合は異なる場合があります。 innodb_fill_factor 設定は、強い制限ではなくヒントとして解釈されます。

    innodb_fill_factor を 100 に設定すると、クラスタ化されたインデックスページの領域の 1/16 は将来のインデックスの増加に備えて解放されます。

    innodb_fill_factor は、B ツリーリーフページと非リーフページの両方に適用されます。 TEXT または BLOB エントリに使用される外部ページには適用されません。

    詳細は、セクション15.6.2.3「ソートされたインデックス構築」を参照してください。

  • innodb_flush_log_at_timeout

    コマンド行形式 --innodb-flush-log-at-timeout=#
    システム変数 innodb_flush_log_at_timeout
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 1
    最小値 1
    最大値 2700

    N 秒ごとにログを書き込み、フラッシュします。innodb_flush_log_at_timeout では、フラッシュを減らし、バイナリロググループのコミットのパフォーマンスへの影響を回避するために、フラッシュ間のタイムアウト期間を増やすことができます。 innodb_flush_log_at_timeout のデフォルト設定は 1 秒に 1 回です。

  • innodb_flush_log_at_trx_commit

    コマンド行形式 --innodb-flush-log-at-trx-commit=#
    システム変数 innodb_flush_log_at_trx_commit
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    列挙
    デフォルト値 1
    有効な値

    0

    1

    2

    commit 操作に対する厳密な ACID コンプライアンスと、コミット関連の I/O 操作がバッチで再配置および実行される場合に可能なパフォーマンスのバランスを制御します。 デフォルト値を変更することでパフォーマンスを向上できますが、クラッシュ時にトランザクションが失われる可能性があります。

    • ACID に完全に準拠するには、デフォルト設定の 1 が必要です。 ログは、トランザクションのコミットごとにディスクに書き込まれ、フラッシュされます。

    • 0 に設定すると、ログは 1 秒に 1 回書き込まれ、ディスクにフラッシュされます。 ログがフラッシュされていないトランザクションはクラッシュ時に失われる可能性があります。

    • 2 に設定すると、各トランザクションのコミット後にログが書き込まれ、1 秒に 1 回ディスクにフラッシュされます。 ログがフラッシュされていないトランザクションはクラッシュ時に失われる可能性があります。

    • 設定 0 および 2 の場合、秒単位のフラッシュは 100% 保証されません。 フラッシュは、DDL 変更や、innodb_flush_log_at_trx_commit 設定とは関係なくログがフラッシュされる原因となるその他の内部 InnoDB アクティビティが原因で頻繁に発生し、スケジューリングの問題が原因で頻繁に発生しない場合があります。 ログが 1 秒に 1 回フラッシュされると、クラッシュ時に最大 1 秒のトランザクションが失われる可能性があります。 ログが 1 秒に 1 回以上フラッシュされるか、それほど頻繁にフラッシュされない場合、失われる可能性のあるトランザクションの量はそれに応じて異なります。

    • ログのフラッシュ頻度は innodb_flush_log_at_timeout によって制御されます。これにより、ログのフラッシュ頻度を N 秒 (N1 ... 2700 で、デフォルト値は 1) に設定できます。 ただし、予期しない mysqld プロセスの終了によって、最大 N 秒のトランザクションが消去される可能性があります。

    • DDL 変更およびその他の内部 InnoDB アクティビティは、innodb_flush_log_at_trx_commit 設定とは関係なくログをフラッシュします。

    • InnoDB crash recovery は、innodb_flush_log_at_trx_commit の設定に関係なく機能します。 トランザクションは完全に適用されるか、完全に消去されるかのいずれかです。

    トランザクションで InnoDB が使用されるレプリケーションセットアップの持続性および一貫性を保つ場合:

    • バイナリロギングが有効になっている場合は、sync_binlog=1 を設定します。

    • 常に innodb_flush_log_at_trx_commit=1 を設定します。

    予期しない停止に対して最も回復可能なレプリカの設定の組合せの詳細は、セクション17.4.2「レプリカの予期しない停止の処理」 を参照してください。

    注意

    多くのオペレーティングシステムや一部のディスクハードウェアは、ディスクへのフラッシュ操作を行なったと欺きます。 フラッシュが行われていなくても、行われたと mysqld に通知される可能性があります。 この場合、推奨設定であってもトランザクションの永続性は保証されず、最悪の場合は停電によって InnoDB データが破損する可能性があります。 バッテリーバックアップのディスクキャッシュを SCSI ディスクコントローラ内やディスク自体で使用すると、ファイルフラッシュの速度が上がり、操作が安全になります。 ハードウェアキャッシュ内のディスク書き込みのキャッシュを無効にすることもできます。

  • innodb_flush_method

    コマンド行形式 --innodb-flush-method=value
    システム変数 innodb_flush_method
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    文字列
    デフォルト値 (Unix) fsync
    デフォルト値 (Windows) unbuffered
    有効な値 (Unix)

    fsync

    O_DSYNC

    littlesync

    nosync

    O_DIRECT

    O_DIRECT_NO_FSYNC

    有効な値 (Windows)

    unbuffered

    normal

    InnoDB data files および log files への flush データに使用される方法を定義します。これは I/O スループットに影響する可能性があります。

    Unix に似たシステムでは、デフォルト値は fsync です。 Windows では、デフォルト値は unbuffered です。

    注記

    MySQL 8.0 では、innodb_flush_method オプションを数値で指定できます。

    Unix に似たシステムの innodb_flush_method オプションには、次のものがあります:

    • fsync または 0: InnoDB は、fsync() システムコールを使用して、データファイルとログファイルの両方をフラッシュします。fsync がデフォルト設定です。

    • O_DSYNC または 1: InnoDB では、O_SYNC を使用してログファイルをオープンおよびフラッシュし、fsync() を使用してデータファイルをフラッシュします。 さまざまな種類の Unix で問題が発生しているため、InnoDB では直接 O_DSYNC が使用されません。

    • littlesync または 2: このオプションは内部パフォーマンステストに使用され、現在はサポートされていません。 独自のリスクで使用します。

    • nosync または 3: このオプションは内部パフォーマンステストに使用され、現在はサポートされていません。 独自のリスクで使用します。

    • O_DIRECT または 4: InnoDB では、O_DIRECT (または Solaris 上の directio()) を使用してデータファイルを開き、fsync() を使用してデータファイルとログファイルの両方をフラッシュします。 このオプションは、一部の GNU/Linux バージョン、FreeBSD、および Solaris で使用可能です。

    • O_DIRECT_NO_FSYNC: InnoDB は、I/O,のフラッシュ中に O_DIRECT を使用しますが、書込み操作のたびに fsync() システムコールをスキップします。

      MySQL 8.0.14 より前では、この設定は XFS や EXT4 などのファイルシステムには適していません。これらのファイルシステムでは、fsync() システムコールを使用してファイルシステムメタデータの変更を同期する必要があります。 ファイルシステムのメタデータ変更を同期するためにファイルシステムで fsync() システムコールが必要かどうかがわからない場合は、かわりに O_DIRECT を使用します。

      MySQL 8.0.14 の時点では、fsync() は、新しいファイルの作成後、ファイルサイズの増加後およびファイルのクローズ後にコールされ、ファイルシステムメタデータの変更が確実に同期されます。 各書込み操作の後も、fsync() システムコールはスキップされます。

      redo ログファイルとデータファイルが異なるストレージデバイスに存在し、データファイルの書込みがバッテリバックされていないデバイスキャッシュからフラッシュされる前に予期しない終了が発生した場合、データが失われる可能性があります。 redo ログファイルおよびデータファイルに別の記憶域デバイスを使用する場合、およびデータファイルがバッテリバックアップされていないキャッシュを持つデバイスに存在する場合は、かわりに O_DIRECT を使用します。

    Windows システム用の innodb_flush_method オプションには、次のものがあります:

    • unbuffered または 0: InnoDB は、シミュレートされた非同期 I/O およびバッファなし I/O を使用します。

    • normal または 1: InnoDB は、シミュレートされた非同期 I/O およびバッファされた I/O を使用します。

    各設定がパフォーマンスに与える影響は、ハードウェア構成およびワークロードによって異なります。 使用する設定を決定したり、デフォルト設定のままにするかどうかを決定したりするには、特定の構成でベンチマークを実施します。 設定ごとに fsync() 呼び出しの全体数を確認するには、Innodb_data_fsyncs ステータス変数を調査します。 ワークロードに読み取り操作と書き込み操作を混在させると、一部の設定での実行が影響を受ける可能性があります。 たとえば、ハードウェア RAID コントローラとバッテリバックアップ式書き込みキャッシュを備えたシステムでは、O_DIRECT は、InnoDB バッファープールとオペレーティングシステムのファイルシステムキャッシュの間の二重バッファリングを回避するのに役立ちます。 InnoDB のデータファイルとログファイルが SAN 上に配置されている一部のシステムでは、大部分の SELECT ステートメントを含む読み取り負荷の高いワークロードで、デフォルト値または O_DSYNC の速度が速くなる可能性があります。 このパラメータは、必ず、本番環境が反映されたハードウェアおよびワークロードでテストしてください。 一般的な I/O チューニングのアドバイスについては、セクション8.5.8「InnoDB ディスク I/O の最適化」を参照してください。

    innodb_dedicated_server が有効な場合、innodb_flush_method 値は明示的に定義されていなければ自動的に構成されます。 詳細は、セクション15.8.12「専用 MySQL Server の自動構成の有効化」を参照してください。

  • innodb_flush_neighbors

    コマンド行形式 --innodb-flush-neighbors=#
    システム変数 innodb_flush_neighbors
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    列挙
    デフォルト値 0
    有効な値

    0

    1

    2

    flushing で、InnoDB buffer pool のページが同じ extent の他の dirty pages もフラッシュするかどうかを指定します。

    • 0 に設定すると、innodb_flush_neighbors が無効になります。 同じエクステント内のダーティページはフラッシュされません。

    • 1 に設定すると、連続したダーティページが同じエクステントにフラッシュされます。

    • 2 に設定すると、ダーティページが同じエクステントでフラッシュされます。

    テーブルデータが従来の HDD ストレージデバイスに格納されている場合は、1 回の操作でこのような隣接ページをフラッシュすると、さまざまな時間に個々のページをフラッシュする場合と比較して、(主にディスクシーク操作の) I/O オーバーヘッドが削減されます。 SSD に格納されているテーブルデータの場合、シーク時間は重要な要因ではなく、このオプションを 0 に設定して書込み操作を分散できます。 関連情報については、セクション15.8.3.5「バッファープールのフラッシュの構成」を参照してください。

  • innodb_flush_sync

    コマンド行形式 --innodb-flush-sync[={OFF|ON}]
    システム変数 innodb_flush_sync
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    innodb_flush_sync 変数はデフォルトで有効になっており、checkpoints で発生する I/O アクティビティのバースト中に innodb_io_capacity 設定が無視されます。 innodb_io_capacity 設定で定義された I/O レートに準拠するには、innodb_flush_sync を無効にします。

    innodb_flush_sync 変数の構成の詳細は、セクション15.8.7「InnoDB I/O Capacity の構成」 を参照してください。

  • innodb_flushing_avg_loops

    コマンド行形式 --innodb-flushing-avg-loops=#
    システム変数 innodb_flushing_avg_loops
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 30
    最小値 1
    最大値 1000

    InnoDB が以前に計算されたフラッシュ状態のスナップショットを保持し、adaptive flushingworkloads の変更にどのくらい迅速に応答するかを制御する反復の数。 この値を大きくすると、ワークロードが変化するにつれて、フラッシュ操作の速度が円滑かつ徐々に変化します。 この値を小さくすると、適応型フラッシュがワークロードの変化にすばやく適応します。これにより、ワークロードが突然に増減した場合に、フラッシュアクティビティーが急増する可能性があります。

    関連情報については、セクション15.8.3.5「バッファープールのフラッシュの構成」を参照してください。

  • innodb_force_load_corrupted

    コマンド行形式 --innodb-force-load-corrupted[={OFF|ON}]
    システム変数 innodb_force_load_corrupted
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    破損としてマークされたテーブルを起動時に InnoDB がロードできるようにします。 トラブルシューティング時に、何も対処しなければアクセスできないデータをリカバリする際にのみ使用してください。 トラブルシューティングが完了したら、この設定を無効にしてサーバーを再起動します。

  • innodb_force_recovery

    コマンド行形式 --innodb-force-recovery=#
    システム変数 innodb_force_recovery
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 0
    最小値 0
    最大値 6

    クラッシュリカバリモードです。一般に、重大なトラブルシューティングの状況でのみ変更されます。 指定可能な値は 0 から 6 までです。 これらの値の意味および innodb_force_recovery に関する重要な情報については、セクション15.21.2「InnoDB のリカバリの強制的な実行」を参照してください。

    警告

    InnoDB を起動してテーブルをダンプできるように、緊急時にはこの変数を 0 より大きい値にのみ設定してください。 安全策として、innodb_force_recovery が 0 より大きい場合、InnoDBINSERTUPDATE、または DELETE 操作を回避します。 innodb_force_recovery 設定が 4 以上の場合、InnoDB は読取り専用モードになります。

    レプリケーションではレプリカステータスログが InnoDB テーブルに格納されるため、これらの制限により、レプリケーション管理コマンドがエラーで失敗する場合があります。

  • innodb_fsync_threshold

    コマンド行形式 --innodb-fsync-threshold=#
    導入 8.0.13
    システム変数 innodb_fsync_threshold
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 0
    最小値 0
    最大値 2**64-1

    デフォルトでは、InnoDB が新しいログファイルやテーブルスペースファイルなどの新しいデータファイルを作成すると、ファイルはディスクにフラッシュされる前にオペレーティングシステムキャッシュに完全に書き込まれるため、大量のディスク書込みアクティビティが一度に発生する可能性があります。 オペレーティングシステムキャッシュから定期的にデータを強制的に小さいフラッシュするには、innodb_fsync_threshold 変数を使用してしきい値をバイト単位で定義します。 バイトしきい値に達すると、オペレーティングシステムキャッシュの内容がディスクにフラッシュされます。 デフォルト値の 0 では、デフォルトの動作が強制されます。つまり、ファイルがキャッシュに完全に書き込まれた後にのみ、データがディスクにフラッシュされます。

    複数の MySQL インスタンスが同じストレージデバイスを使用している場合は、より小さい定期的なフラッシュを強制的に実行するためのしきい値を指定すると有益です。 たとえば、新しい MySQL インスタンスとそれに関連付けられたデータファイルを作成すると、ディスク書込みアクティビティが大きくなり、同じストレージデバイスを使用する他の MySQL インスタンスのパフォーマンスが低下する可能性があります。 しきい値を構成すると、書込みアクティビティでのこのようなサージの回避に役立ちます。

  • innodb_ft_aux_table

    システム変数 innodb_ft_aux_table
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    文字列

    FULLTEXT インデックスを含む InnoDB テーブルの修飾名を指定します。 この変数は診断のために使用され、実行時にのみ設定できます。 例:

    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 に、指定したテーブルの検索インデックスに関する情報が表示されます。

    詳細は、セクション15.15.4「InnoDB INFORMATION_SCHEMA FULLTEXT インデックステーブル」を参照してください。

  • innodb_ft_cache_size

    コマンド行形式 --innodb-ft-cache-size=#
    システム変数 innodb_ft_cache_size
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 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 ヒントの適用 いいえ
    Boolean
    デフォルト値 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 ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    インデックスの作成時に、一連のストップワードInnoDBFULLTEXT インデックスに関連付けられることを指定します。 innodb_ft_user_stopword_table オプションが設定されている場合は、そのテーブルからストップワードが取得されます。 そうでなければ、innodb_ft_server_stopword_table オプションが設定されている場合は、そのテーブルからストップワードが取得されます。 それ以外の場合は、組み込みのデフォルトストップワードセットが使用されます。

    詳細は、セクション12.10.4「全文ストップワード」を参照してください。

  • innodb_ft_max_token_size

    コマンド行形式 --innodb-ft-max-token-size=#
    システム変数 innodb_ft_max_token_size
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 84
    最小値 10
    最大値 84

    InnoDB FULLTEXT インデックスに格納される単語の最大文字長。 この値に制限を設定すると、実在の単語ではなく、検索語句になる可能性の低い英字の任意のコレクションや長いキーワードが省略されることで、インデックスのサイズが削減されるため、クエリーの速度が上がります。

    詳細は、セクション12.10.6「MySQL の全文検索の微調整」を参照してください。

  • innodb_ft_min_token_size

    コマンド行形式 --innodb-ft-min-token-size=#
    システム変数 innodb_ft_min_token_size
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 3
    最小値 0
    最大値 16

    InnoDB FULLTEXT インデックスに格納される単語の最小長。 この値を大きくすると、英語の ato などの検索コンテキストで重要ではない一般的な単語が省略されるため、インデックスのサイズが減り、クエリーが高速化されます。 内容で CJK (中国語、日本語、韓国語) 文字セットが使用されている場合は、値 1 を指定します。

    詳細は、セクション12.10.6「MySQL の全文検索の微調整」を参照してください。

  • innodb_ft_num_word_optimize

    コマンド行形式 --innodb-ft-num-word-optimize=#
    システム変数 innodb_ft_num_word_optimize
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 2000
    最小値 1000
    最大値 10000

    InnoDBFULLTEXT インデックスでの各 OPTIMIZE TABLE 操作時に処理される単語数です。 全文検索インデックスを含むテーブルへの一括挿入または一括更新操作では、すべての変更を組み込むために大量のインデックスのメンテナンスが必要となる可能性があるため、それぞれが最後に終了した場所から再開する一連の OPTIMIZE TABLE ステートメントを実行するとよいでしょう。

    詳細は、セクション12.10.6「MySQL の全文検索の微調整」を参照してください。

  • innodb_ft_result_cache_limit

    コマンド行形式 --innodb-ft-result-cache-limit=#
    システム変数 innodb_ft_result_cache_limit
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 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 テーブルに対応した独自の InnoDBFULLTEXT インデックスストップワードリストを指定する際に使用されます。 特定の InnoDB テーブルに独自のストップワードリストを構成するには、innodb_ft_user_stopword_table を使用します。

    db_name/table_name の形式で、innodb_ft_server_stopword_table をストップワードリストを含むテーブルの名前に設定します。

    innodb_ft_server_stopword_table を構成する前に、ストップワードテーブルが存在する必要があります。FULLTEXT インデックスを作成する前に、innodb_ft_enable_stopword を有効にし、innodb_ft_server_stopword_table オプションを構成する必要があります。

    ストップワードテーブルは、value という名前の単一の VARCHAR カラムを含む InnoDB テーブルである必要があります。

    詳細は、セクション12.10.4「全文ストップワード」を参照してください。

  • innodb_ft_sort_pll_degree

    コマンド行形式 --innodb-ft-sort-pll-degree=#
    システム変数 innodb_ft_sort_pll_degree
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 2
    最小値 1
    最大値 32

    search index の構築時に InnoDB FULLTEXT インデックスのテキストをインデックス付けおよびトークン化するためにパラレルで使用されるスレッドの数。

    関連情報は、セクション15.6.2.4「InnoDB FULLTEXT インデックス」 および innodb_sort_buffer_size を参照してください。

  • innodb_ft_total_cache_size

    コマンド行形式 --innodb-ft-total-cache-size=#
    システム変数 innodb_ft_total_cache_size
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 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

    このオプションは、特定のテーブルに独自の InnoDBFULLTEXT インデックスストップワードリストを指定する際に使用されます。 すべての InnoDB テーブル用に独自のストップワードリストを構成するには、innodb_ft_server_stopword_table を使用します。

    db_name/table_name の形式で、innodb_ft_user_stopword_table をストップワードリストを含むテーブルの名前に設定します。

    innodb_ft_user_stopword_table を構成する前に、ストップワードテーブルが存在する必要があります。FULLTEXT インデックスを作成する前に、innodb_ft_enable_stopword を有効にし、innodb_ft_user_stopword_table を構成する必要があります。

    ストップワードテーブルは、value という名前の単一の VARCHAR カラムを含む InnoDB テーブルである必要があります。

    詳細は、セクション12.10.4「全文ストップワード」を参照してください。

  • innodb_idle_flush_pct

    コマンド行形式 --innodb-idle-flush-pct=#
    導入 8.0.18
    システム変数 innodb_idle_flush_pct
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 100
    最小値 0
    最大値 100

    InnoDB がアイドル状態の場合のページフラッシュを制限します。 innodb_idle_flush_pct 値は、InnoDB で使用可能な I/O 操作数/秒を定義する innodb_io_capacity 設定の割合です。 詳細は、アイドル期間中のバッファフラッシュの制限を参照してください。

  • innodb_io_capacity

    コマンド行形式 --innodb-io-capacity=#
    システム変数 innodb_io_capacity
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 200
    最小値 100
    最大値 (64 ビットプラットフォーム) 2**64-1
    最大値 (32 ビットプラットフォーム) 2**32-1

    innodb_io_capacity 変数は、buffer pool からの flushing ページや change buffer からのデータのマージなど、InnoDB バックグラウンドタスクで使用可能な秒当たりの I/O 操作数 (IOPS) を定義します。

    innodb_io_capacity 変数の構成の詳細は、セクション15.8.7「InnoDB I/O Capacity の構成」 を参照してください。

  • innodb_io_capacity_max

    コマンド行形式 --innodb-io-capacity-max=#
    システム変数 innodb_io_capacity_max
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 see description
    最小値 100
    最大値 (32 ビットプラットフォーム) 2**32-1
    最大値 (Unix, 64 ビットプラットフォーム) 2**64-1
    最大値 (Windows, 64 ビットプラットフォーム) 2**32-1

    フラッシュアクティビティが遅れている場合、InnoDBinnodb_io_capacity 変数で定義されているよりも高い速度の I/O 操作/秒 (IOPS) で、より積極的にフラッシュできます。 innodb_io_capacity_max 変数は、このような状況で InnoDB バックグラウンドタスクによって実行される IOPS の最大数を定義します。

    innodb_io_capacity_max 変数の構成の詳細は、セクション15.8.7「InnoDB I/O Capacity の構成」 を参照してください。

  • innodb_limit_optimistic_insert_debug

    コマンド行形式 --innodb-limit-optimistic-insert-debug=#
    システム変数 innodb_limit_optimistic_insert_debug
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 0
    最小値 0
    最大値 2**32-1

    B-tree ページ当たりのレコード数を制限します。 デフォルト値 0 は、制限が課されないことを意味します。 このオプションは、デバッグサポートが WITH_DEBUG CMake オプションを使用してコンパイルされている場合にのみ使用できます。

  • innodb_lock_wait_timeout

    コマンド行形式 --innodb-lock-wait-timeout=#
    システム変数 innodb_lock_wait_timeout
    スコープ グローバル、セッション
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 50
    最小値 1
    最大値 1073741824

    行ロックが解除されるまで InnoDB トランザクションが待機する時間の長さ (秒単位) です。 デフォルト値は 50 秒です。 別の InnoDB トランザクションでロックされている行へのアクセスを試みるトランザクションは、行への書き込みアクセスを最大でこの秒数間待機してから、次のエラーを発行します。

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

    ロック待機のタイムアウトが発生すると、(トランザクション全体ではなく) 現在のステートメントがロールバックされます。 トランザクション全体をロールバックするには、--innodb-rollback-on-timeout オプションを使用してサーバーを起動します。 セクション15.21.4「InnoDB のエラー処理」も参照してください。

    高度にインタラクティブなアプリケーションまたは OLTP システムでは、ユーザーのフィードバックをすばやく表示したり、あとで処理するために更新をキューに入れたりするために、この値を小さくするとよいでしょう。 長時間実行されるバックエンド操作 (その他の大規模な挿入操作や更新操作が完了するまで待機するデータウェアハウスでの変換ステップなど) では、この値を大きくするとよいでしょう。

    innodb_lock_wait_timeout は、InnoDB の行ロックに適用されます。 MySQL のテーブルロックInnoDB 内部では発生せず、このタイムアウトはテーブルロックの待機には適用されません。

    InnoDB ではデッドロックが即時に検出され、デッドロックされたトランザクションのいずれかがロールバックされるため、innodb_deadlock_detect が有効な場合 (デフォルト)、ロック待機タイムアウト値は deadlocks には適用されません。 innodb_deadlock_detect が無効になっている場合、InnoDB はデッドロック発生時のトランザクションロールバックを innodb_lock_wait_timeout に依存します。 セクション15.7.5.2「デッドロック検出」を参照してください。

    innodb_lock_wait_timeout は、実行時に SET GLOBAL または SET SESSION ステートメントとともに設定できます。 GLOBAL 設定を変更するには、グローバルシステム変数を設定するのに十分な権限 (セクション5.1.9.1「システム変数権限」 を参照) が必要であり、その後接続するすべてのクライアントの操作に影響します。 任意のクライアントが innodb_lock_wait_timeoutSESSION 設定を変更でき、そのクライアントのみが影響を受けます。

  • innodb_log_buffer_size

    コマンド行形式 --innodb-log-buffer-size=#
    システム変数 innodb_log_buffer_size
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 16777216
    最小値 1048576
    最大値 4294967295

    ディスク上のログファイルに書き込む際に InnoDB で使用されるバッファーのサイズ (バイト単位) です。 デフォルトは 16M バイトです。 大規模な log buffer では、トランザクション commit の前にログをディスクに書き込むことなく、大規模な transactions を実行できます。 したがって、多数の行を更新、挿入、または削除するトランザクションの場合、ログバッファーを大きくすると、ディスク I/O を節約できます。 関連情報については、メモリー構成,およびセクション8.5.4「InnoDB redo ロギングの最適化」を参照してください。 一般的な I/O チューニングのアドバイスについては、セクション8.5.8「InnoDB ディスク I/O の最適化」を参照してください。

  • innodb_log_checkpoint_fuzzy_now

    コマンド行形式 --innodb-log-checkpoint-fuzzy-now[={OFF|ON}]
    導入 8.0.13
    システム変数 innodb_log_checkpoint_fuzzy_now
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    InnoDB にファジーチェックポイントの書込みを強制するには、このデバッグオプションを有効にします。 このオプションは、デバッグサポートが WITH_DEBUG CMake オプションを使用してコンパイルされている場合にのみ使用できます。

  • innodb_log_checkpoint_now

    コマンド行形式 --innodb-log-checkpoint-now[={OFF|ON}]
    システム変数 innodb_log_checkpoint_now
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    InnoDB にチェックポイントの書込みを強制するには、このデバッグオプションを有効にします。 このオプションは、デバッグサポートが WITH_DEBUG CMake オプションを使用してコンパイルされている場合にのみ使用できます。

  • innodb_log_checksums

    コマンド行形式 --innodb-log-checksums[={OFF|ON}]
    システム変数 innodb_log_checksums
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    redo ログページのチェックサムを有効または無効にします。

    innodb_log_checksums=ON では、redo ログページの CRC-32C チェックサムアルゴリズムを有効にします。 innodb_log_checksums が無効な場合、redo ログページのチェックサムフィールドの内容は無視されます。

    redo ログヘッダーページおよび redo ログチェックポイントページのチェックサムは無効化されません。

  • innodb_log_compressed_pages

    コマンド行形式 --innodb-log-compressed-pages[={OFF|ON}]
    システム変数 innodb_log_compressed_pages
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    re-compressed pages のイメージを redo log に書き込むかどうかを指定します。 圧縮されたデータが変更されると、再圧縮が発生する場合があります。

    innodb_log_compressed_pages は、リカバリ時に異なるバージョンの zlib 圧縮アルゴリズムが使用された場合に発生する可能性がある破損を防ぐために、デフォルトで有効になっています。 zlib のバージョンが変更されないことが確実な場合は、innodb_log_compressed_pages を無効にして、圧縮データを変更するワークロードの redo ログ生成を減らすことができます。

    innodb_log_compressed_pages の有効化または無効化の影響を測定するには、同じワークロードで両方の設定の redo ログ生成を比較します。 redo ログ生成の測定オプションには、SHOW ENGINE INNODB STATUS 出力の LOG セクションでの Log sequence number (LSN) の監視、または redo ログファイルに書き込まれたバイト数の Innodb_os_log_written ステータスの監視が含まれます。

    関連情報については、セクション15.9.1.6「OLTP ワークロードの圧縮」を参照してください。

  • innodb_log_file_size

    コマンド行形式 --innodb-log-file-size=#
    システム変数 innodb_log_file_size
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 50331648
    最小値 4194304
    最大値 512GB / innodb_log_files_in_group

    ロググループ内の各ログファイルのサイズ (バイト単位) です。 ログファイルを結合したサイズ (innodb_log_file_size * innodb_log_files_in_group) は、512G バイトよりもわずかに小さい最大値を上回ることができません。 たとえば、255 GB のログファイルのペアは制限に近づいていますが、それを超えていません。 デフォルト値は 48M バイトです。

    一般に、ログファイルの合計サイズは、サーバーがワークロードアクティビティのピークおよびトラブルをスムーズにできる十分な大きさである必要があります。これは、書込みアクティビティを 1 時間以上処理するための十分な redo ログ領域があることを意味することがよくあります。 この値が大きいほど、バッファプールで必要なチェックポイントフラッシュアクティビティが少なくなり、ディスク I/O が節約されます。 ログファイルが大きいほど、crash recovery も遅くなります。

    最小の innodb_log_file_size は 4MB です。

    関連情報については、redo ログファイル構成を参照してください。 一般的な I/O チューニングのアドバイスについては、セクション8.5.8「InnoDB ディスク I/O の最適化」を参照してください。

    innodb_dedicated_server が有効な場合、innodb_log_file_size 値は明示的に定義されていなければ自動的に構成されます。 詳細は、セクション15.8.12「専用 MySQL Server の自動構成の有効化」を参照してください。

  • innodb_log_files_in_group

    コマンド行形式 --innodb-log-files-in-group=#
    システム変数 innodb_log_files_in_group
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 2
    最小値 2
    最大値 100

    ロググループ内のログファイルの数です。 InnoDB はファイルに輪状に書き込みをします。 デフォルト (推奨) 値は 2 です。 ファイルの場所は、innodb_log_group_home_dir によって指定されます。 ログファイルを結合したサイズ (innodb_log_file_size * innodb_log_files_in_group) は、最大で 512G バイトにすることができます。

    関連情報については、redo ログファイル構成を参照してください。

  • innodb_log_group_home_dir

    コマンド行形式 --innodb-log-group-home-dir=dir_name
    システム変数 innodb_log_group_home_dir
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    ディレクトリ名

    InnoDBRedo ログファイルへのディレクトリパスです。この数は、innodb_log_files_in_group で指定されます。 どの InnoDB ログ変数も指定しない場合は、デフォルトで、MySQL データディレクトリ内に ib_logfile0 および ib_logfile1 という名前の 2 つのファイルが作成されます。 ログファイルのサイズは、innodb_log_file_size システム変数によって指定されます。

    関連情報については、redo ログファイル構成を参照してください。

  • innodb_log_spin_cpu_abs_lwm

    コマンド行形式 --innodb-log-spin-cpu-abs-lwm=#
    システム変数 innodb_log_spin_cpu_abs_lwm
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 80
    最小値 0
    最大値 4294967295

    フラッシュされた redo の待機中にユーザースレッドがスピンしなくなる CPU 使用率の最小量を定義します。 この値は、CPU コア使用率の合計として表されます。 たとえば、80 のデフォルト値は、単一の CPU コアの 80% です。 マルチコアプロセッサを搭載したシステムでは、150 の値は、1 つの CPU コアの 100% 使用率と 2 つ目の CPU コアの 50% 使用率を表します。

    関連情報については、セクション8.5.4「InnoDB redo ロギングの最適化」を参照してください。

  • innodb_log_spin_cpu_pct_hwm

    コマンド行形式 --innodb-log-spin-cpu-pct-hwm=#
    システム変数 innodb_log_spin_cpu_pct_hwm
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 50
    最小値 0
    最大値 100

    フラッシュされた redo の待機中にユーザースレッドがスピンしなくなる CPU 使用率の最大量を定義します。 この値は、すべての CPU コアの合計処理能力の割合として表されます。 デフォルト値は 50% です。 たとえば、2 つの CPU コアの 100% 使用率は、4 つの CPU コアを持つサーバーでの CPU 処理能力の合計の 50% です。

    innodb_log_spin_cpu_pct_hwm 変数は、プロセッサアフィニティを考慮します。 たとえば、サーバーに 48 個のコアがあり、mysqld プロセスが 4 個の CPU コアにのみ固定されている場合、他の 44 個の CPU コアは無視されます。

    関連情報については、セクション8.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 ヒントの適用 いいえ
    Integer
    デフォルト値 400
    最小値 0
    最大値 (64 ビットプラットフォーム) 2**64-1
    最大値 (32 ビットプラットフォーム) 2**32-1

    フラッシュされた redo の待機中にユーザースレッドがスピンしなくなる最大平均ログフラッシュ時間を定義します。 デフォルト値は 400 マイクロ秒です。

    関連情報については、セクション8.5.4「InnoDB redo ロギングの最適化」を参照してください。

  • innodb_log_write_ahead_size

    コマンド行形式 --innodb-log-write-ahead-size=#
    システム変数 innodb_log_write_ahead_size
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 8192
    最小値 512 (log file block size)
    最大値 Equal to innodb_page_size

    redo ログの先行書込みブロックサイズをバイト単位で定義します。 read-on-write を回避するには、オペレーティングシステムまたはファイルシステムのキャッシュブロックサイズと一致するように innodb_log_write_ahead_size を設定します。 デフォルト設定は 8192 バイトです。 読取り/書込みは、redo ログの先行書込みブロックサイズとオペレーティングシステムまたはファイルシステムのキャッシュブロックサイズが一致しないために、redo ログブロックがオペレーティングシステムまたはファイルシステムに完全にキャッシュされない場合に発生します。

    innodb_log_write_ahead_size の有効な値は、InnoDB ログファイルのブロックサイズ (2 n) の倍数です。 最小値は、InnoDB ログファイルのブロックサイズ (512) です。 最小値が指定されている場合、ライトアヘッドは発生しません。 最大値は innodb_page_size 値と同じです。 innodb_log_write_ahead_sizeinnodb_page_size 値より大きい値を指定すると、innodb_log_write_ahead_size 設定は innodb_page_size 値に切り捨てられます。

    オペレーティングシステムまたはファイルシステムのキャッシュブロックサイズに対する innodb_log_write_ahead_size 値の設定が低すぎると、read-on-write が発生します。 値を高く設定しすぎると、一度に複数のブロックが書き込まれるため、ログファイル書込みの fsync パフォーマンスにわずかな影響を与える可能性があります。

    関連情報については、セクション8.5.4「InnoDB redo ロギングの最適化」を参照してください。

  • innodb_log_writer_threads

    コマンド行形式 --innodb-log-writer-threads[={OFF|ON}]
    導入 8.0.22
    システム変数 innodb_log_writer_threads
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    ログバッファからシステムバッファに redo ログレコードを書き込み、システムバッファを redo ログファイルにフラッシュするための専用のログライタースレッドを有効にします。 専用ログライタースレッドを使用すると、同時実行性の高いシステムのパフォーマンスを向上させることができますが、同時実行性の低いシステムでは、専用ログライタースレッドを無効にすると、パフォーマンスが向上します。

    詳細は、セクション8.5.4「InnoDB redo ロギングの最適化」を参照してください。

  • innodb_lru_scan_depth

    コマンド行形式 --innodb-lru-scan-depth=#
    システム変数 innodb_lru_scan_depth
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 1024
    最小値 100
    最大値 (64 ビットプラットフォーム) 2**64-1
    最大値 (32 ビットプラットフォーム) 2**32-1

    InnoDBバッファープールでのフラッシュ操作のアルゴリズムおよびヒューリスティクスに影響を与えるパラメータです。 主に、I/O インテンシブなワークロードを調整するパフォーマンスの専門家が関心を持つものです。 バッファプールインスタンスごとに、フラッシュする dirty pages を検索するページクリーナスレッドスキャンをバッファプール LRU ページにリストする距離を指定します。 これは、1 秒に 1 回実行されるバックグラウンド操作です。

    デフォルトより小さい設定は、通常、ほとんどのワークロードに適しています。 必要以上の値を指定すると、パフォーマンスに影響する可能性があります。 通常のワークロードでスペア I/O 容量がある場合のみ、値を増やすことを検討してください。 逆に、書込み集中型のワークロードが I/O の容量を満たしている場合は、特に大きなバッファプールの場合に値を減らします。

    innodb_lru_scan_depth をチューニングする場合は、小さい値から始めて、ゼロの空きページが表示されることがほとんどないという目標で設定を上方に構成します。 また、innodb_lru_scan_depth * innodb_buffer_pool_instances は毎秒ページクリーナスレッドによって実行される作業量を定義するため、バッファプールインスタンスの数を変更するときに innodb_lru_scan_depth を調整することを検討してください。

    関連情報については、セクション15.8.3.5「バッファープールのフラッシュの構成」を参照してください。 一般的な I/O チューニングのアドバイスについては、セクション8.5.8「InnoDB ディスク I/O の最適化」を参照してください。

  • innodb_max_dirty_pages_pct

    コマンド行形式 --innodb-max-dirty-pages-pct=#
    システム変数 innodb_max_dirty_pages_pct
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    数値
    デフォルト値 90
    最小値 0
    最大値 99.99

    InnoDB は、ダーティーページの割合がこの値を超えないように、バッファープールからデータをフラッシュしようと試みます。

    innodb_max_dirty_pages_pct 設定は、フラッシュアクティビティーのターゲットを確立します。 フラッシュの頻度には影響を与えません。 フラッシュの頻度の管理については、セクション15.8.3.5「バッファープールのフラッシュの構成」を参照してください。

    関連情報については、セクション15.8.3.5「バッファープールのフラッシュの構成」を参照してください。 一般的な I/O チューニングのアドバイスについては、セクション8.5.8「InnoDB ディスク I/O の最適化」を参照してください。

  • innodb_max_dirty_pages_pct_lwm

    コマンド行形式 --innodb-max-dirty-pages-pct-lwm=#
    システム変数 innodb_max_dirty_pages_pct_lwm
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    数値
    デフォルト値 10
    最小値 0
    最大値 99.99

    ダーティページ率を制御するために事前フラッシュが有効になる dirty pages の割合を表す最低水位標を定義します。 値 0 を指定すると、事前フラッシュ動作が完全に無効になります。 詳細は、セクション15.8.3.5「バッファープールのフラッシュの構成」を参照してください。

  • innodb_max_purge_lag

    コマンド行形式 --innodb-max-purge-lag=#
    システム変数 innodb_max_purge_lag
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 0
    最小値 0
    最大値 4294967295

    必要な最大パージラグを定義します。 この値を超えると、INSERTUPDATE および DELETE 操作に遅延が課され、パージが捕捉されるまでの時間が許可されます。 デフォルト値は 0 です。これは、最大パージラグおよび遅延がないことを意味します。

    詳細は、セクション15.8.9「パージ構成」を参照してください。

  • innodb_max_purge_lag_delay

    コマンド行形式 --innodb-max-purge-lag-delay=#
    システム変数 innodb_max_purge_lag_delay
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 0
    最小値 0
    最大値 10000000

    innodb_max_purge_lag しきい値を超えた場合に課される遅延の最大遅延をマイクロ秒単位で指定します。 指定された innodb_max_purge_lag_delay 値は、innodb_max_purge_lag 式で計算された遅延期間の上限です。

    詳細は、セクション15.8.9「パージ構成」を参照してください。

  • innodb_max_undo_log_size

    コマンド行形式 --innodb-max-undo-log-size=#
    システム変数 innodb_max_undo_log_size
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 1073741824
    最小値 10485760
    最大値 2**64-1

    undo テーブルスペースのしきい値サイズを定義します。 undo テーブルスペースがしきい値を超えると、innodb_undo_log_truncate が有効になっているときに切り捨てられるようにマークできます。 デフォルト値は 1073741824 バイト (1024 MiB) です。

    詳細は、undo テーブルスペースの切捨てを参照してください。

  • innodb_merge_threshold_set_all_debug

    コマンド行形式 --innodb-merge-threshold-set-all-debug=#
    システム変数 innodb_merge_threshold_set_all_debug
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 50
    最小値 1
    最大値 50

    ディクショナリキャッシュに現在存在するすべてのインデックスの現在の MERGE_THRESHOLD 設定をオーバーライドするインデックスページのページフルパーセント値を定義します。 このオプションは、デバッグサポートが WITH_DEBUG CMake オプションを使用してコンパイルされている場合にのみ使用できます。 関連情報については、セクション15.8.11「インデックスページのマージしきい値の構成」を参照してください。

  • innodb_monitor_disable

    コマンド行形式 --innodb-monitor-disable={counter|module|pattern|all}
    システム変数 innodb_monitor_disable
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    文字列

    InnoDB metrics counters を無効にします。 カウンタデータは INFORMATION_SCHEMA.INNODB_METRICS テーブルを使用してクエリーすることができます。 使用法については、セクション15.15.6「InnoDB INFORMATION_SCHEMA メトリックテーブル」を参照してください。

    innodb_monitor_disable='latch'は、SHOW ENGINE INNODB MUTEX の統計収集を無効にします。 詳細は、セクション13.7.7.15「SHOW ENGINE ステートメント」を参照してください。

  • innodb_monitor_enable

    コマンド行形式 --innodb-monitor-enable={counter|module|pattern|all}
    システム変数 innodb_monitor_enable
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    文字列

    InnoDB metrics counters を有効にします。 カウンタデータは INFORMATION_SCHEMA.INNODB_METRICS テーブルを使用してクエリーすることができます。 使用法については、セクション15.15.6「InnoDB INFORMATION_SCHEMA メトリックテーブル」を参照してください。

    innodb_monitor_enable='latch'では、SHOW ENGINE INNODB MUTEX の統計収集が可能です。 詳細は、セクション13.7.7.15「SHOW ENGINE ステートメント」を参照してください。

  • innodb_monitor_reset

    コマンド行形式 --innodb-monitor-reset={counter|module|pattern|all}
    システム変数 innodb_monitor_reset
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    列挙
    デフォルト値 empty string
    有効な値

    counter

    module

    pattern

    all

    InnoDB metrics counters のカウント値をゼロにリセットします。 カウンタデータは INFORMATION_SCHEMA.INNODB_METRICS テーブルを使用してクエリーすることができます。 使用法については、セクション15.15.6「InnoDB INFORMATION_SCHEMA メトリックテーブル」を参照してください。

    innodb_monitor_reset='latch'は、SHOW ENGINE INNODB MUTEX によって報告された統計をリセットします。 詳細は、セクション13.7.7.15「SHOW ENGINE ステートメント」を参照してください。

  • innodb_monitor_reset_all

    コマンド行形式 --innodb-monitor-reset-all={counter|module|pattern|all}
    システム変数 innodb_monitor_reset_all
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    列挙
    デフォルト値 empty string
    有効な値

    counter

    module

    pattern

    all

    InnoDB metrics counters のすべての値 (最小、最大など) をリセットします。 カウンタデータは INFORMATION_SCHEMA.INNODB_METRICS テーブルを使用してクエリーすることができます。 使用法については、セクション15.15.6「InnoDB INFORMATION_SCHEMA メトリックテーブル」を参照してください。

  • innodb_numa_interleave

    コマンド行形式 --innodb-numa-interleave[={OFF|ON}]
    システム変数 innodb_numa_interleave
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    NUMA インターリーブメモリーポリシーを有効にして、InnoDB バッファプールを割り当てます。 innodb_numa_interleave が有効な場合、NUMA メモリーポリシーは mysqld プロセスに対して MPOL_INTERLEAVE に設定されます。 InnoDB バッファプールが割り当てられると、NUMA メモリーポリシーは MPOL_DEFAULT に戻されます。 innodb_numa_interleave オプションを使用できるようにするには、NUMA 対応の Linux システムで MySQL をコンパイルする必要があります。

    CMake では、現在のプラットフォームに NUMA サポートがあるかどうかに基づいて、デフォルトの WITH_NUMA 値が設定されます。 詳細は、セクション2.9.7「MySQL ソース構成オプション」を参照してください。

  • innodb_old_blocks_pct

    コマンド行形式 --innodb-old-blocks-pct=#
    システム変数 innodb_old_blocks_pct
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 37
    最小値 5
    最大値 95

    古いブロックサブリストで使用される InnoDBバッファープールの概算割合を指定します。 値の範囲は 5 から 95 です。 デフォルト値は 37 (つまり、プールの 3/8 ) です。 多くの場合、innodb_old_blocks_time と組み合わせて使用されます。

    詳細は、セクション15.8.3.3「バッファープールをスキャンに耐えられるようにする」を参照してください。 バッファープールの管理、LRU アルゴリズム、および eviction ポリシーについては、セクション15.5.1「バッファプール」 を参照してください。

  • innodb_old_blocks_time

    コマンド行形式 --innodb-old-blocks-time=#
    システム変数 innodb_old_blocks_time
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 1000
    最小値 0
    最大値 2**32-1

    ゼロ以外の値は、full table scan の実行中など、短い期間のみ参照されるデータによって入力される buffer pool から保護します。 この値を大きくすると、テーブルの完全スキャンがバッファープール内にキャッシュされたデータとやりとりすることからさらに保護されます。

    新しいサブリストに移動する前に、古い sublist に挿入されたブロックが最初のアクセス後も保持される必要がある時間をミリ秒単位で指定します。 値を 0 にすると、古いサブリストに挿入されたブロックは、挿入後にどのくらいの期間でアクセスが発生するのかには関係なく、最初のアクセスの直後に新しいサブリストに移動します。 値が 0 より大きい場合、最初のアクセス後に少なくとも何ミリ秒もアクセスが発生するまで、ブロックは古いサブリストに残ります。 たとえば、1000 の値では、ブロックは最初のアクセス後、それらが新しいサブリストに移動される資格を得るまで、1 秒間古いサブリストにとどまります。

    デフォルト値は 1000 です。

    多くの場合、この変数は innodb_old_blocks_pct と組み合わせて使用されます。 詳細は、セクション15.8.3.3「バッファープールをスキャンに耐えられるようにする」を参照してください。 バッファープールの管理、LRU アルゴリズム、および eviction ポリシーについては、セクション15.5.1「バッファプール」 を参照してください。

  • innodb_online_alter_log_max_size

    コマンド行形式 --innodb-online-alter-log-max-size=#
    システム変数 innodb_online_alter_log_max_size
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 134217728
    最小値 65536
    最大値 2**64-1

    InnoDB テーブルの online DDL 操作中に使用される一時ログファイルのサイズの上限をバイト単位で指定します。 作成されるインデックスまたは変更されるテーブルごとに、このようなログファイルが 1 つ存在します。 このログファイルには、DDL 操作時にテーブルで挿入、更新、または削除されたデータが格納されます。 一時ログファイルは、innodb_sort_buffer_size の値で必要になったときに、最大で innodb_online_alter_log_max_size で指定された最大値まで拡張されます。 一時ログファイルが上限サイズを超えると、ALTER TABLE 操作は失敗し、コミットされていないすべての同時 DML 操作がロールバックされます。 したがって、このオプションの値を大きくすると、オンライン DDL 操作中に発生する DML が増えますが、ログからデータを適用するためにテーブルがロックされているときの DDL 操作の終了時の期間も長くなります。

  • innodb_open_files

    コマンド行形式 --innodb-open-files=#
    システム変数 innodb_open_files
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 -1 (自動サイズ設定を示します。このリテラル値を割り当てないでください)
    最小値 10
    最大値 4294967295

    この変数は、複数の InnoDB tablespaces を使用する場合にのみ関連します。 MySQL で一度に開いたままにできる .ibd ファイルの最大数が指定されます。 最小値は 10 です。 デフォルト値は、innodb_file_per_table が有効になっていない場合は 300 で、それ以外の場合は 300 以上および table_open_cache です。

    .ibd ファイルで使用されるファイルディスクリプタは、InnoDB テーブルでのみ使用されます。 これらは、open_files_limit システム変数で指定されたものとは独立しており、テーブルキャッシュの操作には影響しません。 一般的な I/O チューニングのアドバイスについては、セクション8.5.8「InnoDB ディスク I/O の最適化」を参照してください。

  • innodb_optimize_fulltext_only

    コマンド行形式 --innodb-optimize-fulltext-only[={OFF|ON}]
    システム変数 innodb_optimize_fulltext_only
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    InnoDB テーブルでの OPTIMIZE TABLE の動作方法を変更します。 FULLTEXT インデックスを含む InnoDB テーブルのメンテナンス操作時に、一時的に有効にするために使用されます。

    デフォルトでは、OPTIMIZE TABLE はテーブルの clustered index のデータを再編成します。 このオプションを有効にすると、OPTIMIZE TABLE はテーブルデータの再編成をスキップし、かわりに InnoDB FULLTEXT インデックスに対して新しく追加、削除および更新されたトークンデータを処理します。 詳細は、InnoDB 全文インデックスの最適化を参照してください。

  • innodb_page_cleaners

    コマンド行形式 --innodb-page-cleaners=#
    システム変数 innodb_page_cleaners
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 4
    最小値 1
    最大値 64

    バッファープールインスタンスからダーティーページをフラッシュするページクリーナースレッドの数。 ページクリーナスレッドは、フラッシュリストおよび LRU フラッシュを実行します。 ページクリーナスレッドが複数ある場合、バッファプールインスタンスごとにバッファプールのフラッシュタスクがアイドル状態のページクリーナスレッドにディスパッチされます。 innodb_page_cleaners のデフォルト値は 4 です。 ページクリーナスレッドの数がバッファプールインスタンスの数を超えると、innodb_page_cleaners は自動的に innodb_buffer_pool_instances と同じ値に設定されます。

    ダーティページをバッファプールインスタンスからデータファイルにフラッシュするときにワークロードが書込み IO バインドされている場合、およびシステムハードウェアに使用可能な容量がある場合は、ページクリーナスレッドの数を増やすと書込み IO スループットの向上に役立つことがあります。

    マルチスレッドページクリーナのサポートは、停止フェーズおよびリカバリフェーズまで拡張されています。

    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 によって管理されていないシステムでは、/etc/security/limits.confmysqld 実行ユーザー認可を構成できます。 たとえば、mysqldmysql ユーザーで実行されている場合、次の行を/etc/security/limits.conf に追加することで mysql ユーザーを認可できます:

    mysql              hard    nice       -20
    mysql              soft    nice       -20

    systemd 管理対象システムの場合は、ローカライズされた systemd 構成ファイルで LimitNICE=-20 を指定することで同じことを実現できます。 たとえば、/etc/systemd/system/mysqld.service.d/override.confoverride.conf という名前のファイルを作成し、次のエントリを追加します:

    [Service]
    LimitNICE=-20

    override.conf を作成または変更した後、systemd 構成をリロードし、MySQL サービスを再起動するように systemd に指示します:

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

    ローカライズされた systemd 構成ファイルの使用の詳細は、MySQL の systemd の構成 を参照してください。

    mysqld 実行ユーザーを認可した後、cat コマンドを使用して、mysqld プロセスに構成されている Nice 制限を確認します:

    shell> 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 tablespaces 用の page size を指定します。 値はバイト単位または KB 単位で指定できます。 たとえば、16K バイトのページサイズ値は 16384、16K バイト、または 16K と指定できます。

    innodb_page_size は、MySQL インスタンスの初期化前にのみ構成でき、後で変更することはできません。 値を指定しない場合、インスタンスはデフォルトのページサイズを使用して初期化されます。 セクション15.8.1「InnoDB の起動構成」を参照してください。

    32KB と 64KB の両方のページサイズで、行の最大長は約 16000 バイトです。 innodb_page_size が 32KB または 64KB に設定されている場合、ROW_FORMAT=COMPRESSED はサポートされません。 innodb_page_size=32KB の場合、エクステントサイズは 2MB です。 innodb_page_size=64KB の場合、エクステントサイズは 4MB です。32KB または 64KB のページサイズを使用する場合は、innodb_log_buffer_size を 16M (デフォルト) 以上に設定する必要があります。

    デフォルトの 16KB ページサイズ以上は、workloads の広範囲、特にバルク更新を伴うテーブルスキャンおよび DML 操作を含むクエリーに適しています。 単一ページに多数の行が含まれている場合、競合が問題になる可能性がある多数の小さい書込みを含む OLTP ワークロードでは、ページサイズを小さくする方が効率的です。 ページを小さくすると、一般に小さなブロックサイズが使用される SSD ストレージデバイスの効率性が高くなる可能性もあります。 InnoDB のページサイズをストレージデバイスのブロックサイズに近づけると、ディスクに再度書き込まれる未変更データの量が最小限になります。

    最初のシステムテーブルスペースデータファイル (ibdata1) の最小ファイルサイズは、innodb_page_size の値によって異なります。 詳細は、innodb_data_file_path オプションの説明を参照してください。

    一般的な I/O チューニングのアドバイスについては、セクション8.5.8「InnoDB ディスク I/O の最適化」を参照してください。

  • innodb_parallel_read_threads

    コマンド行形式 --innodb-parallel-read-threads=#
    導入 8.0.14
    システム変数 innodb_parallel_read_threads
    スコープ セッション
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 4
    最小値 1
    最大値 256

    パラレルクラスタインデックス読取りに使用できるスレッドの数を定義します。 パーティションのパラレルスキャンは、MySQL 8.0.17 でサポートされています。 パラレル読取りスレッドを使用すると、CHECK TABLE のパフォーマンスを向上できます。 InnoDB は、CHECK TABLE 操作中にクラスタ化されたインデックスを 2 回読み取ります。 2 番目の読取りはパラレルで実行できます。 この機能は、セカンダリインデックススキャンには適用されません。 パラレルクラスタインデックス読取りを実行するには、innodb_parallel_read_threads セッション変数を 1 より大きい値に設定する必要があります。 パラレルクラスタインデックス読取りの実行に使用されるスレッドの実際の数は、innodb_parallel_read_threads 設定またはスキャンするインデックスサブツリーの数 (いずれか小さい方) によって決まります。 スキャン中にバッファープールに読み取られたページは、空きバッファープールページが必要なときにすぐに破棄できるように、バッファープール LRU リストの末尾に保持されます。

    MySQL 8.0.17 では、パラレル読取りスレッドの最大数 (256) は、すべてのクライアント接続のスレッドの合計数です。 スレッド制限に達すると、接続は単一スレッドの使用にフォールバックします。

  • innodb_print_all_deadlocks

    コマンド行形式 --innodb-print-all-deadlocks[={OFF|ON}]
    システム変数 innodb_print_all_deadlocks
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    このオプションを有効にすると、mysqld エラーログに、InnoDB のユーザートランザクション内のすべてのデッドロックに関する情報が記録されます。 それ以外の場合は、SHOW ENGINE INNODB STATUS コマンドを使用すると、最後のデッドロックに関する情報のみが表示されます。 状況は InnoDB によってただちに検出され、いずれかのトランザクションが自動的にロールバックされるため、場合によっては InnoDB デッドロックは必ずしも問題ではありません。 このオプションを使用して、ロールバックを検出してその操作を再試行するための適切なエラー処理ロジックがアプリケーションにない場合にデッドロックが発生する理由をトラブルシューティングできます。 多数のデッドロックが発生する場合は、各トランザクションが同じ順序でテーブルにアクセスするように (これにより、デッドロックの状況が回避されます)、複数のテーブルに対して DML または SELECT ... FOR UPDATE ステートメントを発行するトランザクションを再構築する必要があることを示している可能性があります。

    関連情報については、セクション15.7.5「InnoDB のデッドロック」を参照してください。

  • innodb_print_ddl_logs

    コマンド行形式 --innodb-print-ddl-logs[={OFF|ON}]
    システム変数 innodb_print_ddl_logs
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    このオプションを有効にすると、MySQL は DDL ログを stderr に書き込みます。 詳細は、DDL ログの表示を参照してください。

  • innodb_purge_batch_size

    コマンド行形式 --innodb-purge-batch-size=#
    システム変数 innodb_purge_batch_size
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 300
    最小値 1
    最大値 5000

    history list から一度に解析および処理をパージする undo ログページの数を定義します。 マルチスレッドパージ構成では、コーディネータパージスレッドは innodb_purge_batch_sizeinnodb_purge_threads で除算し、その数のページを各パージスレッドに割り当てます。 innodb_purge_batch_size 変数では、undo ログを 128 回反復するたびに消去する undo ログページの数も定義されます。

    innodb_purge_batch_size オプションは、innodb_purge_threads 設定と組み合せた高度なパフォーマンスチューニングを目的としています。 ほとんどのユーザーは、innodb_purge_batch_size をデフォルト値から変更する必要はありません。

    関連情報については、セクション15.8.9「パージ構成」を参照してください。

  • innodb_purge_threads

    コマンド行形式 --innodb-purge-threads=#
    システム変数 innodb_purge_threads
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 4
    最小値 1
    最大値 32

    InnoDB purge 操作専用のバックグラウンドスレッドの数。 この値を大きくすると、追加のパージスレッドが作成されるため、DML 操作が複数のテーブルで実行されるシステムの効率が向上します。

    関連情報については、セクション15.8.9「パージ構成」を参照してください。

  • innodb_purge_rseg_truncate_frequency

    コマンド行形式 --innodb-purge-rseg-truncate-frequency=#
    システム変数 innodb_purge_rseg_truncate_frequency
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 128
    最小値 1
    最大値 128

    パージが起動された回数に関して、パージシステムがロールバックセグメントを解放する頻度を定義します。 undo テーブルスペースは、ロールバックセグメントが解放されるまで切り捨てられません。 通常、パージシステムは、パージが起動される 128 回ごとにロールバックセグメントを解放します。 デフォルト値は 128 です。 この値を減らすと、パージスレッドがロールバックセグメントを解放する頻度が高くなります。

    innodb_purge_rseg_truncate_frequency は、innodb_undo_log_truncate での使用を目的としています。 詳細は、undo テーブルスペースの切捨てを参照してください。

  • innodb_random_read_ahead

    コマンド行形式 --innodb-random-read-ahead[={OFF|ON}]
    システム変数 innodb_random_read_ahead
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    InnoDB の I/O を最適化するために、ランダムな先読み技術を有効にします。

    様々なタイプの先読みリクエストのパフォーマンスに関する考慮事項の詳細は、セクション15.8.3.4「InnoDB バッファープールのプリフェッチ (先読み) の構成」 を参照してください。 一般的な I/O チューニングのアドバイスについては、セクション8.5.8「InnoDB ディスク I/O の最適化」を参照してください。

  • innodb_read_ahead_threshold

    コマンド行形式 --innodb-read-ahead-threshold=#
    システム変数 innodb_read_ahead_threshold
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 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 のグローバルステータス変数からのカウンタ情報が表示されます。これらの変数は、先読みリクエストによって buffer pool に取り込まれたページ数と、アクセスされたことなくバッファプールから evicted のそのようなページ数をそれぞれレポートします。 ステータス変数は、最後のサーバー再起動以降のグローバル値を報告します。

    SHOW ENGINE INNODB STATUS には、先読みページが読み取られる速度と、そのようなページがアクセスされずに削除される速度も表示されます。 秒当たりの平均は、SHOW ENGINE INNODB STATUS の最後の呼出し以降に収集された統計に基づき、SHOW ENGINE INNODB STATUS 出力の BUFFER POOL AND MEMORY セクションに表示されます。

    詳細は、セクション15.8.3.4「InnoDB バッファープールのプリフェッチ (先読み) の構成」を参照してください。 一般的な I/O チューニングのアドバイスについては、セクション8.5.8「InnoDB ディスク I/O の最適化」を参照してください。

  • innodb_read_io_threads

    コマンド行形式 --innodb-read-io-threads=#
    システム変数 innodb_read_io_threads
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 4
    最小値 1
    最大値 64

    InnoDB での読み取り操作で使用される I/O スレッドの数です。 書き込みスレッドで対応するものは、innodb_write_io_threads です。 詳細は、セクション15.8.5「InnoDB バックグラウンド I/O スレッドの数の構成」を参照してください。 一般的な I/O チューニングのアドバイスについては、セクション8.5.8「InnoDB ディスク I/O の最適化」を参照してください。

    注記

    Linux システムでは、デフォルトの innodb_read_io_threads 設定で複数 (一般には 12 台よりも多く) の MySQL サーバーを実行すると、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 ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    InnoDB を読取り専用モードで起動します。 読み取り専用メディア上のデータベースアプリケーションまたはデータセットを配布するために使用されます。 複数のインスタンス間で同じデータディレクトリを共有する際に、データウェアハウスで使用することもできます。 詳細は、セクション15.8.2「読み取り専用操作用の InnoDB の構成」を参照してください。

    以前は、innodb_read_only システム変数を有効にすると、InnoDB ストレージエンジンのテーブルの作成および削除のみができなくなりました。 MySQL 8.0 の時点では、innodb_read_only を有効にすると、すべてのストレージエンジンでこれらの操作が防止されます。 ストレージエンジンのテーブルの作成および削除操作では、mysql システムデータベース内のデータディクショナリテーブルが変更されますが、これらのテーブルは InnoDB ストレージエンジンを使用するため、innodb_read_only が有効になっている場合は変更できません。 データディクショナリテーブルの変更を必要とする他のテーブル操作にも、同じ原則が適用されます。 例:

    • innodb_read_only システム変数が有効になっている場合、InnoDB を使用するデータディクショナリの統計テーブルを更新できないため、ANALYZE TABLE が失敗することがあります。 キー分散を更新する ANALYZE TABLE 操作では、操作によってテーブル自体が更新された場合でも (MyISAM テーブルの場合など)、障害が発生する可能性があります。 更新された分散統計を取得するには、information_schema_stats_expiry=0 を設定します。

    • データディクショナリに格納されているストレージエンジンの指定が更新されるため、ALTER TABLE tbl_name ENGINE=engine_name は失敗します。

    また、mysql システムデータベースの他のテーブルでは、MySQL 8.0 の InnoDB ストレージエンジンが使用されます。 これらのテーブルを読取り専用にすると、テーブルを変更する操作が制限されます。 例:

    • 付与テーブルで InnoDB が使用されているため、CREATE USERGRANT などのアカウント管理ステートメントは失敗します。

    • mysql.plugin システムテーブルで InnoDB が使用されているため、INSTALL PLUGIN および UNINSTALL PLUGIN プラグイン管理ステートメントは失敗します。

    • mysql.func システムテーブルで InnoDB が使用されているため、CREATE FUNCTION および DROP FUNCTION UDF 管理ステートメントは失敗します。

  • innodb_redo_log_archive_dirs

    コマンド行形式 --innodb-redo-log-archive-dirs
    導入 8.0.17
    システム変数 innodb_redo_log_archive_dirs
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    文字列
    デフォルト値 NULL

    redo ログアーカイブファイルを作成できるラベル付きディレクトリを定義します。 複数のラベル付きディレクトリをセミコロン区切りリストで定義できます。 例:

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

    ラベルには任意の文字列を指定できますが、コロン (:) は使用できません。 空のラベルも使用できますが、この場合もコロン (:) が必要です。

    パスを指定する必要があり、ディレクトリが存在する必要があります。 パスにはコロン (':') を含めることができますが、セミコロン (;) は使用できません。

  • innodb_redo_log_encrypt

    コマンド行形式 --innodb-redo-log-encrypt[={OFF|ON}]
    システム変数 innodb_redo_log_encrypt
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    InnoDB data-at-rest encryption feature を使用して暗号化されたテーブルの redo ログデータの暗号化を制御します。 redo ログデータの暗号化は、デフォルトで無効になっています。 詳細は、redo ログの暗号化を参照してください。

  • innodb_replication_delay

    コマンド行形式 --innodb-replication-delay=#
    システム変数 innodb_replication_delay
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 0
    最小値 0
    最大値 4294967295

    innodb_thread_concurrency に到達した場合のレプリカサーバーのレプリケーションスレッド遅延 (ミリ秒)。

  • innodb_rollback_on_timeout

    コマンド行形式 --innodb-rollback-on-timeout[={OFF|ON}]
    システム変数 innodb_rollback_on_timeout
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    InnoDB rolls back では、トランザクションタイムアウトの最後のステートメントのみがデフォルトで実行されます。 --innodb-rollback-on-timeout が指定されている場合、トランザクションタイムアウトにより、InnoDB はトランザクション全体を中断およびロールバックします。

    詳細は、セクション15.21.4「InnoDB のエラー処理」を参照してください。

  • innodb_rollback_segments

    コマンド行形式 --innodb-rollback-segments=#
    システム変数 innodb_rollback_segments
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 128
    最小値 1
    最大値 128

    innodb_rollback_segments では、undo レコードを生成するトランザクションに対して、各 undo テーブルスペースおよびグローバル一時テーブルスペースに割り当てられる rollback segments の数を定義します。 各ロールバックセグメントでサポートされるトランザクションの数は、InnoDB のページサイズおよび各トランザクションに割り当てられた undo ログの数によって異なります。 詳細は、セクション15.6.6「undo ログ」を参照してください。

    関連情報については、セクション15.3「InnoDB マルチバージョン」を参照してください。 undo テーブルスペースの詳細は、セクション15.6.3.4「undo テーブルスペース」 を参照してください。

  • innodb_saved_page_number_debug

    コマンド行形式 --innodb-saved-page-number-debug=#
    システム変数 innodb_saved_page_number_debug
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 0
    最大値 2**23-1

    ページ番号を保存します。 innodb_fil_make_page_dirty_debug オプションを設定すると、innodb_saved_page_number_debug で定義されたページがダーティになります。 innodb_saved_page_number_debug オプションは、デバッグサポートが WITH_DEBUG CMake オプションを使用してコンパイルされている場合にのみ使用できます。

  • innodb_sort_buffer_size

    コマンド行形式 --innodb-sort-buffer-size=#
    システム変数 innodb_sort_buffer_size
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 1048576
    最小値 65536
    最大値 67108864

    InnoDB インデックスの作成時にデータのソートに使用されるソートバッファのサイズを指定します。 指定されたサイズは、内部ソートのためにメモリーに読み取られ、ディスクに書き込まれるデータの量を定義します。 このプロセスは run と呼ばれます。 マージフェーズでは、指定したサイズのバッファのペアが読み取られ、マージされます。 設定が大きいほど、実行数が少なくなり、マージされます。

    このソート領域は、後続のインデックスのメンテナンス操作時ではなく、インデックスの作成時のマージソートでのみ使用されます。 インデックスの作成が完了すると、バッファーの割り当てが解除されます。

    このオプションの値は、online DDL 操作中に同時 DML を記録するために一時ログファイルを拡張する量も制御します。

    この設定を構成可能にする前は、サイズは 1048576 バイト (1MB) にハードコードされていましたが、これはデフォルトのままです。

    インデックスを作成する ALTER TABLE または CREATE TABLE ステートメントの実行時に、それぞれが、このオプションで定義されたサイズを持つ 3 つのバッファーが割り当てられます。 さらに、ポインタ上でソートを実行できるように、ソートバッファー内の行に補助ポインタが割り当てられます (これは、ソート操作時の行の移動とは異なります)。

    一般的なソート操作では、次のような式を使用してメモリー消費量を見積もることができます:

    (6 /*FTS_NUM_AUX_INDEX*/ * (3*@@GLOBAL.innodb_sort_buffer_size)
    + 2 * number_of_partitions * number_of_secondary_indexes_created
    * (@@GLOBAL.innodb_sort_buffer_size/dict_index_get_min_size(index)*/)
    * 8 /*64-bit sizeof *buf->tuples*/")

    @@GLOBAL.innodb_sort_buffer_size/dict_index_get_min_size(index) は、保持される最大タプル数を示します。2 * (@@GLOBAL.innodb_sort_buffer_size/*dict_index_get_min_size(index)*/) * 8 /*64-bit size of *buf->tuples*/は、割り当てられた補助ポインタを示します。

    注記

    32 ビットの場合は、8 の代わりに 4 で乗算します。

    全文インデックスでの並列ソートでは、innodb_ft_sort_pll_degree の設定で乗算します。

    (6 /*FTS_NUM_AUX_INDEX*/ * @@GLOBAL.innodb_ft_sort_pll_degree)
  • innodb_spin_wait_delay

    コマンド行形式 --innodb-spin-wait-delay=#
    システム変数 innodb_spin_wait_delay
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 6
    最小値 0
    最大値 (64 ビットプラットフォーム, ≤ 8.0.13) 2**64-1
    最大値 (32 ビットプラットフォーム, ≤ 8.0.13) 2**32-1
    最大値 (≥ 8.0.14) 1000

    スピンロックでのポーリング間の最大遅延です。 このメカニズムの低レベルの実装は、ハードウェアとオペレーティングシステムの組み合わせによって異なるため、遅延は一定の時間間隔に対応しません。

    スピンロックポーリング遅延の期間をより詳細に制御するために、innodb_spin_wait_pause_multiplier 変数と組み合せて使用できます。

    詳細は、セクション15.8.8「スピンロックのポーリングの構成」を参照してください。

  • innodb_spin_wait_pause_multiplier

    コマンド行形式 --innodb-spin-wait-pause-multiplier=#
    導入 8.0.16
    システム変数 innodb_spin_wait_pause_multiplier
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 50
    最小値 1
    最大値 100

    スレッドが mutex または rw-lock の取得を待機するときに発生するスピン待機ループ内の PAUSE 命令の数を決定するために使用される乗数値を定義します。

    詳細は、セクション15.8.8「スピンロックのポーリングの構成」を参照してください。

  • innodb_stats_auto_recalc

    コマンド行形式 --innodb-stats-auto-recalc[={OFF|ON}]
    システム変数 innodb_stats_auto_recalc
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    テーブル内のデータが大幅に変更されたあとは、InnoDB によって自動的に永続的統計が再計算されます。 しきい値は、テーブルの行の 10% です。 この設定は、innodb_stats_persistent オプションが有効な場合に作成されるテーブルに適用されます。 自動統計再計算は、CREATE TABLE ステートメントまたは ALTER TABLE ステートメントで STATS_PERSISTENT=1 を指定して構成することもできます。 統計を生成するためにサンプリングされるデータの量は、innodb_stats_persistent_sample_pages 変数によって制御されます。

    詳細は、セクション15.8.10.1「永続的オプティマイザ統計のパラメータの構成」を参照してください。

  • innodb_stats_include_delete_marked

    コマンド行形式 --innodb-stats-include-delete-marked[={OFF|ON}]
    システム変数 innodb_stats_include_delete_marked
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    デフォルトでは、InnoDB は統計の計算時にコミットされていないデータを読み取ります。 テーブルから行を削除するコミットされていないトランザクションの場合、InnoDB では、行の見積りおよびインデックス統計の計算時に削除マークが付けられたレコードが除外されるため、READ UNCOMMITTED 以外のトランザクション分離レベルを使用してテーブルで同時に操作している他のトランザクションの実行計画が最適でなくなる可能性があります。 このシナリオを回避するために、innodb_stats_include_delete_marked を有効にして、永続オプティマイザ統計の計算時に InnoDB に削除マーク付きレコードが含まれるようにできます。

    innodb_stats_include_delete_marked が有効な場合、ANALYZE TABLE では、統計の再計算時に削除マークが付けられたレコードが考慮されます。

    innodb_stats_include_delete_marked は、すべての InnoDB テーブルに影響するグローバル設定です。 永続オプティマイザ統計にのみ適用されます。

    関連情報については、セクション15.8.10.1「永続的オプティマイザ統計のパラメータの構成」を参照してください。

  • innodb_stats_method

    コマンド行形式 --innodb-stats-method=value
    システム変数 innodb_stats_method
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    列挙
    デフォルト値 nulls_equal
    有効な値

    nulls_equal

    nulls_unequal

    nulls_ignored

    InnoDB テーブルのインデックス値の分布に関する統計を収集するときに、サーバーが NULL 値を処理する方法です。 許可される値は、nulls_equalnulls_unequal および nulls_ignored です。 nulls_equal の場合、すべての NULL インデックス値は等しいとみなされ、NULL 値の数と等しいサイズの単一の値グループを形成します。 nulls_unequal の場合、NULL 値同士を同等として扱わず、それぞれの NULL はサイズが 1 の別個のグループを生成します。 nulls_ignored の場合、NULL 値は無視されます。

    テーブル統計の生成に使用される方法は、セクション8.3.8「InnoDB および MyISAM インデックス統計コレクション」 で説明されているように、オプティマイザがクエリーを実行するためにインデックスを選択する方法に影響します。

  • innodb_stats_on_metadata

    コマンド行形式 --innodb-stats-on-metadata[={OFF|ON}]
    システム変数 innodb_stats_on_metadata
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    このオプションは、オプティマイザ statistics が非永続として構成されている場合にのみ適用されます。 オプティマイザ統計は、innodb_stats_persistent が無効な場合、または STATS_PERSISTENT=0 を使用して個々のテーブルが作成または変更された場合、ディスクに永続化されません。 詳細は、セクション15.8.10.2「非永続的オプティマイザ統計のパラメータの構成」を参照してください。

    innodb_stats_on_metadata が有効になっている場合、SHOW TABLE STATUS などのメタデータステートメントの場合、または INFORMATION_SCHEMA.TABLES テーブルまたは INFORMATION_SCHEMA.STATISTICS テーブルにアクセスする場合、InnoDB は非永続 statistics を更新します。 (これらの更新は、ANALYZE TABLE で実行されるものに似ています。) 無効にすると、これらの操作時に InnoDB によって統計が更新されません。 この設定を無効のままにすると、多数のテーブルまたはインデックスを持つスキーマのアクセス速度を向上させることができます。 InnoDB テーブルが関与するクエリーの実行計画の安定性も改善できます。

    設定を変更するには、SET GLOBAL innodb_stats_on_metadata=mode ステートメントを発行します。ここで、modeONOFF のいずれか (または 10 のいずれか) です。 設定を変更するには、グローバルシステム変数を設定するのに十分な権限 (セクション5.1.9.1「システム変数権限」 を参照) が必要で、すべての接続の操作にすぐに影響します。

  • innodb_stats_persistent

    コマンド行形式 --innodb-stats-persistent[={OFF|ON}]
    システム変数 innodb_stats_persistent
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    InnoDB インデックス統計をディスクに永続化するかどうかを指定します。 それ以外の場合は、頻繁に統計が再計算される可能性があります。これにより、クエリーの実行計画が変化する可能性があります。 テーブルが作成されると、この設定が各テーブルとともに格納されます。 テーブルを作成する前にグローバルレベルで innodb_stats_persistent を設定することも、CREATE TABLE および ALTER TABLE ステートメントで STATS_PERSISTENT 句を使用して、システム全体の設定をオーバーライドし、個々のテーブルの永続的統計を構成することもできます。

    詳細は、セクション15.8.10.1「永続的オプティマイザ統計のパラメータの構成」を参照してください。

  • innodb_stats_persistent_sample_pages

    コマンド行形式 --innodb-stats-persistent-sample-pages=#
    システム変数 innodb_stats_persistent_sample_pages
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 20

    インデックス付きカラムのカーディナリティーやその他の統計 (ANALYZE TABLE で計算された統計など) を見積もるときに、サンプルとして取得されるインデックスページの数です。 値を大きくすると、クエリーの実行計画を改善するインデックス統計の精度が改善されますが、InnoDB テーブルに対する ANALYZE TABLE の実行時に I/O が増加することになります。 詳細は、セクション15.8.10.1「永続的オプティマイザ統計のパラメータの構成」を参照してください。

    注記

    innodb_stats_persistent_sample_pages に大きな値を設定すると、ANALYZE TABLE の実行時間が長くなる可能性があります。 ANALYZE TABLE によってアクセスされるデータベースページの数を見積もるには、セクション15.8.10.3「InnoDB テーブルに対する ANALYZE TABLE の複雑さの推定」 を参照してください。

    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 ヒントの適用 いいえ
    Integer
    デフォルト値 8

    インデックス付きカラムのカーディナリティーやその他の統計 (ANALYZE TABLE で計算された統計など) を見積もるときに、サンプルとして取得されるインデックスページの数です。 デフォルト値は 8 です。 値を大きくすると、インデックス統計の精度が改善されます。これにより、クエリーの実行計画を改善できますが、InnoDB テーブルを開くときや統計を再計算するときに I/O が増加するという犠牲が伴います。 詳細は、セクション15.8.10.2「非永続的オプティマイザ統計のパラメータの構成」を参照してください。

    注記

    innodb_stats_transient_sample_pages に大きな値を設定すると、ANALYZE TABLE の実行時間が長くなる可能性があります。 ANALYZE TABLE によってアクセスされるデータベースページの数を見積もるには、セクション15.8.10.3「InnoDB テーブルに対する ANALYZE TABLE の複雑さの推定」 を参照してください。

    innodb_stats_transient_sample_pages は、テーブルに対して innodb_stats_persistent が無効になっている場合にのみ適用され、innodb_stats_persistent が有効になっている場合は、かわりに innodb_stats_persistent_sample_pages が適用されます。 innodb_stats_sample_pages のかわりに使用します。 詳細は、セクション15.8.10.2「非永続的オプティマイザ統計のパラメータの構成」を参照してください。

  • innodb_status_output

    コマンド行形式 --innodb-status-output[={OFF|ON}]
    システム変数 innodb_status_output
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    標準 InnoDB モニターの定期出力を有効または無効にします。 また、InnoDB Lock Monitor の定期的な出力を有効または無効にする際に、innodb_status_output_locks と組み合わせて使用されます。 詳細は、セクション15.17.2「InnoDB モニターの有効化」を参照してください。

  • innodb_status_output_locks

    コマンド行形式 --innodb-status-output-locks[={OFF|ON}]
    システム変数 innodb_status_output_locks
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    InnoDB ロックモニターを有効または無効にします。 有効にすると、InnoDB ロックモニターは、SHOW ENGINE INNODB STATUS 出力および MySQL エラーログに出力される定期的な出力にロックに関する追加情報を出力します。 InnoDB ロックモニターの定期的な出力は、標準の InnoDB モニター出力の一部として出力されます。 したがって、InnoDB ロックモニターで MySQL エラーログに定期的にデータを出力するには、標準の InnoDB モニターを有効にする必要があります。 詳細は、セクション15.17.2「InnoDB モニターの有効化」を参照してください。

  • innodb_strict_mode

    コマンド行形式 --innodb-strict-mode[={OFF|ON}]
    システム変数 innodb_strict_mode
    スコープ グローバル、セッション
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    innodb_strict_mode が有効になっている場合、InnoDB は特定の条件に対して警告ではなくエラーを返します。

    厳密モードは、SQL 内の無視できる誤字や構文エラー、または操作モードと SQL ステートメントのさまざまな組み合わせによる意図しないその他の結果から保護する際に役立ちます。 innodb_strict_mode が有効になっている場合、InnoDB では、警告を発行して指定されたステートメントを処理するのではなく (おそらく意図しない動作で)、特定のケースでエラー状態が発生します。 これは、MySQL で受け入れられる SQL 構文を制御し、警告なしでエラーを無視するのか、入力構文とデータ値を検証するのかを決定する MySQL の sql_mode と類似しています。

    innodb_strict_mode 設定は、CREATE TABLE, ALTER TABLE, CREATE INDEX および OPTIMIZE TABLE ステートメントの構文エラーの処理に影響します。innodb_strict_mode ではレコードサイズチェックも有効になるため、INSERT または UPDATE は、選択したページサイズに対してレコードが大きすぎるために失敗することはありません。

    CREATE TABLE ステートメント、ALTER TABLE ステートメントおよび CREATE INDEX ステートメントで ROW_FORMAT 句および KEY_BLOCK_SIZE 句を使用する場合は、Oracle で innodb_strict_mode を有効にすることをお薦めします。 innodb_strict_mode が無効になっている場合、InnoDB は競合する句を無視し、メッセージログに警告のみを表示してテーブルまたはインデックスを作成します。 結果のテーブルには、圧縮テーブルを作成しようとしたときの圧縮サポートの不足など、意図したものとは異なる特性がある場合があります。 innodb_strict_mode が有効な場合、このような問題により即時エラーが生成され、テーブルまたはインデックスは作成されません。

    innodb_strict_mode は、mysqld の起動時にコマンドラインで、または MySQL configuration file で有効または無効にできます。 SET [GLOBAL|SESSION] innodb_strict_mode=mode ステートメントを使用して、実行時に innodb_strict_mode を有効または無効にすることもできます。ここで、modeON または OFF です。 GLOBAL 設定を変更するには、グローバルシステム変数を設定するのに十分な権限 (セクション5.1.9.1「システム変数権限」 を参照) が必要であり、その後接続するすべてのクライアントの操作に影響します。 任意のクライアントが innodb_strict_modeSESSION 設定を変更でき、そのクライアントのみが設定の影響を受けます。

    innodb_strict_mode は、general tablespaces には適用できません。 一般的なテーブルスペースのテーブルスペース管理ルールは、innodb_strict_mode とは無関係に厳密に適用されます。 詳細は、セクション13.1.21「CREATE TABLESPACE ステートメント」を参照してください。

  • innodb_sync_array_size

    コマンド行形式 --innodb-sync-array-size=#
    システム変数 innodb_sync_array_size
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 1
    最小値 1
    最大値 1024

    mutex/lock 待機配列のサイズを定義します。 値を大きくすると、スレッドの調整に使用される内部データ構造が分割され、多数の待機スレッドを持つワークロードの同時実行性が向上します。 この設定は MySQL インスタンスの起動時に構成する必要があり、あとで変更することはできません。 頻繁に多数の待機スレッドを生成するワークロード (通常は 768 を超える) では、値を増やすことをお薦めします。

  • innodb_sync_spin_loops

    コマンド行形式 --innodb-sync-spin-loops=#
    システム変数 innodb_sync_spin_loops
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 30
    最小値 0
    最大値 4294967295

    スレッドが中断される前に、InnoDB 相互排他ロックが開放されるまでスレッドが待機する回数です。

  • innodb_sync_debug

    コマンド行形式 --innodb-sync-debug[={OFF|ON}]
    システム変数 innodb_sync_debug
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    InnoDB ストレージエンジンの同期デバッグ検査を有効にします。 このオプションは、デバッグサポートが WITH_DEBUG CMake オプションを使用してコンパイルされている場合にのみ使用できます。

  • innodb_table_locks

    コマンド行形式 --innodb-table-locks[={OFF|ON}]
    システム変数 innodb_table_locks
    スコープ グローバル、セッション
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    autocommit = 0 の場合、InnoDBLOCK TABLES の要求を受け入れます。MySQL はすべてのスレッドがテーブルに対するすべてのロックを解放するまで、LOCK TABLES ... WRITE から戻りません。 innodb_table_locks のデフォルト値は 1 です。これは、autocommit = 0. の場合、LOCK TABLES によって InnoDB がテーブルを内部的にロックすることを意味します。

    innodb_table_locks = 0 は、LOCK TABLES ... WRITE で明示的にロックされたテーブルには影響しません。 LOCK TABLES ... WRITE で暗黙的に (たとえば、トリガーを使用して)、または LOCK TABLES ... READ によって、読み取りまたは書き込み用にロックされたテーブルには有効です。

    関連情報については、セクション15.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 ディレクトリに作成されます。 初期ファイルサイズは 12MB を少し超えています。

    グローバル一時テーブルスペースのデータファイル指定の構文には、ファイル名、ファイルサイズ、autoextend および max 属性が含まれます:

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

    グローバル一時テーブルスペースデータファイルには、別の InnoDB データファイルと同じ名前を付けることはできません。 グローバル一時テーブルスペースデータファイルを作成できない場合やエラーが発生した場合は、致命的として扱われ、サーバーの起動は拒否されます。

    ファイルサイズは、KM または G をサイズ値に追加することで、KB、MB または GB で指定します。 ファイルサイズの合計は、12MB より少し大きくする必要があります。

    個々のファイルのサイズ制限は、オペレーティングシステムによって決まります。 大規模ファイルをサポートするオペレーティングシステムでは、ファイルサイズが 4GB を超える場合があります。 グローバル一時テーブルスペースデータファイルに対する RAW ディスクパーティションの使用はサポートされていません。

    autoextend および max 属性は、innodb_temp_data_file_path 設定で最後に指定されたデータファイルにのみ使用できます。 例:

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

    autoextend オプションを使用すると、データファイルの空き領域がなくなると、データファイルのサイズが自動的に増加します。 デフォルトでは、autoextend の増分は 64MB です。 増分を変更するには、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
    導入 8.0.13
    システム変数 innodb_temp_tablespaces_dir
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    ディレクトリ名
    デフォルト値 #innodb_temp

    起動時に InnoDB がセッション一時テーブルスペースのプールを作成する場所を定義します。 デフォルトの場所は、データディレクトリ内の#innodb_temp ディレクトリです。 データディレクトリに対する完全修飾パスまたは相対パスが許可されます。

    MySQL 8.0.16 では、セッション一時テーブルスペースには常に、InnoDB を使用してオプティマイザによって作成されたユーザー作成一時テーブルおよび内部一時テーブルが格納されます。 (以前は、内部一時テーブルのディスク上のストレージエンジンは、サポートされなくなった internal_tmp_disk_storage_engine システム変数によって決定されていました。 オンディスク内部一時テーブルのストレージエンジンを参照してください。)

    詳細は、セッション一時テーブルスペースを参照してください。

  • innodb_thread_concurrency

    コマンド行形式 --innodb-thread-concurrency=#
    システム変数 innodb_thread_concurrency
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 0
    最小値 0
    最大値 1000

    InnoDB 内で許可されるスレッドの最大数を定義します。 値 0 (デフォルト) は、無限同時実行性 (制限なし) として解釈されます。 この変数は、高同時実行性システムでのパフォーマンスチューニングを目的としています。

    InnoDB は、InnoDB 内のスレッド数を innodb_thread_concurrency の制限以下に保つことを試みます。 制限に達すると、待機スレッドの「先入れ先出し」 (FIFO) キューに追加のスレッドが配置されます。 ロックを待機しているスレッドは、並列実行中のスレッドの数にカウントされません。

    正しい設定は、ワークロードおよびコンピューティング環境によって異なります。 MySQL インスタンスが CPU リソースを他のアプリケーションと共有している場合、またはワークロードや同時ユーザー数が増加している場合は、この変数の設定を検討してください。 値の範囲をテストして、最適なパフォーマンスを提供する設定を決定します。innodb_thread_concurrency は動的変数で、ライブテストシステムで様々な設定を試すことができます。 特定の設定でパフォーマンスが低下した場合は、すぐに innodb_thread_concurrency を 0 に戻してください。

    次のガイドラインに従うと、適切な設定を見つけて保持する際に役立ちます。

    • ワークロードの同時ユーザースレッドの数が一貫して小さく、パフォーマンスに影響しない場合は、innodb_thread_concurrency=0 を設定します (制限なし)。

    • ワークロードが一貫して大きく、または時々スパイクする場合は、innodb_thread_concurrency 値を設定し、最適なパフォーマンスを提供するスレッドの数が見つかるまで調整します。 たとえば、システムに通常 40 から 50 人のユーザーがいるが、定期的に 60、70 以上に増加するとします。 テストにより、同時ユーザー数は 80 に制限され、パフォーマンスはほとんど安定したままであることがわかります。 この場合、innodb_thread_concurrency を 80 に設定します。

    • InnoDB でユーザースレッドに特定の数を超える仮想 CPU (たとえば、20 個の仮想 CPU) を使用しない場合は、innodb_thread_concurrency をこの数に設定します (パフォーマンステストによっては小さくなる可能性があります)。 MySQL を他のアプリケーションから分離することを目的としている場合は、mysqld プロセスを仮想 CPU のみにバインドすることを検討してください。 ただし、排他的バインドを使用すると、mysqld プロセスが一貫してビジー状態でない場合に最適でないハードウェア使用量になる可能性があることに注意してください。 この場合、mysqld プロセスを仮想 CPU にバインドできますが、他のアプリケーションが一部またはすべての仮想 CPU を使用できるようになります。

      注記

      オペレーティングシステムの観点からは、リソース管理ソリューションを使用して、mysqld プロセスをバインドするよりもアプリケーション間で CPU 時間がどのように共有されるかを管理することをお薦めします。 たとえば、他のクリティカルプロセスが実行されていないときに特定のアプリケーションに 90% の仮想 CPU 時間を割り当て、他のクリティカルプロセスが実行されているときにその値を 40% にスケールバックできます。

    • 場合によっては、最適な innodb_thread_concurrency 設定が仮想 CPU の数より小さいことがあります。

    • innodb_thread_concurrency 値が高すぎると、システム内部およびリソースの競合が増加するため、パフォーマンスが低下する可能性があります。

    • 定期的にシステムをモニターし、分析してください。 ワークロード、ユーザー数、またはコンピューティング環境を変更するために、innodb_thread_concurrency 設定の調整が必要なことがあります。

    値 0 を指定すると、SHOW ENGINE INNODB STATUS 出力の ROW OPERATIONS セクションの queries inside InnoDB および queries in queue カウンタが無効になります。

    関連情報については、セクション15.8.4「InnoDB のスレッド並列性の構成」を参照してください。

  • innodb_thread_sleep_delay

    コマンド行形式 --innodb-thread-sleep-delay=#
    システム変数 innodb_thread_sleep_delay
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 10000
    最小値 0
    最大値 1000000

    InnoDB キューに参加するまでに、InnoDB スレッドがスリープ状態になる期間 (マイクロ秒単位) です。 デフォルト値は 10000 です。 0 の値はスリープを無効にします。 innodb_adaptive_max_sleep_delayinnodb_thread_sleep_delay に許可する最大値に設定すると、InnoDB は現在のスレッドスケジュールアクティビティに応じて innodb_thread_sleep_delay を自動的に上下に調整します。 この動的調整は、システムが軽くロードされているとき、またはほぼ全容量で動作しているときに、スレッドスケジューリングメカニズムが円滑に機能するのに役立ちます。

    詳細は、セクション15.8.4「InnoDB のスレッド並列性の構成」を参照してください。

  • innodb_tmpdir

    コマンド行形式 --innodb-tmpdir=dir_name
    システム変数 innodb_tmpdir
    スコープ グローバル、セッション
    動的 はい
    SET_VAR ヒントの適用 いいえ
    ディレクトリ名
    デフォルト値 NULL

    テーブルを再構築するオンライン ALTER TABLE 操作中に作成される一時ソートファイルの代替ディレクトリを定義するために使用します。

    テーブルを再構築するオンライン ALTER TABLE 操作では、元のテーブルと同じディレクトリに中間テーブルファイルも作成されます。 innodb_tmpdir オプションは、中間テーブルファイルには適用されません。

    有効な値は、MySQL データディレクトリパス以外の任意のディレクトリパスです。 値が NULL の場合 (デフォルト)、一時ファイルは MySQL 一時ディレクトリ (Unix の場合は $TMPDIR、Windows の場合は %TEMP%--tmpdir 構成オプションで指定されたディレクトリ)、作成されます。 ディレクトリが指定されている場合、SET ステートメントを使用して innodb_tmpdir が構成されている場合にのみ、ディレクトリの存在と権限がチェックされます。 symlink がディレクトリ文字列に指定されている場合、symlink は解決され、絶対パスとして格納されます。 パスは 512 バイトを超えることはできません。 innodb_tmpdir が無効なディレクトリに設定されている場合、オンラインの ALTER TABLE 操作でエラーが報告されます。innodb_tmpdir は、MySQL tmpdir 設定をオーバーライドしますが、オンラインの ALTER TABLE 操作の場合のみです。

    innodb_tmpdir を構成するには、FILE 権限が必要です。

    tmpfs ファイルシステムにある一時ファイルディレクトリのオーバーフローを回避するために、innodb_tmpdir オプションが導入されました。 このようなオーバーフローは、テーブルを再構築するオンライン ALTER TABLE 操作中に作成された大規模な一時ソートファイルの結果として発生する可能性があります。

    レプリケーション環境では、すべてのサーバーに同じオペレーティングシステム環境がある場合にのみ、innodb_tmpdir 設定のレプリケートを検討してください。 それ以外の場合、innodb_tmpdir 設定をレプリケートすると、テーブルを再構築するオンライン ALTER TABLE 操作の実行時にレプリケーションが失敗する可能性があります。 サーバーの動作環境が異なる場合は、各サーバーで個別に innodb_tmpdir を構成することをお薦めします。

    詳細は、セクション15.12.3「オンライン DDL 領域の要件」を参照してください。 ALTER TABLE のオンライン操作の詳細は、セクション15.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 ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    パージビューの更新を許可しながら、削除マーク付きレコードのパージを一時停止します。 このオプションでは、パージビューは更新されますが、パージはまだ実行されていない状況が人為的に作成されます。 このオプションは、デバッグサポートが WITH_DEBUG CMake オプションを使用してコンパイルされている場合にのみ使用できます。

  • innodb_trx_rseg_n_slots_debug

    コマンド行形式 --innodb-trx-rseg-n-slots-debug=#
    システム変数 innodb_trx_rseg_n_slots_debug
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 0
    最大値 1024

    TRX_RSEG_N_SLOTS を、undo ログセグメントの空きスロットを検索する trx_rsegf_undo_find_free 関数の特定の値に制限するデバッグフラグを設定します。 このオプションは、デバッグサポートが WITH_DEBUG CMake オプションを使用してコンパイルされている場合にのみ使用できます。

  • innodb_undo_directory

    コマンド行形式 --innodb-undo-directory=dir_name
    システム変数 innodb_undo_directory
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    ディレクトリ名

    InnoDB が undo テーブルスペースを作成するパス。 通常、undo テーブルスペースを別のストレージデバイスに配置するために使用されます。

    デフォルト値はありません (NULL)。 innodb_undo_directory 変数が定義されていない場合、undo テーブルスペースはデータディレクトリに作成されます。

    MySQL インスタンスの初期化時に作成されるデフォルトの undo テーブルスペース (innodb_undo_001 および innodb_undo_002) は、innodb_undo_directory 変数で定義されたディレクトリに常に存在します。

    別のパスが指定されていない場合、CREATE UNDO TABLESPACE 構文を使用して作成された undo テーブルスペースは、innodb_undo_directory 変数で定義されたディレクトリに作成されます。

    詳細は、セクション15.6.3.4「undo テーブルスペース」を参照してください。

  • innodb_undo_log_encrypt

    コマンド行形式 --innodb-undo-log-encrypt[={OFF|ON}]
    システム変数 innodb_undo_log_encrypt
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 OFF

    InnoDB data-at-rest encryption feature を使用して暗号化されたテーブルの undo ログデータの暗号化を制御します。 個別の undo tablespaces に存在する undo ログにのみ適用されます。 セクション15.6.3.4「undo テーブルスペース」を参照してください。 システムテーブルスペースに存在する undo ログデータの暗号化はサポートされていません。 詳細は、undo ログの暗号化を参照してください。

  • innodb_undo_log_truncate

    コマンド行形式 --innodb-undo-log-truncate[={OFF|ON}]
    システム変数 innodb_undo_log_truncate
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    有効にすると、innodb_max_undo_log_size で定義されたしきい値を超える undo テーブルスペースに切捨てのマークが付けられます。 undo テーブルスペースのみ切り捨てられます。 システムテーブルスペースに存在する undo ログの切捨てはサポートされていません。 切捨てを実行するには、少なくとも 2 つの undo テーブルスペースが必要です。

    innodb_purge_rseg_truncate_frequency 変数を使用すると、undo テーブルスペースの切捨てを迅速に実行できます。

    詳細は、undo テーブルスペースの切捨てを参照してください。

  • innodb_undo_tablespaces

    コマンド行形式 --innodb-undo-tablespaces=#
    非推奨 はい
    システム変数 innodb_undo_tablespaces
    スコープ グローバル
    動的 はい
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 2
    最小値 2
    最大値 127

    InnoDB で使用される undo tablespaces の数を定義します。 デフォルト値と最小値は 2 です。

    注記

    innodb_undo_tablespaces 変数は非推奨であり、MySQL 8.0.14 の時点では構成できなくなりました。 将来のリリースで削除される予定です。

    詳細は、セクション15.6.3.4「undo テーブルスペース」を参照してください。

  • innodb_use_native_aio

    コマンド行形式 --innodb-use-native-aio[={OFF|ON}]
    システム変数 innodb_use_native_aio
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    Linux の非同期 I/O サブシステムを使用するかどうかを指定します。 この変数は Linux システムにのみ適用され、サーバーの実行中は変更できません。 通常、このオプションはデフォルトで有効になっているため、構成する必要はありません。

    Windows システムで InnoDB が持つ asynchronous I/O 機能は、Linux システムで使用できます。 (その他の Unix に似たシステムでは、引き続き同期 I/O 呼び出しが使用されます。) この機能により、SHOW ENGINE INNODB STATUS\G 出力に多くの保留中の読取り/書込みが通常表示される、大量の I/O-bound システムのスケーラビリティが向上します。

    大量の InnoDB I/O スレッドとともに実行すると (特に、同じサーバーマシン上で複数のこのようなインスタンスを実行すると)、Linux システムの能力制限を超える可能性があります。 この場合、次のエラーを受信する可能性があります。

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

    一般に、/proc/sys/fs/aio-max-nr により大きな制限を記述すれば、このエラーに対処できます。

    ただし、OS の非同期 I/O サブシステムに問題があるために InnoDB を起動できない場合は、innodb_use_native_aio=0 を使用してサーバーを起動できます。 このオプションは、tmpfs で AIO をサポートしていない tmpdir の場所、tmpfs ファイルシステム、Linux カーネルの組合せなどの潜在的な問題が InnoDB によって検出された場合にも、起動時に自動的に無効になることがあります。

    詳細は、セクション15.8.6「Linux での非同期 I/O の使用」を参照してください。

  • innodb_validate_tablespace_paths

    コマンド行形式 --innodb-validate-tablespace-paths[={OFF|ON}]
    導入 8.0.21
    システム変数 innodb_validate_tablespace_paths
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Boolean
    デフォルト値 ON

    テーブルスペースファイルパスの検証を制御します。 起動時に、InnoDB は、テーブルスペースファイルが別の場所に移動された場合に備えて、データディクショナリに格納されているテーブルスペースファイルパスに対して既知のテーブルスペースファイルのパスを検証します。 innodb_validate_tablespace_paths 変数を使用すると、テーブルスペースパスの検証を無効にできます。 この機能は、テーブルスペースファイルを移動しない環境を対象としています。 パス検証を無効にすると、多数のテーブルスペースファイルがあるシステムでの起動時間が短縮されます。

    警告

    テーブルスペースファイルの移動後にテーブルスペースパス検証を無効にしてサーバーを起動すると、動作が未定義になる可能性があります。

    詳細は、セクション15.6.3.7「テーブルスペースパス検証の無効化」を参照してください。

  • innodb_version

    InnoDB のバージョン番号です。 MySQL 8.0 では、InnoDB の個別のバージョン番号は適用されず、この値はサーバーの version 番号と同じです。

  • innodb_write_io_threads

    コマンド行形式 --innodb-write-io-threads=#
    システム変数 innodb_write_io_threads
    スコープ グローバル
    動的 いいえ
    SET_VAR ヒントの適用 いいえ
    Integer
    デフォルト値 4
    最小値 1
    最大値 64

    InnoDB の書き込み操作で使用される I/O スレッドの数です。 デフォルト値は 4 です。 読み取りスレッドで対応するものは、innodb_read_io_threads です。 詳細は、セクション15.8.5「InnoDB バックグラウンド I/O スレッドの数の構成」を参照してください。 一般的な I/O チューニングのアドバイスについては、セクション8.5.8「InnoDB ディスク I/O の最適化」を参照してください。

    注記

    Linux システムでは、デフォルトの innodb_read_io_threads 設定で複数 (一般には 12 台よりも多く) の MySQL サーバーを実行すると、innodb_write_io_threads および Linux の aio-max-nr 設定がシステムの制限を超過する可能性があります。 理想的には、aio-max-nr 設定を増やします。回避策として、いずれかまたは両方の MySQL 変数の設定を減らすことができます。

    また、バイナリログとディスクの同期を制御する sync_binlog の値も考慮してください。

    一般的な I/O チューニングのアドバイスについては、セクション8.5.8「InnoDB ディスク I/O の最適化」を参照してください。