スマートスタイル TECH BLOG

データベース&クラウド技術情報

MySQL 8.0 の innodb_dedicated_server について

innodb_dedicated_server は MySQL 8.0 で追加されたオプションで、サーバーのメモリー量から自動的にInnoDBのパラメータを設定します。(デフォルトOFF)

MySQL :: MySQL 8.0 Reference Manual :: 15.13 InnoDB Startup Options and System Variables

パラメーターの設定ルール

「dedicated」と名前がついている通り、MySQL専有サーバーでの利用を想定しています。
現在、このパラメーターをONにした場合に変更されるパラメーターは以下の3つのみです。

  • innodb_buffer_pool_size
  • innodb_log_file_size
  • innodb_flush_method

搭載メモリー量によって設定される値は以下の通りです

メモリー量 innodb_buffer_pool_size innodb_log_file_size
1GB未満 128MB 48MiB
4GB以下 搭載メモリの50% 128MiB
8GB以下 搭載メモリの75% 512MiB
16GB以下 搭載メモリの75% 1024MiB
16GBより多い 搭載メモリの75% 2048MiB

innodb_flush_method は O_DIRECT_NO_FSYNC に設定されます(使用できない場合はデフォルト値のままです)

参考: MySQL :: MySQL 8.0 Reference Manual :: 15.6.13 Enabling Automatic Configuration for a Dedicated MySQL Server

innodb_dedicated_server を試してみる

デフォルトの場合(innodb_dedicated_server=OFF)

以下のようにデフォルト値のままです。

innodb_dedicated_server=ON(メモリ62GB搭載)

ルールに基づいて設定値が変わっていることが確認できます。

変更対象のパラメーターの値を設定していた場合

変更対象のパラメーターを事前に設定していると innodb_dedicated_server を ON にしていても無視されます。下記は innodb_buffer_pool_size を設定していた場合、エラーログにワーニングとして出力されます。

まとめ

innodb_dedicated_server の設定を有効にしておくと、MySQLが再起動する度に搭載メモリ量を確認して設定するようなので、専有よりもリソースが可変するdockerのようなコンテナ環境で使用するほうが便利な機能かもしれません。

Return Top