InnoDB バッファプールのサイズを調整する
このステップでは、InnoDB のパフォーマンスに重要なパラメータである innodb_buffer_pool_size
を調整します。バッファプールは、InnoDB がデータとインデックスページをキャッシュするメモリ領域です。そのサイズを増やすと、特に読み取りが多いワークロードでパフォーマンスが大幅に向上する可能性があります。ただし、サイズを大きく設定しすぎると、メモリが枯渇する可能性があります。
変更を加える前に、システムの利用可能なメモリを理解することが重要です。一般的な推奨事項は、サーバーの RAM の約 70 - 80% を InnoDB バッファプールに割り当てることですが、これは具体的なワークロードやサーバー上で実行されている他のアプリケーションによって異なります。
ここではリソースが制限された LabEx VM 環境にいるため、システムを圧迫することなく設定プロセスを実演できる適切な値にバッファプールのサイズを調整します。デフォルト値(前のステップで確認した値)から 256MB に増やします。
innodb_buffer_pool_size
を変更するには、MySQL の設定ファイルを変更する必要があります。このファイルの場所はシステムによって異なりますが、一般的には /etc/mysql/my.cnf
または /etc/my.cnf
にあります。
まず、設定ファイルの正確な場所を特定しましょう。次のコマンドを試してみることができます。
sudo find / -name my.cnf
このコマンドは、ファイルシステム全体を検索して my.cnf
という名前のファイルを探します。Docker コンテナ内にいるため、検索範囲は限られており、比較的すぐにファイルが見つかるはずです。
my.cnf
ファイルの場所が特定できたら(この例では /etc/mysql/my.cnf
と仮定します)、nano
などのテキストエディタを使用して編集できます。
sudo nano /etc/mysql/my.cnf
my.cnf
ファイルはセクションに分かれています。[mysqld]
セクションを探します。存在しない場合は、追加することができます。[mysqld]
セクション内で、innodb_buffer_pool_size
パラメータを追加または変更します。
[mysqld]
innodb_buffer_pool_size=256M
変更を保存してテキストエディタを終了します。nano
では、Ctrl+X
を押し、次に Y
を押して変更を確認し、最後に Enter
を押して保存します。
設定ファイルを変更した後、変更を有効にするには MySQL サーバーを再起動する必要があります。Docker コンテナ内にいるため、systemctl
を使用することはできません。代わりに、mysqladmin
コマンドを使用してサーバーを停止し、その後起動します。
まず、MySQL サーバーを停止します。
mysqladmin -u root -p shutdown
root パスワードの入力を求められます。パスワードを入力して続行します。
次に、MySQL サーバーを起動します。通常の環境では systemctl start mysql
を使用しますが、LabEx VM の Docker 環境では、systemctl
が使用できないため、mysqld_safe
コマンドを使用して MySQL サーバーを起動する必要があります。このコマンドは、systemctl
が利用できない環境で MySQL サーバーを起動するために設計されています。
sudo mysqld_safe &
コマンドの最後の &
は、サーバーをバックグラウンドで実行します。ターミナルにいくつかのログ情報が出力されます。
これで、コマンドラインインターフェイスを使用して MySQL サーバーに再接続します。
mysql -u root -p
そして、innodb_buffer_pool_size
が更新されたことを確認します。
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
出力に新しい値(268435456、これは 256MB をバイトに換算した値)が反映されているはずです。
+--------------------------+-----------+
| Variable_name | Value |
+--------------------------+-----------+
| innodb_buffer_pool_size | 268435456 |
+--------------------------+-----------+
1 row in set (0.00 sec)
おめでとうございます!InnoDB バッファプールのサイズを正常に調整しました。次のステップでは、クエリパフォーマンスを監視して、この変更の影響を確認します。