sql >> Databasteknik >  >> RDS >> PostgreSQL

Vad kan orsaka inaktiv i transaktion för BEGIN-satser

Transaktionerna blockerar inte alls. Databasen väntar på att applikationen ska skicka nästa uttalande.

Låset på transaktions-ID:t är bara en teknik för transaktioner att blockera varandra, även om de inte tävlar om ett bordslås (till exempel om de väntar på ett radlås):varje transaktion har ett exklusivt lås för sig. transaktions-ID, och om den måste vänta på att en samtidig transaktion ska slutföras, kan den bara begära ett lås på den transaktionens ID (och blockeras).

Om alla transaktioner ser ut så här måste låset finnas någonstans i din applikation; databasen är inte inblandad.

När du letar efter processer blockerade i databasen, leta efter rader i pg_locks där granted är falskt.



  1. Överföra pengar mellan konto-ID i MySQL

  2. Ansluta till MySQL-databas med C# som icke-rootanvändare?

  3. Det gick inte att visa XML-data med PHP-skript

  4. Olaglig användning av LONG datatyp Oracle