Benar bahwa INSERT
, UPDATE
atau DELETE
harus mendapatkan ROW EXCLUSIVE
kunci di atas meja untuk diperbarui.
Namun, kunci ini tidak mencegah SELECT
dari bekerja secara normal. SELECT
hanya membutuhkan ACCESS SHARE
kunci. Kunci ini kompatibel dengan ROW EXCLUSIVE
- dengan kata lain, Anda dapat dengan sempurna menjalankan SELECT
sementara data lainnya diperbarui dengan INSERT
, UPDATE
atau DELETE
, selama Anda tidak memperoleh kunci eksplisit apa pun.
Dengan kata lain, Anda seharusnya tidak pernah melihat kebuntuan menggunakan pendekatan kedua (jangan gunakan SELECT FOR UPDATE
dan Anda akan baik-baik saja).
Baca selengkapnya di Dokumentasi PostgreSQL .