PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

zakleszczenie postgresa bez jawnego blokowania

Nie potrzebujesz żadnego wyraźnego LOCK wejść w impas. Oto bardzo proste demo od podstaw z samymi WSTAWKAMI:

create table a(i int primary key);
create table b(i int primary key);

Sesja nr 1 wykonuje:

begin;
insert into a values(1);

Następnie sesja nr 2:

begin;
insert into b values(1);
insert into a values(1);
-- here it goes into waiting for session #1 to finish its transaction

Następnie sesja nr 1:

insert into b values(1);

A potem następuje impas:

To samo może się zdarzyć w przypadku prostych UPDATE lub kombinacji UPDATE i INSERT. Te operacje wymagają niejawnych blokad, a jeśli mają miejsce w różnych sesjach w różnej kolejności, mogą się zakleszczyć.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak przeprowadzić wyszukiwanie bez rozróżniania wielkości liter w kolumnie Postgres 9.4 JSONB?

  2. -bash:pg_dump:polecenie nie zostało znalezione

  3. funkcja postgres unaccent vs transliteracja RoR

  4. Błąd PG nie mógł połączyć się z serwerem:Połączenie odrzucone Czy serwer działa na porcie 5432?

  5. FATAL:nie można uzyskać dostępu do pliku klucza prywatnego /etc/ssl/private/ssl-cert-snakeoil.key:Odmowa uprawnień