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 .