Korzystam z równoczesnych zapytań Postgres:
UPDATE foo SET bar = bar + 1 WHERE baz = 1234
Każde zapytanie wpływa na ustaloną liczbę K wierszy i nie mogę znaleźć sposobu na wymuszenie kolejności, w jakiej wiersze są aktualizowane, co powoduje zakleszczenie. Obecnie rozwiązuję ten problem ręcznie, wymuszając wykonanie zamówienia, ale oznacza to, że muszę wykonać o wiele więcej zapytań niż normalnie, jednocześnie zwiększając złożoność wyszukiwania z O (log N + K) do O (K log N).
Czy istnieje sposób na poprawę wydajności bez narażania się na impas? Podejrzewam, że zastąpienie (baz)
indeksu (baz, id)
indeksem może działać, pod warunkiem że Postgres aktualizuje wiersze w tej samej kolejności, w jakiej je przeskanował, czy jest to podejście warte zastosowania?
CREATE TABLE
kodu.