人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

以下の文章でMYSQL(innodb)の設定値の理解はあっていますでしょうか?innodb_buffer_pool_size、innodb_log_buffer_size、innodb_log_file_size、チェックポイント、WALの関係がいまいち飲み込めません。

innodb_buffer_pool_sizeはselectやupdate,insert時にデータやインデックスをキャッシュするためのメモリ上の領域です。メモリを多く設定すると、selectがメモリ上で完結する場合もあるので、i/oが減ります。innodb_log_file_size = WAL です。この値の70-80%になるとチェックポイントにたっしてコミットされます。

●質問者: cbic
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:I/O innodb MySQL SELECT いまいち
○ 状態 :キャンセル
└ 回答数 : 1/1件

▽最新の回答へ

1 ● りゅう

全般的に理解が間違っている感じがします。


まず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はログファイルのサイズです。

大きなサイズを指定することでチェックポイントのフラッシュ回数を減らすことができます。

その替わりにクラッシュした時の復旧のスピードが遅くなります。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ