🌟

RDS(MySql)でのinnodb_buffer_pool_sizeについて

2024/02/08に公開

innodb_buffer_pool_sizeの役割

このパラメータは、InnoDBがテーブルやインデックスデータをメモリ内でキャッシュするためのバッファプール(メモリ領域)のサイズを設定するものです。設定することにより、ディスクI/Oの回数を減らしてデータベースのパフォーマンスを向上させることができます。

innodb_buffer_pool_sizeの働き

このパラメータのデフォルト値は使用可能なメモリの3/4に設定されていますが、実際のワークロードに応じて調整する必要があります。たとえば、保持しているデータ量に対してアクセスするデータの量が少ない場合は、バッファプールを小さくしても問題ありません。逆に、保持しているデータのほとんどに頻繁にアクセスする場合は、より大きなバッファプールが必要になります。

バッファプールの使用状況はSHOW ENGINE INNODB STATUS\Gコマンドで確認できます。このコマンドを使うと、バッファプール内のフリーバッファの量や、アクセスされずにバッファプールから追い出されたデータの頻度(evicted without access)などが確認できます。もし割り当てられたバッファプールのサイズが大きすぎる場合は、ほとんど使用されていないメモリが多くなり、それが原因でパフォーマンスが低下することがあります。逆に、バッファプールが小さすぎると、キャッシュミスが増えてディスクI/Oが頻繁に発生し、パフォーマンスが低下します。

このため、innodb_buffer_pool_sizeの値は、保持しているデータの量とアクセスパターンに基づいて慎重に調整することが重要です。必要に応じてインスタンスのサイズを大きくしてメモリ容量を増やし、その後でバッファプールのサイズを適切に設定することが推奨されます。

参考

https://aws.amazon.com/jp/blogs/news/best-practices-for-configuring-parameters-for-amazon-rds-for-mysql-part-1-parameters-related-to-performance/

Discussion