トランザクションはまったくブロックされていません。データベースは、アプリケーションが次のステートメントを送信するのを待っています。
トランザクションIDのロックは、トランザクションがテーブルロックを競合していない場合でも(たとえば、行ロックを待機している場合)、トランザクションが相互にブロックするための単なる手法です。各トランザクションは、独自に排他ロックを保持します。トランザクションIDであり、同時トランザクションが完了するのを待つ必要がある場合は、そのトランザクションのIDのロックを要求するだけです(ブロックされます)。
すべてのトランザクションがこのように見える場合、ロックはアプリケーションのどこかにある必要があります。データベースは関与していません。
データベースでブロックされているプロセスを探すときは、pg_locks
で行を探してください ここでgranted
は誤りです。