PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

kebuntuan postgres tanpa penguncian eksplisit

Anda tidak memerlukan LOCK yang eksplisit untuk mengalami kebuntuan. Berikut demo yang sangat sederhana dari awal hanya dengan INSERT:

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

Sesi #1 melakukan:

begin;
insert into a values(1);

Kemudian sesi #2 melakukan:

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

Kemudian sesi #1 melakukan:

insert into b values(1);

Dan kemudian terjadi kebuntuan:

Hal yang sama dapat terjadi dengan UPDATE sederhana atau kombinasi UPDATE dan INSERT. Operasi ini menggunakan kunci implisit, dan jika terjadi di sesi yang berbeda dalam urutan yang berbeda, operasi ini mungkin menemui jalan buntu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bangun gambar hub buruh pelabuhan keycloak di openshift dari perintah aplikasi baru

  2. Bagaimana cara mengetahui apakah suatu urutan diinisialisasi dalam sesi ini?

  3. Rails ActiveRecord:Cara menggunakan variabel bind dengan tanda kutip ganda di jsonb

  4. Kueri tidak menggunakan indeks pada stempel waktu tanpa bidang zona waktu

  5. Apakah VIEWS PostgreSQL dibuat baru setiap kali mereka ditanyai?