innodb_dedicated_server
が有効な場合、InnoDB
は次の変数を自動的に構成します:
innodb_buffer_pool_size
innodb_log_file_size
innodb_log_files_in_group
(MySQL 8.0.14 の時点)innodb_flush_method
MySQL インスタンスが、使用可能なすべてのシステムリソースを使用できる専用サーバーに存在する場合にのみ、innodb_dedicated_server
を有効にすることを検討してください。 たとえば、MySQL のみを実行する Docker コンテナまたは専用 VM で MySQL Server を実行する場合は、有効化を検討してください。 MySQL インスタンスが他のアプリケーションとシステムリソースを共有している場合、innodb_dedicated_server
を有効にすることはお薦めしません。
次の情報では、各変数が自動的に構成される方法について説明します。
-
innodb_buffer_pool_size
バッファプールサイズは、サーバーで検出されたメモリー量に従って構成されます。
表 15.8 自動的に構成されるバッファプールサイズ
検出されたサーバーメモリー バッファプールサイズ 1GB 未満 128MiB (デフォルト値) 1GB から 4GB detected server memory
* 0.54GB を超える detected server memory
* 0.75
-
innodb_log_file_size
MySQL 8.0.14 では、ログファイルサイズは自動的に構成されたバッファプールサイズに従って構成されます。
表 15.9 自動的に構成されるログファイルサイズ
バッファプールサイズ ログファイルのサイズ 8GB 未満 512MiB 8GB から 128GB 1024MiB 128GB を超える 2048MiB
-
innodb_log_files_in_group
ログファイルの数は、自動的に構成されたバッファプールサイズ (GB) に従って構成されます。
innodb_log_files_in_group
変数の自動構成が MySQL 8.0.14 に追加されました。表 15.11 自動的に構成されるログファイルの数
バッファプールサイズ ログファイル数 8GB 未満 ROUND( buffer pool size
)8GB から 128GB ROUND( buffer pool size
* 0.75)128GB を超える 64 注記丸められたバッファープールサイズの値が 2G バイト未満の場合、
innodb_log_files_in_group
の最小値 2 が適用されます。 -
innodb_flush_method
innodb_dedicated_server
が有効になっている場合、flush メソッドはO_DIRECT_NO_FSYNC
に設定されます。O_DIRECT_NO_FSYNC
設定を使用できない場合は、デフォルトのinnodb_flush_method
設定が使用されます。InnoDB
は、I/O,のフラッシュ中にO_DIRECT
を使用しますが、書込み操作のたびにfsync()
システムコールをスキップします。警告MySQL 8.0.14 より前では、この設定は XFS や EXT4 などのファイルシステムには適していません。これらのファイルシステムでは、
fsync()
システムコールを使用してファイルシステムメタデータの変更を同期する必要があります。MySQL 8.0.14 の時点では、
fsync()
は、新しいファイルの作成後、ファイルサイズの増加後およびファイルのクローズ後にコールされ、ファイルシステムメタデータの変更が確実に同期されます。 各書込み操作の後も、fsync()
システムコールはスキップされます。redo ログファイルとデータファイルが異なるストレージデバイスに存在し、データファイルの書込みがバッテリバックされていないデバイスキャッシュからフラッシュされる前に予期しない終了が発生した場合、データが失われる可能性があります。 redo ログファイルおよびデータファイルに別の記憶域デバイスを使用する場合、およびデータファイルがバッテリバックアップされていないキャッシュを持つデバイスに存在する場合は、かわりに
O_DIRECT
を使用します。
自動的に構成されたオプションがオプションファイルまたは他の場所で明示的に構成されている場合は、明示的に指定された設定が使用され、次のような起動警告が stderr
に出力されます:
[警告] [000000] InnoDB: innodb_buffer_pool_size=134217728 が明示的に指定されているため、innodb_buffer_pool_size ではオプション innodb_dedicated_server は無視されます。
あるオプションを明示的に構成しても、他のオプションの自動構成は妨げられません。
innodb_dedicated_server
が有効で、innodb_buffer_pool_size
がオプションファイルで明示的に構成されている場合でも、innodb_log_file_size
および innodb_log_files_in_group
は、バッファプールのサイズの構成に使用されていなくても、サーバーで検出されたメモリー量に基づいて計算されたバッファプールサイズ値に基づいて自動的に構成されます。
自動的に構成された設定は、MySQL サーバーが起動されるたびに必要に応じて評価および再構成されます。