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

Haruskah saya menyertakan SELECT dalam transaksi?

Versi singkatnya:"Tergantung".

Versi panjang:

Jika Anda melakukan siklus baca-modifikasi-tulis, maka tidak hanya harus dalam transaksi, tetapi Anda harus SELECT ... FOR UPDATE catatan apa pun yang nantinya ingin Anda ubah. Jika tidak, Anda akan berisiko kehilangan penulisan, di mana Anda menimpa pembaruan yang dibuat orang lain antara saat Anda membaca catatan dan saat Anda menulis pembaruan.

SERIALIZABLE isolasi transaksi juga dapat membantu dalam hal ini.

Anda benar-benar perlu memahami konkurensi dan isolasi. Sayangnya satu-satunya jawaban "lakukan X" yang sederhana dan mudah tanpa memahaminya adalah memulai setiap transaksi dengan mengunci semua tabel yang terlibat. Kebanyakan orang tidak ingin melakukan itu.

Saya sarankan membaca (atau dua, atau tiga, atau empat - ini bahan yang sulit) dari dokumen isolasi tx . Bereksperimenlah dengan psql secara bersamaan sesi (beberapa terminal) untuk menciptakan kondisi balapan dan konflik.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. psycopg2 - Koneksi Tanpa Kunci

  2. Postgres Cloud9

  3. Impor file OSM ke PostGis di Windows10

  4. Bagaimana cara huruf kecil array postgresql?

  5. Bagaimana cara menentukan "awal hari ini" di zona waktu tertentu?