2012-03-29 32 views
0

以下は、ログファイルグループについての理解です。innodb_buffer_poolのサイズよりも大きいinnodb_log_filesのサイズを持たない理由

innodbテーブルが挿入/更新されるたびに、それらはinnodb_log_buffer_sizeに取り込まれます。 innodb_log_buffer_sizeがいっぱいになったり、ディスクにフラッシュする時間があった場合、それらはグループ内で管理され、同時にテーブルスペースでコミットされたinnodb_log_filesに書き込まれます。

私の質問は、innodb_buffer_poolのサイズよりもinnodb_log_filesの総サイズを大きくするべきではなく、ディスクにフラッシュしているのになぜこれらのログファイルに書き込むべきなのでしょうか?

私はこれ以上Web上で適切な説明を得ることができませんでしたが、私は理解できませんでした。私にはより良い説明をしてください。

本当にありがとうございます。 よろしく、 ウダイ

答えて

1
Now my question is that why we should not have the collective size of innodb_log_files more than the size of the innodb_buffer_pool and why should we write to these log files though we are flushing it to the disc...? 

- >常にこの値* innodb_log_file_sizeinnodb_log_files_in_group以上でなければなりませんinnodb_buffer_pool_sizeのように述べている場合、私はわかりません。 もちろん! innodb_buffer_pool_sizeの推奨サイズは、Innodbのみのインストールで使用可能なメモリの70〜80%にする必要があります。デフォルトのサイズは8MBより大きくする必要があります。

innodb_log_buffer_size大規模なログバッファを使用すると、トランザクションがコミットされる前にログをディスクに書き込む必要なく大規模なトランザクションを実行できます。したがって、大きなトランザクションがある場合、ログバッファを大きくすると、ディスクI/Oが節約されます。

innodb_log_file_size値が大きいほど、バッファー・プール内のチェックポイント・フラッシュ・アクティビティーが少なくて済み、ディスクI/Oが節約されます。しかし、ログファイルが大きくなると、クラッシュした場合の復旧が遅くなります。 Innodb_os_log_written変数を数分間監視し、InnoDBトランザクションログに書き込まれるバイト数を推定する必要があります。この値に3600(1時間)を掛けて、innodb_log_files_in_groupで割って、適切なログファイルサイズを選択することができます。

innodb_log_buffer_sizeは、ディスクI/Oを保存するためにこれらのログファイルに内部でログオンするために内部的に使用します。

+0

このチェックポイントは何ですか? – Uday

+1

InnoDBのflushメソッドの動作については、このリンクを参照してください: 1)http://dev.mysql.com/doc/refman/5.0/en/innodb-parameters.html#sysvar_innodb_flush_method 2)http:// dev readline InnoDBは、ログファイルのその部分にREDOエントリが含まれるすべてのダーティバッファプールページをディスクにフラッシュする必要があります。必要に応じて、InnoDBは適切なダーティページをフラッシュしてログファイル内にスペースを確保することによって、いわゆる「シャープチェックポイント」を実行します。 –

+0

は偉大なマヘスのように聞こえる....あなたの精巧さに感謝します。 – Uday

関連する問題