4

PostgreSQL は非同期コミットをサポートしています。つまり、データベースが先行書き込みログ同期を完了していない場合でも、成功を報告するようにデータベース エンジンを構成できます。

http://www.postgresql.org/docs/8.3/static/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT

これは、データベースがクラッシュした場合に一貫した状態を維持することを保証する方法でいくつかのクエリを実行する間の便利な妥協点を提供しますが、コミットされたとされる一部のトランザクションは、あたかも正常に中止されたかのように見えます。

一部のトランザクションでは、コミットが最終的なままであることが重要であることは明らかです。これが、トランザクションごとにフラグを構成できる理由です。

django でこの機能を利用するにはどうすればよいですか?

4

1 に答える 1

3

まず、フランクのメモを 2 番目に引用します。それがやり方です。

ただし、これを行う場合は、コミットする可能性のある各 API でこれを設定する関数が必要になる可能性があります。これは私にはエラーが発生しやすいように思われるので、おそらくそれを台無しにすることはなく、代わりに、意味のある範囲でトランザクションを同じトランザクションにバッチ処理しようとします。SHOW synchronous_commit適切に単体テストできるように、モデルに設定 ( ) を表示するためのメソッドをさらに用意することをお勧めします。

繰り返しますが、これはセッション設定であるため、このようにいじるのは少し危険だと思いますが、必要な予防措置を講じれば可能です。

于 2012-10-13T12:39:32.617 に答える