3

私はinnodbmysqldbを持っていますが、テーブルの変更時にクエリキャッシュがフラッシュされるのか、それともそれらのレコードのみに変更があったときにフラッシュされるのかを知りたいですか?

数分ごとに変更される大きなテーブルがあるので、それがどれほど役立つのか疑問に思っています。

ありがとう

4

1 に答える 1

2

あなたはQuery Cacheについて話しているのではなく、Buffer Cacheについて話していると思います。
クエリ キャッシュは、最新の SQL ステートメントのキャッシュであり、これらがディスクにフラッシュされることはありません。

バッファ キャッシュのフラッシュは、バッファ ログのフラッシュほど重要ではありません。ログは、データベース内のデータに対して実行された更新を追跡します。これは、障害が発生した場合、つまりバッファ キャッシュがディスクにフラッシュされていない場合にデータベースを回復するために使用されます。

InnoDB で bufferer ログをフラッシュするには主に 3 つの方法があり、それらはパラメーターで制御されますinnodb_flush_log_at_trx_commit
MySQL ドキュメントの引用:

「クラッシュが発生した場合に最新のコミットされたトランザクションの一部が失われる余裕がある場合は、innodb_flush_log_at_trx_commit パラメーターを 0 に設定できます。InnoDB はとにかく 1 秒に 1 回ログをフラッシュしようとしますが、フラッシュは保証されません。また、 innodb_support_xa の値を 0 にすると、ディスク データとバイナリ ログの同期によるディスク フラッシュの回数が減ります。」

ソース: http://dev.mysql.com/doc/refman/5.1/en/innodb-tuning.html

それが役立つことを願っています

于 2013-01-30T14:14:27.313 に答える