このページは機械翻訳したものです。
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 オプションおよび変数リファレンス」
InnoDB コマンドオプション
-
コマンド行形式 --innodb[=value]非推奨 はい 型 列挙 デフォルト値 ON有効な値 OFFONFORCEサーバーが
InnoDBサポートでコンパイルされた場合に、InnoDBストレージエンジンのロードを制御します。 このオプションの形式はトライステートであり、指定可能な値はOFF、ON、または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[={OFF|ON}]型 Boolean デフォルト値 OFF--innodb-status-fileの起動オプションは、InnoDBがinnodb_status.という名前のファイルをデータディレクトリに作成し、pidSHOW 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-innodbInnoDBストレージエンジンを無効にします。--innodbの説明を参照してください。
InnoDB システム変数
-
daemon_memcached_enable_binlogコマンド行形式 --daemon-memcached-enable-binlog[={OFF|ON}]システム変数 daemon_memcached_enable_binlogスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFMySQL binary log で
InnoDBmemcached プラグイン (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.soInnoDBmemcached プラグインを実装する共有ライブラリを指定します。詳細は、セクション15.20.3「InnoDB memcached プラグインの設定」を参照してください。
-
daemon_memcached_engine_lib_pathコマンド行形式 --daemon-memcached-engine-lib-path=dir_nameシステム変数 daemon_memcached_engine_lib_pathスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 ディレクトリ名 デフォルト値 NULLInnoDBmemcached プラグインを実装する共有ライブラリを含むディレクトリのパスです。 デフォルト値は、MySQL プラグインディレクトリを表す NULL です。 MySQL プラグインディレクトリの外部にある別のストレージエンジン用のmemcachedプラグインを指定しないかぎり、このパラメータを変更する必要はありません。詳細は、セクション15.20.3「InnoDB memcached プラグインの設定」を参照してください。
-
コマンド行形式 --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スコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Integer デフォルト値 1COMMITを実行して新しいトランザクションを開始する前に実行する 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スコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Integer デフォルト値 1COMMITを実行して新しいトランザクションを開始する前に実行する、add、set、incrなどの memcached 書込み操作の数を指定します。daemon_memcached_r_batch_sizeの対の一方です。格納されるデータは停止時に保持することが重要であり、すぐにコミットする必要があると仮定すると、この値はデフォルトで 1 に設定されます。 クリティカルでないデータを格納する場合、頻繁なコミットによるオーバーヘッドを削減するためにこの値を増やすことができますが、予期しない終了が発生すると、最後の
N-1 のコミットされていない書込み操作が失われる可能性があります。詳細は、セクション15.20.3「InnoDB memcached プラグインの設定」を参照してください。
-
コマンド行形式 --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スコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 10最小値 0最大値 70adaptive flushing が有効な redo log 容量の割合を表す最低水位標を定義します。 詳細は、セクション15.8.3.5「バッファープールのフラッシュの構成」を参照してください。
-
コマンド行形式 --innodb-adaptive-hash-index[={OFF|ON}]システム変数 innodb_adaptive_hash_indexスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 ONInnoDB適応型ハッシュインデックスが有効と無効のどちらになっているのかを示します。 ワークロードに応じて、適応型ハッシュインデックスの作成を動的に有効または無効にして、クエリーのパフォーマンスを改善することが望ましい場合があります。 適応型ハッシュインデックスがすべてのワークロードに役立つとは限らないため、現実的なワークロードを使用して、有効と無効の両方でベンチマークを実施してください。 詳細は、セクション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最大値 1000000InnoDBで、現在のワークロードに応じて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スコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 5最小値 1最大値 1073741824InnoDBmemcached インタフェースが使用されるアイドル状態の接続が自動コミットされる頻度 (秒単位) です。 詳細は、セクション15.20.6.4「InnoDB memcached プラグインのトランザクション動作の制御」を参照してください。 -
コマンド行形式 --innodb-api-disable-rowlock[={OFF|ON}]システム変数 innodb_api_disable_rowlockスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFInnoDBmemcached が DML 操作を実行するときに行ロックを無効にするには、このオプションを使用します。 デフォルトでは、innodb_api_disable_rowlockは無効になっています。これは、memcached がgetおよびset操作の行ロックを要求することを意味します。innodb_api_disable_rowlockが有効な場合、memcached は行ロックではなくテーブルロックを要求します。innodb_api_disable_rowlockは動的ではありません。 これは mysqld コマンド行で指定するか、または MySQL 構成ファイルに入力する必要があります。 構成は、MySQL サーバーの起動時に発生するプラグインのインストール時に有効になります。詳細は、セクション15.20.6.4「InnoDB memcached プラグインのトランザクション動作の制御」を参照してください。
-
コマンド行形式 --innodb-api-enable-binlog[={OFF|ON}]システム変数 innodb_api_enable_binlogスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFMySQL バイナリログとともに、
InnoDBmemcached プラグインを使用できます。 詳細は、InnoDB memcached バイナリログの有効化を参照してください。 -
コマンド行形式 --innodb-api-enable-mdl[={OFF|ON}]システム変数 innodb_api_enable_mdlスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFInnoDBmemcached プラグインで使用されるテーブルをロックします。これにより、SQL インタフェースから DDL によって削除または変更できなくなります。 詳細は、セクション15.20.6.4「InnoDB memcached プラグインのトランザクション動作の制御」を参照してください。 -
コマンド行形式 --innodb-api-trx-level=#システム変数 innodb_api_trx_levelスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 0memcached インタフェースによって処理されるクエリーのトランザクション isolation level を制御します。 よく聞く名前に対応する定数は、次のとおりです。
0 =
READ UNCOMMITTED1 =
READ COMMITTED2 =
REPEATABLE READ3 =
SERIALIZABLE
詳細は、セクション15.20.6.4「InnoDB memcached プラグインのトランザクション動作の制御」を参照してください。
-
コマンド行形式 --innodb-autoextend-increment=#システム変数 innodb_autoextend_incrementスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 64最小値 1最大値 1000自動拡張
InnoDBsystem tablespace ファイルがいっぱいになったときにサイズを拡張するための増分サイズ (MB)。 デフォルト値は 64 です。 関連情報については、システムテーブルスペースデータファイル構成,およびシステムテーブルスペースのサイズ変更を参照してください。innodb_autoextend_increment設定は、file-per-table テーブルスペースファイルまたは general tablespace ファイルには影響しません。 これらのファイルは、innodb_autoextend_incrementの設定に関係なく自動拡張されます。 拡張は少量で始まり、その後の拡張は増分が 4MB で発生します。 -
コマンド行形式 --innodb-autoinc-lock-mode=#システム変数 innodb_autoinc_lock_modeスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Integer デフォルト値 2有効な値 012自動インクリメント値を生成する際に使用されるロックモードです。 許容値は、従来型、連続型またはインターリーブ型の場合、それぞれ 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 デフォルト値 OFFinnodb_background_drop_list_emptyデバッグオプションを有効にすると、バックグラウンドドロップリストが空になるまでテーブルの作成が遅延されるため、テストケースの失敗を回避できます。 たとえば、テストケース A がテーブルt1をバックグラウンドドロップリストに配置する場合、テストケース B はバックグラウンドドロップリストが空になるまで待機してから、テーブルt1を作成します。 -
コマンド行形式 --innodb-buffer-pool-chunk-size=#システム変数 innodb_buffer_pool_chunk_sizeスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Integer デフォルト値 134217728最小値 1048576最大値 innodb_buffer_pool_size / innodb_buffer_pool_instancesinnodb_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_sizeはinnodb_buffer_pool_size/innodb_buffer_pool_instancesに切り捨てられます。バッファプールサイズは、常に
innodb_buffer_pool_chunk_size*innodb_buffer_pool_instancesと等しいか倍数である必要があります。innodb_buffer_pool_chunk_sizeを変更すると、innodb_buffer_pool_sizeはinnodb_buffer_pool_chunk_size*innodb_buffer_pool_instancesと等しいか倍数の値に自動的に丸められます。 調整は、バッファープールが初期化されたときに行われます。
重要この値を変更するとバッファプールのサイズが自動的に増加する可能性があるため、
innodb_buffer_pool_chunk_sizeを変更する場合は注意が必要です。innodb_buffer_pool_chunk_sizeを変更する前に、innodb_buffer_pool_sizeへの影響を計算して、生成されるバッファープールサイズが受け入れ可能であることを確認します。潜在的なパフォーマンスの問題を回避するには、チャンク (
innodb_buffer_pool_size/innodb_buffer_pool_chunk_size) の数が 1000 を超えないようにする必要があります。innodb_buffer_pool_size変数は動的で、サーバーがオンラインのときにバッファプールのサイズを変更できます。 ただし、バッファプールサイズはinnodb_buffer_pool_chunk_size*innodb_buffer_pool_instancesの倍数である必要があり、これらの変数設定のいずれかを変更するにはサーバーを再起動する必要があります。詳しくはセクション15.8.3.1「InnoDB バッファプールサイズの構成」をご覧ください。
-
コマンド行形式 --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_DEBUGCMake オプションを使用してコンパイルされている場合にのみ使用できます。 -
innodb_buffer_pool_dump_at_shutdownコマンド行形式 --innodb-buffer-pool-dump-at-shutdown[={OFF|ON}]システム変数 innodb_buffer_pool_dump_at_shutdownスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 ONMySQL サーバーの停止時に
InnoDBbuffer pool にキャッシュされたページを記録して、次回の再起動時に warmup プロセスを短縮するかどうかを指定します。 一般に、innodb_buffer_pool_load_at_startupと組み合わせて使用されます。innodb_buffer_pool_dump_pctオプションは、ダンプする最後に使用されたバッファープールページの割合を定義します。innodb_buffer_pool_dump_at_shutdownとinnodb_buffer_pool_load_at_startupの両方がデフォルトで有効になっています。詳細は、セクション15.8.3.6「バッファープールの状態の保存と復元」を参照してください。
-
コマンド行形式 --innodb-buffer-pool-dump-now[={OFF|ON}]システム変数 innodb_buffer_pool_dump_nowスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFInnoDBbuffer pool にキャッシュされたページをすぐに記録します。 一般に、innodb_buffer_pool_load_nowと組み合わせて使用されます。詳細は、セクション15.8.3.6「バッファープールの状態の保存と復元」を参照してください。
-
コマンド行形式 --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=file_nameシステム変数 innodb_buffer_pool_filenameスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 ファイル名 デフォルト値 ib_buffer_poolinnodb_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 デフォルト値 ONinnodb_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スコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Integer デフォルト値 (Windows, 32 ビットプラットフォーム) (autosized)デフォルト値 (その他) 8 (or 1 if innodb_buffer_pool_size < 1GB最小値 1最大値 64InnoDBのバッファープールが分割される領域の数です。 バッファープールが数 G バイトの範囲にあるシステムでは、バッファープールを個別のインスタンスに分割すると、キャッシュされたページに対して異なるスレッドが読み取りおよび書き込みを行うときの競合が減るため、並列性が向上する場合があります。 バッファープールに格納される各ページまたはバッファープールから読み取られる各ページは、ハッシュ関数を使用して、バッファープールインスタンスのいずれかにランダムに割り当てられます。 各バッファープールは、独自の空きリスト、フラッシュリスト、LRU、およびバッファープールに接続されたその他のすべてのデータ構造を管理し、独自のバッファープール相互排他ロックによって保護されます。このオプションは、
innodb_buffer_pool_sizeを 1GB 以上に設定する場合にのみ有効になります。 バッファプールの合計サイズは、すべてのバッファプールに分割されます。 最高の効率を得るには、innodb_buffer_pool_instancesとinnodb_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[={OFF|ON}]システム変数 innodb_buffer_pool_load_abortスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFinnodb_buffer_pool_load_at_startupまたはinnodb_buffer_pool_load_nowによってトリガーされたInnoDBbuffer 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 デフォルト値 ONMySQL サーバーの起動時に、以前に保持していたものと同じページをロードすることで、
InnoDBbuffer pool が自動的に warmed up になるように指定します。 一般に、innodb_buffer_pool_dump_at_shutdownと組み合わせて使用されます。innodb_buffer_pool_dump_at_shutdownとinnodb_buffer_pool_load_at_startupの両方がデフォルトで有効になっています。詳細は、セクション15.8.3.6「バッファープールの状態の保存と復元」を参照してください。
-
コマンド行形式 --innodb-buffer-pool-load-now[={OFF|ON}]システム変数 innodb_buffer_pool_load_nowスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFサーバーの再起動を待たずに一連のデータページをロードすることで、
InnoDBbuffer pool を即時に warms up します。 ベンチマーク時にキャッシュメモリーを既知の状態に戻したり、レポートやメンテナンスのためにクエリーを実行したあとに、MySQL サーバーの通常のワークロードを再開する準備をしたりする際に役立ちます。詳細は、セクション15.8.3.6「バッファープールの状態の保存と復元」を参照してください。
-
コマンド行形式 --innodb-buffer-pool-size=#システム変数 innodb_buffer_pool_sizeスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 134217728最小値 5242880最大値 (64 ビットプラットフォーム) 2**64-1最大値 (32 ビットプラットフォーム) 2**32-1InnoDBがテーブルおよびインデックスのデータをキャッシュするメモリー領域であるバッファープールのサイズ (バイト単位) です。 デフォルト値は 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スコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 25最小値 0最大値 50buffer pool の合計サイズに対する
InnoDBchange buffer の最大サイズの割合。 この値は、MySQL サーバーで頻繁に挿入、更新、および削除アクティビティーが発生する場合は大きくし、MySQL サーバーでレポート用に使用されるデータが変更されない場合は小さくするとよいでしょう。 詳細は、セクション15.5.2「変更バッファ」を参照してください。 一般的な I/O チューニングのアドバイスについては、セクション8.5.8「InnoDB ディスク I/O の最適化」を参照してください。 -
コマンド行形式 --innodb-change-buffering=valueシステム変数 innodb_change_bufferingスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 列挙 デフォルト値 all有効な値 noneinsertsdeleteschangespurgesallInnoDBがバッファリングの変更 (I/O 操作を連続して実行できるように、セカンダリインデックスへの書き込み操作を遅延させる最適化) を実行するかどうかを指定します。 次のテーブルに、許可される値を示します。 値は数値で指定することもできます。表 15.25 innodb_change_buffering に許可される値
値 数値 説明 none0どの操作もバッファリングしません。 inserts1挿入操作をバッファリングします。 deletes2バッファ削除マーキング操作。厳密に言えば、パージ操作中に後で削除するためにインデックスレコードをマークする書込み。 changes3バッファの挿入および削除マーク操作。 purges4バックグラウンドで実行される物理的な削除操作をバッファリングします。 all5デフォルト。 バッファの挿入、削除マーク操作およびパージ。 詳細は、セクション15.5.2「変更バッファ」を参照してください。 一般的な I/O チューニングのアドバイスについては、セクション8.5.8「InnoDB ディスク I/O の最適化」を参照してください。
-
コマンド行形式 --innodb-change-buffering-debug=#システム変数 innodb_change_buffering_debugスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 0最大値 2InnoDB変更バッファリングのデバッグフラグを設定します。 値 1 を指定すると、変更バッファに対するすべての変更が強制されます。 値 2 を指定すると、マージ時に予期しない終了が発生します。 デフォルト値の 0 は、変更バッファリングデバッグフラグが設定されていないことを示します。 このオプションは、デバッグサポートがWITH_DEBUGCMake オプションを使用してコンパイルされている場合にのみ使用できます。 -
コマンド行形式 --innodb-checkpoint-disabled[={OFF|ON}]システム変数 innodb_checkpoint_disabledスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFこれは、エキスパートによるデバッグのみを目的としたデバッグオプションです。 チェックポイントを無効にして、故意のサーバーイグジットが常に
InnoDBリカバリを開始するようにします。 通常は、サーバーの終了後にリカバリが必要な redo ログエントリを書き込む DML 操作を実行する前に、短い間隔でのみ有効にする必要があります。 このオプションは、デバッグサポートがWITH_DEBUGCMake オプションを使用してコンパイルされている場合にのみ使用できます。 -
コマンド行形式 --innodb-checksum-algorithm=valueシステム変数 innodb_checksum_algorithmスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 列挙 デフォルト値 crc32有効な値 innodbcrc32nonestrict_innodbstrict_crc32strict_noneInnoDBtablespaces のディスクブロックに格納されている 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 で読み取ることはできません。チェックサムアルゴリズムの厳密な形式では、テーブルスペースで有効だが一致しないチェックサム値が検出されると、エラーが報告されます。 テーブルスペースを初めて設定する場合は、新しいインスタンスでのみ厳密な設定を使用することをお薦めします。 厳密な設定は、ディスク読取り時にすべてのチェックサム値を計算する必要がないため、多少高速です。
次のテーブルに、
none、innodbおよびcrc32オプションの値とそれぞれに対応する厳密な値の違いを示します。none、innodbおよびcrc32は、指定されたタイプのチェックサム値を各データブロックに書き込みますが、互換性のために、読取り操作中にブロックを検証するときに他のチェックサム値を受け入れます。 厳密な設定も有効なチェックサム値を受け入れますが、一致しない有効なチェックサム値が検出されるとエラーメッセージを出力します。 厳密な形式を使用すると、インスタンス内のすべてのInnoDBデータファイルが同一のinnodb_checksum_algorithm値で作成される場合に、検証が高速になります。表 15.26 許可される innodb_checksum_algorithm 値
値 生成されるチェックサム (書き込み時) 許可されたチェックサム (読取り時) none 定数。 none、innodb、またはcrc32で生成されるチェックサムのいずれか。innodb ソフトウェアで InnoDBの元のアルゴリズムを使用して計算されたチェックサム。none、innodb、またはcrc32で生成されるチェックサムのいずれか。crc32 crc32アルゴリズムを使用して計算されたチェックサム (ハードウェアの支援を得て実行される可能性もあります)。none、innodb、またはcrc32で生成されるチェックサムのいずれか。strict_none 定数 none、innodb、またはcrc32で生成されるチェックサムのいずれか。 有効だが一致しないチェックサムが検出されると、InnoDBはエラーメッセージを出力します。strict_innodb ソフトウェアで InnoDBの元のアルゴリズムを使用して計算されたチェックサム。none、innodb、またはcrc32で生成されるチェックサムのいずれか。 有効だが一致しないチェックサムが検出されると、InnoDBはエラーメッセージを出力します。strict_crc32 crc32アルゴリズムを使用して計算されたチェックサム (ハードウェアの支援を得て実行される可能性もあります)。none、innodb、またはcrc32で生成されるチェックサムのいずれか。 有効だが一致しないチェックサムが検出されると、InnoDBはエラーメッセージを出力します。
-
コマンド行形式 --innodb-cmp-per-index-enabled[={OFF|ON}]システム変数 innodb_cmp_per_index_enabledスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFINFORMATION_SCHEMA.INNODB_CMP_PER_INDEXテーブルでインデックスごとの圧縮関連の統計を有効にします。 これらの統計は収集にコストがかかる可能性があるため、このオプションは、InnoDBcompressed テーブルに関連するパフォーマンスチューニング中に開発、テストまたはレプリカインスタンスでのみ有効にします。詳細は、セクション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スコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 0最小値 0最大値 1000同時にコミットできるスレッドの数です。 値を 0 (デフォルト) にすると、任意の数のトランザクションを同時にコミットすることが許可されます。
innodb_commit_concurrencyの値は、実行時にゼロからゼロ以外 (またはその逆) に変更できません。 ゼロ以外の値から別のゼロ以外の値に変更することはできます。 -
コマンド行形式 --innodb-compress-debug=valueシステム変数 innodb_compress_debugスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 列挙 デフォルト値 none有効な値 nonezliblz4lz4hcテーブルごとに
COMPRESSION属性を定義せずに、指定された圧縮アルゴリズムを使用してすべてのテーブルを圧縮します。 このオプションは、デバッグサポートがWITH_DEBUGCMake オプションを使用してコンパイルされている場合にのみ使用できます。関連情報については、セクション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スコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 6最小値 0最大値 9InnoDBの圧縮されたテーブルおよびインデックスで使用される 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スコープ グローバル 動的 はい 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=file_nameシステム変数 innodb_data_file_pathスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 文字列 デフォルト値 ibdata1:12M:autoextendInnoDBシステムテーブルスペースデータファイルの名前、サイズおよび属性を定義します。innodb_data_file_pathの値を指定しない場合、デフォルトの動作では、12MB を少し超える単一の自動拡張データファイルがibdata1という名前で作成されます。データファイル指定の完全な構文には、ファイル名、ファイルサイズ、
autoextend属性およびmax属性が含まれます:file_name:file_size[:autoextend[:max:max_file_size]]ファイルサイズは、
K、MまたはGをサイズ値に追加することで、KB、MB または GB 単位で指定します。 データファイルのサイズを KB 単位で指定する場合は、1024 の倍数で指定します。 それ以外の場合、KB 値は最も近いメガバイト (MB) 境界に丸められます。 ファイルサイズの合計は、12MB 以上である必要があります。その他の構成情報については、システムテーブルスペースデータファイル構成 を参照してください。 サイズ変更の手順は、システムテーブルスペースのサイズ変更 を参照してください。
-
コマンド行形式 --innodb-data-home-dir=dir_nameシステム変数 innodb_data_home_dirスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 ディレクトリ名 InnoDBsystem 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 デフォルト値 OFFDDL ログクラッシュインサーションカウンタを 1 にリセットするには、このデバッグオプションを有効にします。 このオプションは、デバッグサポートが
WITH_DEBUGCMake オプションを使用してコンパイルされている場合にのみ使用できます。 -
コマンド行形式 --innodb-deadlock-detect[={OFF|ON}]システム変数 innodb_deadlock_detectスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 ONこのオプションは、デッドロック検出を無効にするために使用します。 同時実行性の高いシステムでは、多数のスレッドが同じロックを待機している場合、デッドロック検出によって速度が低下する可能性があります。 デッドロック検出を無効にし、デッドロック発生時のトランザクションロールバックの
innodb_lock_wait_timeout設定に依存する方が効率的な場合があります。関連情報については、セクション15.7.5.2「デッドロック検出」を参照してください。
-
コマンド行形式 --innodb-dedicated-server[={OFF|ON}]システム変数 innodb_dedicated_serverスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFinnodb_dedicated_serverが有効な場合、InnoDBは次の変数を自動的に構成します:innodb_buffer_pool_sizeinnodb_log_file_sizeinnodb_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=valueシステム変数 innodb_default_row_formatスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 列挙 デフォルト値 DYNAMIC有効な値 DYNAMICCOMPACTREDUNDANTinnodb_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=dir_nameシステム変数 innodb_directoriesスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 ディレクトリ名 起動時にテーブルスペースファイルをスキャンするディレクトリを定義します。 このオプションは、サーバーがオフラインのときにテーブルスペースファイルを新しい場所に移動またはリストアする場合に使用します。 また、絶対パスを使用して作成されたテーブルスペースファイル、またはデータディレクトリの外部にあるテーブルスペースファイルのディレクトリを指定するためにも使用されます。
クラッシュリカバリ中のテーブルスペースの検出は、redo ログで参照されるテーブルスペースを識別するために
innodb_directories設定に依存します。 詳細は、クラッシュリカバリ中のテーブルスペースの検出を参照してください。innodb_data_home_dir、innodb_undo_directoryおよびdatadirによって定義されたディレクトリは、innodb_directoriesオプションが明示的に指定されているかどうかに関係なく、起動時にスキャンするディレクトリのリストを作成するときにinnodb_directories引数値に自動的に追加されます。innodb_directoriesは、起動コマンドまたは MySQL オプションファイルでオプションとして指定できます。 一部のコマンドインタプリタではセミコロン (;) は特殊文字として解釈されるため、引数値の前後に引用符が使用されます。 (たとえば UNIX シェルでは、これはコマンド終端記号として扱われます。)起動コマンド:
mysqld --innodb-directories="directory_path_1;directory_path_2"MySQL オプションファイル:
[mysqld] innodb_directories="directory_path_1;directory_path_2"ワイルドカード式は、ディレクトリの指定には使用できません。
innodb_directoriesスキャンは、指定されたディレクトリのサブディレクトリも走査します。 重複するディレクトリおよびサブディレクトリは、スキャンされるディレクトリのリストから破棄されます。詳細は、セクション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[={OFF|ON}]システム変数 innodb_doublewriteスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Boolean デフォルト値 ONinnodb_doublewrite変数は、二重書込みバッファを有効にするかどうかを制御します。 ほとんどの場合、デフォルトで有効になっています。 二重書込みバッファを無効にするには、innodb_doublewriteを 0 に設定するか、--skip-innodb-doublewriteでサーバーを起動します。 たとえば、ベンチマークの実行時などのように、データ整合性よりもパフォーマンスに関心がある場合は、二重書込みバッファを無効にすることを検討してください。二重書き込みバッファーがアトミック書き込みをサポートする Fusion-io デバイス上にある場合、二重書き込みバッファーは自動的に無効になり、代わりに Fusion-io アトミック書き込みを使用してデータファイル書き込みが実行されます。 ただし、
innodb_doublewrite設定はグローバルであることに注意してください。 二重書き込みバッファーが無効になっている場合、Fusion-io ハードウェア上に存在しないデータファイルを含むすべてのデータファイルに対して無効になります。 この機能は Fusion-io ハードウェアでのみサポートされ、Linux の Fusion-io NVMFS でのみ有効になります。 この機能を最大限に活用するには、O_DIRECTのinnodb_flush_method設定をお薦めします。関連情報については、セクション15.6.4「二重書き込みバッファー」を参照してください。
-
コマンド行形式 --innodb-doublewrite-batch-size=#導入 8.0.20 システム変数 innodb_doublewrite_batch_sizeスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Integer デフォルト値 0最小値 0最大値 256バッチで書き込む二重書込みページの数を定義します。
詳細は、セクション15.6.4「二重書き込みバッファー」を参照してください。
-
コマンド行形式 --innodb-doublewrite-dir=dir_name導入 8.0.20 システム変数 innodb_doublewrite_dirスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 ディレクトリ名 二重書込みファイルのディレクトリを定義します。 ディレクトリが指定されていない場合、二重書込みファイルが
innodb_data_home_dirディレクトリに作成され、指定されていない場合はデータディレクトリにデフォルト設定されます。詳細は、セクション15.6.4「二重書き込みバッファー」を参照してください。
-
コマンド行形式 --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=#導入 8.0.20 システム変数 innodb_doublewrite_pagesスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Integer デフォルト値 innodb_write_io_threads value最小値 innodb_write_io_threads value最大値 512バッチ書込みのスレッド当たりの二重書込みページの最大数を定義します。 値が指定されていない場合、
innodb_doublewrite_pagesはinnodb_write_io_threads値に設定されます。詳細は、セクション15.6.4「二重書き込みバッファー」を参照してください。
-
コマンド行形式 --innodb=extend-and-initialize[={OFF|ON}]導入 8.0.22 システム変数 innodb_extend_and_initializeスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 ONLinux システムの file-per-table テーブルスペースおよび一般テーブルスペースへの領域の割当て方法を制御します。
有効にすると、
InnoDBは新しく割り当てられたページに NULL を書き込みます。 無効にすると、領域はposix_fallocate()コールを使用して割り当てられます。このコールは、物理的に NULL を書き込まずに領域を予約します。詳細は、セクション15.6.3.8「Linux でのテーブルスペースの領域割当ての最適化」を参照してください。
-
コマンド行形式 --innodb-fast-shutdown=#システム変数 innodb_fast_shutdownスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 1有効な値 012InnoDBのシャットダウンモードです。 値が 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_DEBUGCMake オプションを使用してコンパイルされている場合にのみ使用できます。 -
コマンド行形式 --innodb-file-per-table[={OFF|ON}]システム変数 innodb_file_per_tableスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 ONinnodb_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スコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 100最小値 10最大値 100InnoDBでは、インデックスの作成または再構築時にバルクロードが実行されます。 このインデックス作成方法は、「「ソートされたインデックス構築」」と呼ばれます。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スコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 1最小値 1最大値 2700N秒ごとにログを書き込み、フラッシュします。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有効な値 012commit 操作に対する厳密な 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秒 (Nは1 ... 2700で、デフォルト値は 1) に設定できます。 ただし、予期しない mysqld プロセスの終了によって、最大N秒のトランザクションが消去される可能性があります。DDL 変更およびその他の内部
InnoDBアクティビティは、innodb_flush_log_at_trx_commit設定とは関係なくログをフラッシュします。InnoDBcrash 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=valueシステム変数 innodb_flush_methodスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 文字列 デフォルト値 (Unix) fsyncデフォルト値 (Windows) unbuffered有効な値 (Unix) fsyncO_DSYNClittlesyncnosyncO_DIRECTO_DIRECT_NO_FSYNC有効な値 (Windows) unbufferednormalInnoDBdata 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スコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 列挙 デフォルト値 0有効な値 012flushing で、
InnoDBbuffer pool のページが同じ extent の他の dirty pages もフラッシュするかどうかを指定します。0 に設定すると、
innodb_flush_neighborsが無効になります。 同じエクステント内のダーティページはフラッシュされません。1 に設定すると、連続したダーティページが同じエクステントにフラッシュされます。
2 に設定すると、ダーティページが同じエクステントでフラッシュされます。
テーブルデータが従来の HDD ストレージデバイスに格納されている場合は、1 回の操作でこのような隣接ページをフラッシュすると、さまざまな時間に個々のページをフラッシュする場合と比較して、(主にディスクシーク操作の) I/O オーバーヘッドが削減されます。 SSD に格納されているテーブルデータの場合、シーク時間は重要な要因ではなく、このオプションを 0 に設定して書込み操作を分散できます。 関連情報については、セクション15.8.3.5「バッファープールのフラッシュの構成」を参照してください。
-
コマンド行形式 --innodb-flush-sync[={OFF|ON}]システム変数 innodb_flush_syncスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 ONinnodb_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スコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 30最小値 1最大値 1000InnoDBが以前に計算されたフラッシュ状態のスナップショットを保持し、adaptive flushing が workloads の変更にどのくらい迅速に応答するかを制御する反復の数。 この値を大きくすると、ワークロードが変化するにつれて、フラッシュ操作の速度が円滑かつ徐々に変化します。 この値を小さくすると、適応型フラッシュがワークロードの変化にすばやく適応します。これにより、ワークロードが突然に増減した場合に、フラッシュアクティビティーが急増する可能性があります。関連情報については、セクション15.8.3.5「バッファープールのフラッシュの構成」を参照してください。
-
コマンド行形式 --innodb-force-load-corrupted[={OFF|ON}]システム変数 innodb_force_load_corruptedスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFF破損としてマークされたテーブルを起動時に
InnoDBがロードできるようにします。 トラブルシューティング時に、何も対処しなければアクセスできないデータをリカバリする際にのみ使用してください。 トラブルシューティングが完了したら、この設定を無効にしてサーバーを再起動します。 -
コマンド行形式 --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 より大きい場合、InnoDBはINSERT、UPDATE、またはDELETE操作を回避します。innodb_force_recovery設定が 4 以上の場合、InnoDBは読取り専用モードになります。レプリケーションではレプリカステータスログが
InnoDBテーブルに格納されるため、これらの制限により、レプリケーション管理コマンドがエラーで失敗する場合があります。 -
コマンド行形式 --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スコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 文字列 FULLTEXTインデックスを含むInnoDBテーブルの修飾名を指定します。 この変数は診断のために使用され、実行時にのみ設定できます。 例:SET GLOBAL innodb_ft_aux_table = 'test/t1';この変数を
形式の名前に設定すると、db_name/table_nameINFORMATION_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スコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Integer デフォルト値 8000000最小値 1600000最大値 80000000InnoDBFULLTEXT検索インデックスキャッシュに割り当てられたメモリー (バイト単位)。これは、InnoDBFULLTEXTインデックスの作成時にメモリー内に解析済ドキュメントを保持します。innodb_ft_cache_sizeのサイズ制限に達すると、インデックスの挿入および更新のみがディスクにコミットされます。innodb_ft_cache_sizeでは、キャッシュサイズがテーブルごとに定義されます。 すべてのテーブルにグローバルな制限を設定する方法については、innodb_ft_total_cache_sizeを参照してください。詳細は、InnoDB 全文インデックスキャッシュを参照してください。
-
コマンド行形式 --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[={OFF|ON}]システム変数 innodb_ft_enable_stopwordスコープ グローバル、セッション 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 ONインデックスの作成時に、一連のストップワードが
InnoDBのFULLTEXTインデックスに関連付けられることを指定します。innodb_ft_user_stopword_tableオプションが設定されている場合は、そのテーブルからストップワードが取得されます。 そうでなければ、innodb_ft_server_stopword_tableオプションが設定されている場合は、そのテーブルからストップワードが取得されます。 それ以外の場合は、組み込みのデフォルトストップワードセットが使用されます。詳細は、セクション12.10.4「全文ストップワード」を参照してください。
-
コマンド行形式 --innodb-ft-max-token-size=#システム変数 innodb_ft_max_token_sizeスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Integer デフォルト値 84最小値 10最大値 84InnoDBFULLTEXTインデックスに格納される単語の最大文字長。 この値に制限を設定すると、実在の単語ではなく、検索語句になる可能性の低い英字の任意のコレクションや長いキーワードが省略されることで、インデックスのサイズが削減されるため、クエリーの速度が上がります。詳細は、セクション12.10.6「MySQL の全文検索の微調整」を参照してください。
-
コマンド行形式 --innodb-ft-min-token-size=#システム変数 innodb_ft_min_token_sizeスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Integer デフォルト値 3最小値 0最大値 16InnoDBFULLTEXTインデックスに格納される単語の最小長。 この値を大きくすると、英語の 「a」 や 「to」 などの検索コンテキストで重要ではない一般的な単語が省略されるため、インデックスのサイズが減り、クエリーが高速化されます。 内容で CJK (中国語、日本語、韓国語) 文字セットが使用されている場合は、値 1 を指定します。詳細は、セクション12.10.6「MySQL の全文検索の微調整」を参照してください。
-
コマンド行形式 --innodb-ft-num-word-optimize=#システム変数 innodb_ft_num_word_optimizeスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 2000最小値 1000最大値 10000InnoDBのFULLTEXTインデックスでの各OPTIMIZE TABLE操作時に処理される単語数です。 全文検索インデックスを含むテーブルへの一括挿入または一括更新操作では、すべての変更を組み込むために大量のインデックスのメンテナンスが必要となる可能性があるため、それぞれが最後に終了した場所から再開する一連のOPTIMIZE TABLEステートメントを実行するとよいでしょう。詳細は、セクション12.10.6「MySQL の全文検索の微調整」を参照してください。
-
コマンド行形式 --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テーブルに対応した独自のInnoDBのFULLTEXTインデックスストップワードリストを指定する際に使用されます。 特定のInnoDBテーブルに独自のストップワードリストを構成するには、innodb_ft_user_stopword_tableを使用します。の形式で、db_name/table_nameinnodb_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スコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Integer デフォルト値 2最小値 1最大値 32search index の構築時に
InnoDBFULLTEXTインデックスのテキストをインデックス付けおよびトークン化するためにパラレルで使用されるスレッドの数。関連情報は、セクション15.6.2.4「InnoDB FULLTEXT インデックス」 および
innodb_sort_buffer_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=db_name/table_nameシステム変数 innodb_ft_user_stopword_tableスコープ グローバル、セッション 動的 はい SET_VARヒントの適用いいえ 型 文字列 デフォルト値 NULLこのオプションは、特定のテーブルに独自の
InnoDBのFULLTEXTインデックスストップワードリストを指定する際に使用されます。 すべてのInnoDBテーブル用に独自のストップワードリストを構成するには、innodb_ft_server_stopword_tableを使用します。の形式で、db_name/table_nameinnodb_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=#導入 8.0.18 システム変数 innodb_idle_flush_pctスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 100最小値 0最大値 100InnoDBがアイドル状態の場合のページフラッシュを制限します。innodb_idle_flush_pct値は、InnoDBで使用可能な I/O 操作数/秒を定義するinnodb_io_capacity設定の割合です。 詳細は、アイドル期間中のバッファフラッシュの制限を参照してください。 -
コマンド行形式 --innodb-io-capacity=#システム変数 innodb_io_capacityスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 200最小値 100最大値 (64 ビットプラットフォーム) 2**64-1最大値 (32 ビットプラットフォーム) 2**32-1innodb_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スコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 see description最小値 100最大値 (32 ビットプラットフォーム) 2**32-1最大値 (Unix, 64 ビットプラットフォーム) 2**64-1最大値 (Windows, 64 ビットプラットフォーム) 2**32-1フラッシュアクティビティが遅れている場合、
InnoDBはinnodb_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-1B-tree ページ当たりのレコード数を制限します。 デフォルト値 0 は、制限が課されないことを意味します。 このオプションは、デバッグサポートが
WITH_DEBUGCMake オプションを使用してコンパイルされている場合にのみ使用できます。 -
コマンド行形式 --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_timeoutのSESSION設定を変更でき、そのクライアントのみが影響を受けます。 -
コマンド行形式 --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 デフォルト値 OFFInnoDBにファジーチェックポイントの書込みを強制するには、このデバッグオプションを有効にします。 このオプションは、デバッグサポートがWITH_DEBUGCMake オプションを使用してコンパイルされている場合にのみ使用できます。 -
コマンド行形式 --innodb-log-checkpoint-now[={OFF|ON}]システム変数 innodb_log_checkpoint_nowスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFInnoDBにチェックポイントの書込みを強制するには、このデバッグオプションを有効にします。 このオプションは、デバッグサポートがWITH_DEBUGCMake オプションを使用してコンパイルされている場合にのみ使用できます。 -
コマンド行形式 --innodb-log-checksums[={OFF|ON}]システム変数 innodb_log_checksumsスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 ONredo ログページのチェックサムを有効または無効にします。
innodb_log_checksums=ONでは、redo ログページのCRC-32Cチェックサムアルゴリズムを有効にします。innodb_log_checksumsが無効な場合、redo ログページのチェックサムフィールドの内容は無視されます。redo ログヘッダーページおよび redo ログチェックポイントページのチェックサムは無効化されません。
-
コマンド行形式 --innodb-log-compressed-pages[={OFF|ON}]システム変数 innodb_log_compressed_pagesスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 ONre-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スコープ グローバル 動的 いいえ 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スコープ グローバル 動的 いいえ 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=dir_nameシステム変数 innodb_log_group_home_dirスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 ディレクトリ名 InnoDBの Redo ログファイルへのディレクトリパスです。この数は、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スコープ グローバル 動的 はい 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スコープ グローバル 動的 はい 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スコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 8192最小値 512 (log file block size)最大値 Equal to innodb_page_sizeredo ログの先行書込みブロックサイズをバイト単位で定義します。 「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_sizeにinnodb_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[={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スコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 1024最小値 100最大値 (64 ビットプラットフォーム) 2**64-1最大値 (32 ビットプラットフォーム) 2**32-1InnoDBのバッファープールでのフラッシュ操作のアルゴリズムおよびヒューリスティクスに影響を与えるパラメータです。 主に、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スコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 数値 デフォルト値 90最小値 0最大値 99.99InnoDBは、ダーティーページの割合がこの値を超えないように、バッファープールからデータをフラッシュしようと試みます。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スコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 0最小値 0最大値 4294967295必要な最大パージラグを定義します。 この値を超えると、
INSERT、UPDATEおよびDELETE操作に遅延が課され、パージが捕捉されるまでの時間が許可されます。 デフォルト値は 0 です。これは、最大パージラグおよび遅延がないことを意味します。詳細は、セクション15.8.9「パージ構成」を参照してください。
-
コマンド行形式 --innodb-max-purge-lag-delay=#システム変数 innodb_max_purge_lag_delayスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 0最小値 0最大値 10000000innodb_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スコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 1073741824最小値 10485760最大値 2**64-1undo テーブルスペースのしきい値サイズを定義します。 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_DEBUGCMake オプションを使用してコンパイルされている場合にのみ使用できます。 関連情報については、セクション15.8.11「インデックスページのマージしきい値の構成」を参照してください。 -
コマンド行形式 --innodb-monitor-disable={counter|module|pattern|all}システム変数 innodb_monitor_disableスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 文字列 InnoDBmetrics 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={counter|module|pattern|all}システム変数 innodb_monitor_enableスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 文字列 InnoDBmetrics 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={counter|module|pattern|all}システム変数 innodb_monitor_resetスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 列挙 デフォルト値 empty string有効な値 countermodulepatternallInnoDBmetrics 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={counter|module|pattern|all}システム変数 innodb_monitor_reset_allスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 列挙 デフォルト値 empty string有効な値 countermodulepatternallInnoDBmetrics counters のすべての値 (最小、最大など) をリセットします。 カウンタデータはINFORMATION_SCHEMA.INNODB_METRICSテーブルを使用してクエリーすることができます。 使用法については、セクション15.15.6「InnoDB INFORMATION_SCHEMA メトリックテーブル」を参照してください。 -
コマンド行形式 --innodb-numa-interleave[={OFF|ON}]システム変数 innodb_numa_interleaveスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFNUMA インターリーブメモリーポリシーを有効にして、
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スコープ グローバル 動的 はい 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スコープ グローバル 動的 はい 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-1InnoDBテーブルの 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スコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Integer デフォルト値 -1(自動サイズ設定を示します。このリテラル値を割り当てないでください)最小値 10最大値 4294967295この変数は、複数の
InnoDBtablespaces を使用する場合にのみ関連します。 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[={OFF|ON}]システム変数 innodb_optimize_fulltext_onlyスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFInnoDBテーブルでのOPTIMIZE TABLEの動作方法を変更します。FULLTEXTインデックスを含むInnoDBテーブルのメンテナンス操作時に、一時的に有効にするために使用されます。デフォルトでは、
OPTIMIZE TABLEはテーブルの clustered index のデータを再編成します。 このオプションを有効にすると、OPTIMIZE TABLEはテーブルデータの再編成をスキップし、かわりにInnoDBFULLTEXTインデックスに対して新しく追加、削除および更新されたトークンデータを処理します。 詳細は、InnoDB 全文インデックスの最適化を参照してください。 -
コマンド行形式 --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.confで mysqld 実行ユーザー認可を構成できます。 たとえば、mysqld がmysqlユーザーで実行されている場合、次の行を/etc/security/limits.confに追加することでmysqlユーザーを認可できます:mysql hard nice -20 mysql soft nice -20systemd 管理対象システムの場合は、ローカライズされた systemd 構成ファイルで
LimitNICE=-20を指定することで同じことを実現できます。 たとえば、/etc/systemd/system/mysqld.service.d/override.confでoverride.confという名前のファイルを作成し、次のエントリを追加します:[Service] LimitNICE=-20override.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スコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 列挙 デフォルト値 16384有効な値 40968192163843276865536InnoDBtablespaces 用の 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=#導入 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[={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[={OFF|ON}]システム変数 innodb_print_ddl_logsスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFこのオプションを有効にすると、MySQL は DDL ログを
stderrに書き込みます。 詳細は、DDL ログの表示を参照してください。 -
コマンド行形式 --innodb-purge-batch-size=#システム変数 innodb_purge_batch_sizeスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 300最小値 1最大値 5000history list から一度に解析および処理をパージする undo ログページの数を定義します。 マルチスレッドパージ構成では、コーディネータパージスレッドは
innodb_purge_batch_sizeをinnodb_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スコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Integer デフォルト値 4最小値 1最大値 32InnoDBpurge 操作専用のバックグラウンドスレッドの数。 この値を大きくすると、追加のパージスレッドが作成されるため、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[={OFF|ON}]システム変数 innodb_random_read_aheadスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFInnoDBの I/O を最適化するために、ランダムな先読み技術を有効にします。様々なタイプの先読みリクエストのパフォーマンスに関する考慮事項の詳細は、セクション15.8.3.4「InnoDB バッファープールのプリフェッチ (先読み) の構成」 を参照してください。 一般的な I/O チューニングのアドバイスについては、セクション8.5.8「InnoDB ディスク I/O の最適化」を参照してください。
-
コマンド行形式 --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スコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Integer デフォルト値 4最小値 1最大値 64InnoDBでの読み取り操作で使用される 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[={OFF|ON}]システム変数 innodb_read_onlyスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFInnoDBを読取り専用モードで起動します。 読み取り専用メディア上のデータベースアプリケーションまたはデータセットを配布するために使用されます。 複数のインスタンス間で同じデータディレクトリを共有する際に、データウェアハウスで使用することもできます。 詳細は、セクション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_nameENGINE=engine_name
また、
mysqlシステムデータベースの他のテーブルでは、MySQL 8.0 のInnoDBストレージエンジンが使用されます。 これらのテーブルを読取り専用にすると、テーブルを変更する操作が制限されます。 例:付与テーブルで
InnoDBが使用されているため、CREATE USERやGRANTなどのアカウント管理ステートメントは失敗します。mysql.pluginシステムテーブルでInnoDBが使用されているため、INSTALL PLUGINおよびUNINSTALL PLUGINプラグイン管理ステートメントは失敗します。mysql.funcシステムテーブルでInnoDBが使用されているため、CREATE FUNCTIONおよびDROP FUNCTIONUDF 管理ステートメントは失敗します。
-
コマンド行形式 --innodb-redo-log-archive-dirs導入 8.0.17 システム変数 innodb_redo_log_archive_dirsスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 文字列 デフォルト値 NULLredo ログアーカイブファイルを作成できるラベル付きディレクトリを定義します。 複数のラベル付きディレクトリをセミコロン区切りリストで定義できます。 例:
innodb_redo_log_archive_dirs='label1:/backups1;label2:/backups2'ラベルには任意の文字列を指定できますが、コロン (:) は使用できません。 空のラベルも使用できますが、この場合もコロン (:) が必要です。
パスを指定する必要があり、ディレクトリが存在する必要があります。 パスにはコロン (':') を含めることができますが、セミコロン (;) は使用できません。
-
コマンド行形式 --innodb-redo-log-encrypt[={OFF|ON}]システム変数 innodb_redo_log_encryptスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFInnoDBdata-at-rest encryption feature を使用して暗号化されたテーブルの redo ログデータの暗号化を制御します。 redo ログデータの暗号化は、デフォルトで無効になっています。 詳細は、redo ログの暗号化を参照してください。 -
コマンド行形式 --innodb-replication-delay=#システム変数 innodb_replication_delayスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 0最小値 0最大値 4294967295innodb_thread_concurrencyに到達した場合のレプリカサーバーのレプリケーションスレッド遅延 (ミリ秒)。 -
コマンド行形式 --innodb-rollback-on-timeout[={OFF|ON}]システム変数 innodb_rollback_on_timeoutスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFInnoDBrolls back では、トランザクションタイムアウトの最後のステートメントのみがデフォルトで実行されます。--innodb-rollback-on-timeoutが指定されている場合、トランザクションタイムアウトにより、InnoDBはトランザクション全体を中断およびロールバックします。詳細は、セクション15.21.4「InnoDB のエラー処理」を参照してください。
-
コマンド行形式 --innodb-rollback-segments=#システム変数 innodb_rollback_segmentsスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 128最小値 1最大値 128innodb_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_DEBUGCMake オプションを使用してコンパイルされている場合にのみ使用できます。 -
コマンド行形式 --innodb-sort-buffer-size=#システム変数 innodb_sort_buffer_sizeスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Integer デフォルト値 1048576最小値 65536最大値 67108864InnoDBインデックスの作成時にデータのソートに使用されるソートバッファのサイズを指定します。 指定されたサイズは、内部ソートのためにメモリーに読み取られ、ディスクに書き込まれるデータの量を定義します。 このプロセスは 「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スコープ グローバル 動的 はい 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[={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=valueシステム変数 innodb_stats_methodスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 列挙 デフォルト値 nulls_equal有効な値 nulls_equalnulls_unequalnulls_ignoredInnoDBテーブルのインデックス値の分布に関する統計を収集するときに、サーバーがNULL値を処理する方法です。 許可される値は、nulls_equal、nulls_unequalおよびnulls_ignoredです。nulls_equalの場合、すべてのNULLインデックス値は等しいとみなされ、NULL値の数と等しいサイズの単一の値グループを形成します。nulls_unequalの場合、NULL値同士を同等として扱わず、それぞれのNULLはサイズが 1 の別個のグループを生成します。nulls_ignoredの場合、NULL値は無視されます。テーブル統計の生成に使用される方法は、セクション8.3.8「InnoDB および MyISAM インデックス統計コレクション」 で説明されているように、オプティマイザがクエリーを実行するためにインデックスを選択する方法に影響します。
-
コマンド行形式 --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はmodeONとOFFのいずれか (または1と0のいずれか) です。 設定を変更するには、グローバルシステム変数を設定するのに十分な権限 (セクション5.1.9.1「システム変数権限」 を参照) が必要で、すべての接続の操作にすぐに影響します。 -
コマンド行形式 --innodb-stats-persistent[={OFF|ON}]システム変数 innodb_stats_persistentスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 ONInnoDBインデックス統計をディスクに永続化するかどうかを指定します。 それ以外の場合は、頻繁に統計が再計算される可能性があります。これにより、クエリーの実行計画が変化する可能性があります。 テーブルが作成されると、この設定が各テーブルとともに格納されます。 テーブルを作成する前にグローバルレベルで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[={OFF|ON}]システム変数 innodb_status_outputスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFF標準
InnoDBモニターの定期出力を有効または無効にします。 また、InnoDBLock Monitor の定期的な出力を有効または無効にする際に、innodb_status_output_locksと組み合わせて使用されます。 詳細は、セクション15.17.2「InnoDB モニターの有効化」を参照してください。 -
コマンド行形式 --innodb-status-output-locks[={OFF|ON}]システム変数 innodb_status_output_locksスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFInnoDBロックモニターを有効または無効にします。 有効にすると、InnoDBロックモニターは、SHOW ENGINE INNODB STATUS出力および MySQL エラーログに出力される定期的な出力にロックに関する追加情報を出力します。InnoDBロックモニターの定期的な出力は、標準のInnoDBモニター出力の一部として出力されます。 したがって、InnoDBロックモニターで MySQL エラーログに定期的にデータを出力するには、標準のInnoDBモニターを有効にする必要があります。 詳細は、セクション15.17.2「InnoDB モニターの有効化」を参照してください。 -
コマンド行形式 --innodb-strict-mode[={OFF|ON}]システム変数 innodb_strict_modeスコープ グローバル、セッション 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 ONinnodb_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=ステートメントを使用して、実行時にmodeinnodb_strict_modeを有効または無効にすることもできます。ここで、はmodeONまたはOFFです。GLOBAL設定を変更するには、グローバルシステム変数を設定するのに十分な権限 (セクション5.1.9.1「システム変数権限」 を参照) が必要であり、その後接続するすべてのクライアントの操作に影響します。 任意のクライアントがinnodb_strict_modeのSESSION設定を変更でき、そのクライアントのみが設定の影響を受けます。innodb_strict_modeは、general tablespaces には適用できません。 一般的なテーブルスペースのテーブルスペース管理ルールは、innodb_strict_modeとは無関係に厳密に適用されます。 詳細は、セクション13.1.21「CREATE TABLESPACE ステートメント」を参照してください。 -
コマンド行形式 --innodb-sync-array-size=#システム変数 innodb_sync_array_sizeスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Integer デフォルト値 1最小値 1最大値 1024mutex/lock 待機配列のサイズを定義します。 値を大きくすると、スレッドの調整に使用される内部データ構造が分割され、多数の待機スレッドを持つワークロードの同時実行性が向上します。 この設定は MySQL インスタンスの起動時に構成する必要があり、あとで変更することはできません。 頻繁に多数の待機スレッドを生成するワークロード (通常は 768 を超える) では、値を増やすことをお薦めします。
-
コマンド行形式 --innodb-sync-spin-loops=#システム変数 innodb_sync_spin_loopsスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 30最小値 0最大値 4294967295スレッドが中断される前に、
InnoDB相互排他ロックが開放されるまでスレッドが待機する回数です。 -
コマンド行形式 --innodb-sync-debug[={OFF|ON}]システム変数 innodb_sync_debugスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFInnoDBストレージエンジンの同期デバッグ検査を有効にします。 このオプションは、デバッグサポートがWITH_DEBUGCMake オプションを使用してコンパイルされている場合にのみ使用できます。 -
コマンド行形式 --innodb-table-locks[={OFF|ON}]システム変数 innodb_table_locksスコープ グローバル、セッション 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 ONautocommit = 0の要求を受け入れます。MySQL はすべてのスレッドがテーブルに対するすべてのロックを解放するまで、の場合、InnoDBはLOCK TABLESLOCK 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=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データファイルと同じ名前を付けることはできません。 グローバル一時テーブルスペースデータファイルを作成できない場合やエラーが発生した場合は、致命的として扱われ、サーバーの起動は拒否されます。ファイルサイズは、
K、Mまたは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:500MBautoextendオプションを使用すると、データファイルの空き領域がなくなると、データファイルのサイズが自動的に増加します。 デフォルトでは、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=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スコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 0最小値 0最大値 1000InnoDB内で許可されるスレッドの最大数を定義します。 値 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スコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 10000最小値 0最大値 1000000InnoDBキューに参加するまでに、InnoDBスレッドがスリープ状態になる期間 (マイクロ秒単位) です。 デフォルト値は 10000 です。 0 の値はスリープを無効にします。innodb_adaptive_max_sleep_delayをinnodb_thread_sleep_delayに許可する最大値に設定すると、InnoDBは現在のスレッドスケジュールアクティビティに応じてinnodb_thread_sleep_delayを自動的に上下に調整します。 この動的調整は、システムが軽くロードされているとき、またはほぼ全容量で動作しているときに、スレッドスケジューリングメカニズムが円滑に機能するのに役立ちます。詳細は、セクション15.8.4「InnoDB のスレッド並列性の構成」を参照してください。
-
コマンド行形式 --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は、MySQLtmpdir設定をオーバーライドしますが、オンラインの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_DEBUGCMake オプションを使用してコンパイルされている場合にのみ使用できます。 -
コマンド行形式 --innodb-trx-rseg-n-slots-debug=#システム変数 innodb_trx_rseg_n_slots_debugスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 0最大値 1024TRX_RSEG_N_SLOTSを、undo ログセグメントの空きスロットを検索するtrx_rsegf_undo_find_free関数の特定の値に制限するデバッグフラグを設定します。 このオプションは、デバッグサポートがWITH_DEBUGCMake オプションを使用してコンパイルされている場合にのみ使用できます。 -
コマンド行形式 --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[={OFF|ON}]システム変数 innodb_undo_log_encryptスコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Boolean デフォルト値 OFFInnoDBdata-at-rest encryption feature を使用して暗号化されたテーブルの undo ログデータの暗号化を制御します。 個別の undo tablespaces に存在する undo ログにのみ適用されます。 セクション15.6.3.4「undo テーブルスペース」を参照してください。 システムテーブルスペースに存在する undo ログデータの暗号化はサポートされていません。 詳細は、undo ログの暗号化を参照してください。 -
コマンド行形式 --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スコープ グローバル 動的 はい SET_VARヒントの適用いいえ 型 Integer デフォルト値 2最小値 2最大値 127InnoDBで使用される undo tablespaces の数を定義します。 デフォルト値と最小値は 2 です。注記innodb_undo_tablespaces変数は非推奨であり、MySQL 8.0.14 の時点では構成できなくなりました。 将来のリリースで削除される予定です。詳細は、セクション15.6.3.4「undo テーブルスペース」を参照してください。
-
コマンド行形式 --innodb-use-native-aio[={OFF|ON}]システム変数 innodb_use_native_aioスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Boolean デフォルト値 ONLinux の非同期 I/O サブシステムを使用するかどうかを指定します。 この変数は Linux システムにのみ適用され、サーバーの実行中は変更できません。 通常、このオプションはデフォルトで有効になっているため、構成する必要はありません。
Windows システムで
InnoDBが持つ asynchronous I/O 機能は、Linux システムで使用できます。 (その他の Unix に似たシステムでは、引き続き同期 I/O 呼び出しが使用されます。) この機能により、SHOW ENGINE INNODB STATUS\G出力に多くの保留中の読取り/書込みが通常表示される、大量の I/O-bound システムのスケーラビリティが向上します。大量の
InnoDBI/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のバージョン番号です。 MySQL 8.0 では、InnoDBの個別のバージョン番号は適用されず、この値はサーバーのversion番号と同じです。 -
コマンド行形式 --innodb-write-io-threads=#システム変数 innodb_write_io_threadsスコープ グローバル 動的 いいえ SET_VARヒントの適用いいえ 型 Integer デフォルト値 4最小値 1最大値 64InnoDBの書き込み操作で使用される 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 の最適化」を参照してください。