Sto eseguendo query Postgres simultanee come questa:
UPDATE foo SET bar = bar + 1 WHERE baz = 1234
Ogni query influisce sul numero K fisso di righe e non riesco a trovare un modo per far rispettare l'ordine in cui le righe vengono aggiornate, finisco con deadlock. Attualmente risolvo il problema applicando manualmente l'ordine, ma ciò significa che devo eseguire molte più query di quante farei normalmente aumentando la complessità della ricerca da O (log N + K) a O (K log N).
C'è un modo per migliorare le prestazioni senza diventare vulnerabili agli deadlock? Ho il sospetto che la sostituzione (baz)
dell'indice con l' (baz, id)
indice possa funzionare a condizione che Postgres aggiorni le righe nello stesso ordine in cui le ha scansionate, vale la pena perseguire questo approccio?
CREATE TABLE
codice.