質問: AP サーバーに同居させる形で MySQL を動かしている場合、物理メモリの80%などをメモリ上にバッファ確保する、といった使い方はあまり好ましくないです。 むしろ、なるべく最小限で動かして、利用可能ならばファイルキャッシュを活用してくれた方が、サーバー管理する側からすれば嬉しくなります。 ### 質問 * MySQL で InnoDB を利用している場合に、 MySQL はどれだけ OS のファイルキャッシュを有効活用できますか? + より具体的に言うと、`innodb_buffer_pool_size` を小さく絞っているが、メモリは十分に大きい場合、その中で `innodb_buffer_pool_size` を十分大きくした場合と比べて、パフォーマンスはどのように変化しますか? ### 想定環境 * MySQL は linux で動作させる想定です。
回答: `innodb_buffer_pool_size`は物理メモリの80%、などと言われるのは、OSのキャッシュよりもRDBMSのキャッシュとして使った方が遙かに効率がよいからです。MySQLに限らず、RDBMSに共通した話です。 物理メモリの80%というのはリソースを独占できる場合の目安程度の話で、リソースを独占できる場合でも物理メモリが1GBなのか128GBなのかでも話が変わりますし、リソースを共有する他のプロセスがあるのであればそれぞれの要求量を踏まえて、MySQLに割り当てる適切な容量を決める必要があります。