[解決済み】PostgreSQL ERROR:リカバリーと競合するため、ステートメントをキャンセルする
2022-04-12 05:57:43
質問
スタンバイモードのPostgreSQL dbでクエリを実行すると、以下のエラーが発生します。エラーの原因となるクエリは、1ヶ月間は問題なく動作しますが、1ヶ月以上クエリを実行するとエラーが発生します。
ERROR: canceling statement due to conflict with recovery
Detail: User query might have needed to see row versions that must be removed
解決方法について、何かご提案があれば教えてください。ありがとうございます。
解決方法を教えてください。
なぜなら、クエリ実行中にプライマリで必要な行が更新または削除される可能性があるからです。プライマリはセカンダリでクエリが開始されたことを知らないので、古いバージョンの行をクリーンアップ(バキューム)できると思っています。そして、セカンダリはこのクリーンアップを再生し、これらの行を使用するすべてのクエリを強制的にキャンセルしなければならなくなります。
長いクエリは、より頻繁にキャンセルされることになります。
プライマリで繰り返し読み取りトランザクションを開始し、ダミークエリを実行した後、セカンダリで実際のクエリが実行されている間、アイドル状態にしておくことでこの問題を回避することができます。このトランザクションがあることで、プライマリで古いバージョンの行がバキュームされるのを防ぐことができます。
この件に関する詳細やその他の回避策については ホットスタンバイ - クエリの競合の処理 のセクションを参照してください。
関連
-
[解決済み] Postgresqlの再起動方法
-
[解決済み] PostgreSQLでDATE Differenceを計算する方法は?
-
[解決済み] エラーが発生しました。pgsqlをrailsで動作させようとすると、Peer authentication failed for user "postgres" と表示されます。
-
[解決済み] PostgreSQLで一重引用符で囲まれたテキストを挿入する
-
[解決済み] psqlの代替出力フォーマット
-
[解決済み】PostgreSQLのエラーです。Fatal: ロール "username" が存在しません。
-
[解決済み】PostgreSQLスキーマのテーブルを一覧表示する。
-
[解決済み】psqlを使用して、データベースにインストールされている拡張機能を一覧表示するにはどうすればよいですか?
-
[解決済み】Postgresに一括挿入を行う最速の方法は何ですか?
-
[解決済み】CASCADE DELETEを一度だけ実行する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] "psql: サーバーに接続できませんでした。リモートデータベースへの接続時に「Connection refused」エラー
-
[解決済み] Postgresの最大接続数を増やすには?
-
[解決済み] postgresqlのポートの混乱 5433 or 5432?
-
[解決済み】psqlを使用して、データベースにインストールされている拡張機能を一覧表示するにはどうすればよいですか?
-
[解決済み】Postgresのインストール時に入力したパスワードを忘れてしまいました。
-
[解決済み】PostgreSQLでビューのCREATE VIEWコードを見るには?
-
[解決済み】psql - コマンドの結果をファイルに保存する
-
[解決済み】Docker化したPostgresデータベースのデータをボリュームで永続化する方法
-
[解決済み】PostgreSQLでUTCの現在時刻をデフォルト値として使用する。
-
[解決済み] [Solved] "on delete cascade "制約を追加する方法は?