innodb_buffer_pool_sizeはselectやupdate,insert時にデータやインデックスをキャッシュするためのメモリ上の領域です。メモリを多く設定すると、selectがメモリ上で完結する場合もあるので、i/oが減ります。innodb_log_file_size = WAL です。この値の70-80%になるとチェックポイントにたっしてコミットされます。
全般的に理解が間違っている感じがします。
まずWAL(write ahead logging)はPostgreSQLの用語で、データベースのディスクイメージを操作する際には必ずその内容をログファイルに記録し、ログファイルに記録された内容を元に実際にデータベースのディスクイメージを操作するという仕組みのことを言います。
参考:http://www.postgresql.jp/document/pg800doc/html/wal.html
チェックポイントはログファイル中のどの部分までが実際にデータベースのディスクイメージに反映されているか示すポイントです。
MySQLのログはリングバッファ的に使われる為、ログを追加するスペースが無くなった場合には、チェックポイント以前のログをデータベースのディスクイメージに反映し、チェックポイントを更新する必要があります(チェックポイントのフラッシュ)。
参考:http://dev.mysql.com/doc/refman/5.1/ja/innodb-checkpoints.html
バッファプールはデータベースのディスクイメージをメモリ上にバッファするためのものです。
大きければ大きいほどより多くのデータをメモリ上にバッファできるため、ディスクIOが少なくなります。
このサイズを指定するのがinnodb_buffer_pool_sizeです。
innodb_log_buffer_sizeはログを書き込む際に使用するメモリ上のバッファのサイズです。
バッファのフラッシュはトランザクションがコミットされた時か、バッファがいっぱいになった時に起ります。
コミットする前にバッファのフラッシュが起る可能性があるような大きなトランザクションを実行する場合は、このサイズを大きくすることで性能が改善します。
innodb_log_file_sizeはログファイルのサイズです。
大きなサイズを指定することでチェックポイントのフラッシュ回数を減らすことができます。
その替わりにクラッシュした時の復旧のスピードが遅くなります。
コメント(1件)
>この値の70-80%になるとチェックポイントにたっして
この数値は、どこからの引用でしょうか?