Saya menjalankan query Postgres bersamaan seperti ini:
UPDATE foo SET bar = bar + 1 WHERE baz = 1234
Setiap kueri memengaruhi jumlah baris K yang tetap, dan saya tidak dapat menemukan cara untuk menegakkan urutan pembaruan baris, saya berakhir dengan deadlock. Saat ini saya memperbaiki masalah dengan menegakkan pesanan dengan tangan, tetapi ini berarti saya harus mengeksekusi lebih banyak permintaan daripada yang biasanya saya lakukan sambil juga meningkatkan kompleksitas pencarian dari O (log N + K) ke O (K log N).
Apakah ada cara untuk meningkatkan kinerja tanpa berakhir rentan terhadap kebuntuan? Saya menduga bahwa mengganti (baz)
indeks dengan (baz, id)
indeks mungkin berhasil asalkan Postgres memperbarui baris dalam urutan yang sama dengan yang telah memindai mereka, apakah ini pendekatan yang layak untuk dilakukan?
CREATE TABLE
kode.