質問のタイトルで、私が使用しているソフトウェア コンポーネントの組み合わせを確認できます。
Postgresサーバー(Win 7 Pro)で実行されている単純な10テーブルのデータベースがあります。比較的軽いトランザクションを実行するためにランダムな間隔でデータベースに接続するクライアントアプリ (psycopg を使用して Postgres に接続する Python) があります。あらゆる種類の大量のトランザクションを実行するクライアント アプリは一度に 1 つだけであり、それらは通常 500 ミリ秒未満です。それらの残りの部分は、データベースがトランザクションを実行するのを実際に待つよりも、接続に多くの時間を費やします。ポイントは、データベースの負荷が軽いということですが、負荷は読み取りと書き込みの間で均等に分割されます。
私のクライアント アプリは、サーバー/サービス自体として実行されます。(1) Postgres サーバーを完全にダウンさせ、(2) キーボード割り込みでクライアント アプリを強制終了してデータベースを破壊することはよくあることです。
(1) とは、サーバー上の Postgres プロセスが中止され、サービスを再起動する必要があることを意味します。
(2) とは、クライアントがデータベースを再起動し、(おそらく) 「回復モード」操作を完了した後にデータベースにアクセスしようとすると、データベースが再びクラッシュすることを意味します。古いデータベース/スキーマをデータベース サーバーから削除し、毎回再構築して安定した状態に戻す必要があります。(回復モードの後、バキュームのさまざまな組み合わせを試して、安定性が向上するかどうかを確認しました。バキュームは実行されますが、クライアントがデータベースに再度アクセスしようとすると、サーバーはまだすぐにダウンします。)
「タスクキル」を使用してクライアントアプリを強制終了したときに同じ効果が見られたのを思い出しません-キーボード割り込みを使用してpythonプロセスを停止した場合のみ。常に発生するわけではありませんが、頻繁に発生するため、大きな懸念事項になります (25%?)。
クライアント上の何かが実際に「エンタープライズ クラス」のデータベースを停止できることに本当に驚きました。堅牢性を向上させる方法に関するヒントを誰かが共有できますか? ありがとう、M