PostgreSQL でトランザクションの同時実行性のいくつかのバリアントをテストしたいと考えています。そのためには、2 つのトランザクションをまったく同時に開始させるスクリプトが必要です。手動の介入を必要としないもの ;) 何かアイデアはありますか?
1 に答える
LOCK
テーブルで を取得し、トランザクションをセットアップしてから、ロックを取得したトランザクションをロールバックしてロックを解放することで、これを自作することができます。このアプローチの詳細については、この以前の回答とそのリンクを参照してください。3 つのセッションを使用してデモをpsql
行いましたが、bash コプロセス、 または モジュールを使用する Python スクリプトなどでも同じように実行できpsycopg2
ますmultiprocessing
。threading
かなり簡単に実行できます。更新:実際、これは私が python3 で書いたばかりの例です。
src/test/isolation
より高度なテストを行うには、PostgreSQL ソース コードを取得し、コマンドの複雑な順序付けを行うレシピを作成できる「isolationtester」ツールを使用します。でビルドすることはサポートされていませんPGXS
(ただし、そのようなサポートを追加するのはおそらく非常に簡単です)。そのため、PostgreSQL ソース ツリー全体をコンパイルする必要がありますが、それで十分です。既存の PostgreSQL に対して実行されるため、コンパイルしたものをインストールする必要はありません。
src/test/isolation/README
isolationtester ツールの詳細については、を参照してください。ドキュメントは内部テスト ツールであるため、実際には少し薄くなっていますが、既存のテスト ケースは開始するのに役立つはずです。ニーズに合わせて改善し、パッチを提出してください:)