0

シリアル化可能なトランザクション (述語ロックに似ています) で PostgreSQL 9.1 を使用していますが、エラーが発生していますcould not serialize access due to read/write dependencies among transactions。これは、シリアライズ可能なトランザクションで保護する必要のないデータを含むテーブルへのアクセスが原因であると考えています。ただし、残りのコード ロジックはシリアライズ可能なトランザクションのサポートに依存しているため、残りのテーブルにはシリアライズ可能なトランザクションを使用する必要があります。

PosgreSQL、データベース スキーマ、またはトランザクションを構成して、シリアル化可能なトランザクションを開始し、テーブル XYZ でのシリアル化の失敗がトランザクションを中止 (ロールバック) する価値がないと宣言できるようにすることはできますか? もしそうなら、それを行う方法は?

私が認識している問題の唯一の解決策は、重要ではないすべてのテーブルを別のデータベースに配置し、そのデータベースへの並列接続とトランザクションを使用することです。もっと簡単な解決策を期待しています。それが違いを生む場合に備えて、私のアプリケーションはPHPで書かれています。

更新: 追加のパフォーマンスを探しています。コードは失敗したトランザクションを自動的に再試行し、十分な回数の再試行の後、最終的に通過するので、理論的には問題ありません。実際には、パフォーマンスは非常に悪いです。

4

1 に答える 1