web-dev-qa-db-ja.com

MySQL `innodb_log_file_size`:どのくらいの大きさですか?

多くの answers 、ディスカッション、コメントでは、一般的な知識は「innodb_log_file_sizeをinndb_buffer_pool_sizeの25%に設定すること」です。

かなり大きなバッファプールはどうですか?たとえば、64GiBのメモリを搭載したサーバーがあり、バッファプールは現在38GiBです。その25%は9.5GiBです。 「大きすぎる」innodb_log_file_sizeを「小さすぎる」ままにすることのリスクは何ですか?

64GiBを利用できるので、innodb_buffer_pool_sizeを40GiBを超える可能性があり、おそらくそれ以上に増やす可能性があります。 10GiB +のログファイルのサイズについて、何か不安になります。私は不必要に心配していますか?

3

短い答えinnodb_log_file_sizeの値は、ほとんどのサーバーにとってあまり重要ではありません。

長い答え

ベンチマークは、サーバーに限界までストレスをかける傾向があります。アプリケーションにそれほど多くのストレスがかかっている場合、それはキールオーバーします。

より良い方法は

Uptime / 60 * innodb_log_file_size / Innodb_os_log_written

約60(ログローテーション間の分)である必要があります。これをひっくり返すと、これはinnodb_log_file_sizeの大まかな見積もりになります。

Innodb_os_log_written / (Uptime / 3600) / innodb_log_files_in_group

2倍(または5倍)ずれている場合は、あまり問題になりません。

1
Rick James

クラッシュ発生時の復旧時間と、データベースがサポートすると予想される書き込みスループットの大きさの間の適切なトレードオフを見つける必要があります。

Percona 素晴らしい投稿があります 64GBのバッファープールを使用して、あなたと同様のシナリオについて議論し、記事の約2/5の部分で、2GBと15GBのログファイルの素晴らしい比較を見ることができます。

15GBは、innodbがログからページを「スムーズに」フラッシュするのに十分なログスペースを許可しますが、2GBを使用すると、ログがいっぱいにならないようにするためのプレッシャーが高まり、最終的にはページを削除する必要があるため、パフォーマンスが低下します。彼らが引用したベンチマークでは、結果としてパフォーマンスが20%低下しています。

TL; DR特に大きなログファイルで問題が発生することはありません。クラッシュ時にフェイルオーバーするスレーブがあるが、小さすぎるスレーブを使用するとパフォーマンスが低下する場合があります。

1
atomic77