2016-04-17 5 views
2

私が理解しているように、バックグラウンドスレッドはトランザクションを「慎重な書き込み」の順序でディスクに書き込んで、実際にディスクへの書き込みを待つ必要はありません。発生する。Firebirdは「グループコミット」を持っています

私はこれまでにinterbaseに関連してこのような参考文献(たとえばhere)を見ましたが、どこでもFirebirdとの関連で言及されていませんでした。

答えて

0

とオンラインで検索、Firebirdのは、GROUPが

1

gfixユーティリティを使用すると、データベースファイルに対してFORCED WRITESフラグをオンまたはオフに設定できます。オンにすると、サーバーは実際のディスク書き込みが発生するまで待機します。オフにすると、サーバーはOSへの実行を継続し、ディスクにデータを書き込むタイミングを決定します。パフォーマンスの向上は最大3倍ですが、電源障害が発生した場合には、データの順序が間違って書き込まれる可能性があります。

キャッシュメモリ用に独立した電源を持つRAIDコントローラをFORCED WRITES = ONと共に使用することを強くお勧めします。このスレッドへのコメントに基づいて

+0

おかげで、それはすべての呼び出しをコミットする場合は、データが前にディスクに書き込まれるのを待つ必要があり、まだあるのCOMMIT持っていないようです発信者に戻りますか?それはあなたが書いたものから私に聞こえるものです。 'グループコミット'を使用すると、代わりにキャッシュに書き込むため、呼び出し側は待機する必要はありません。このキャッシュは、慎重な書き込み順序で別のスレッドによってディスクに書き込まれます。 – kjack

+0

FORCED WRITES OFFを指定すると、コミット・コールはただちに戻ります。データはOSキャッシュに残ります。 OSはディスクに書き込むタイミングを決定します。 Firebird.confのMaxUnflushedWritesとMaxUnflushedWriteTimeパラメータも参照してください。 –

+0

ありがとうAndrej。私はファイヤーバードでグループコミットがないと思う。 'Group Commit'を使うと、強制書き込みをオフにしてスピードを上げることができます。バックグラウンドスレッドは、多くのトランザクションを含むことができるが、クラッシュ時に安全であるような方法でキャッシュのディスクへの実際の書き込みを行います。主に、トランザクションインベントリの2つの個別のコピーディスクに1つ。それは本当にクールな機能のように思え、10年ほどの間、インターベースに入っています。 – kjack

関連する問題