3

PostgreSQL でトランザクションの同時実行性のいくつかのバリアントをテストしたいと考えています。そのためには、2 つのトランザクションをまったく同時に開始させるスクリプトが必要です。手動の介入を必要としないもの ;) 何かアイデアはありますか?

4

1 に答える 1

2

LOCKテーブルで を取得し、トランザクションをセットアップしてから、ロックを取得したトランザクションをロールバックしてロックを解放することで、これを自作することができます。このアプローチの詳細については、この以前の回答とそのリンクを参照してください。3 つのセッションを使用してデモをpsql行いましたが、bash コプロセス、 または モジュールを使用する Python スクリプトなどでも同じように実行できpsycopg2ますmultiprocessingthreadingかなり簡単に実行できます。更新:実際、これは私が python3 で書いたばかりの例です

src/test/isolationより高度なテストを行うには、PostgreSQL ソース コードを取得し、コマンドの複雑な順序付けを行うレシピを作成できる「isolationtester」ツールを使用します。でビルドすることはサポートされていませんPGXS(ただし、そのようなサポートを追加するのはおそらく非常に簡単です)。そのため、PostgreSQL ソース ツリー全体をコンパイルする必要がありますが、それで十分です。既存の PostgreSQL に対して実行されるため、コンパイルしたものをインストールする必要はありません。

src/test/isolation/READMEisolationtester ツールの詳細については、を参照してください。ドキュメントは内部テスト ツールであるため、実際には少し薄くなっていますが、既存のテスト ケースは開始するのに役立つはずです。ニーズに合わせて改善し、パッチを提出してください:)

于 2013-06-12T00:21:54.590 に答える