J'exécute des requêtes Postgres simultanées comme ceci:
UPDATE foo SET bar = bar + 1 WHERE baz = 1234
Chaque requête affecte le nombre K fixe de lignes, et je ne peux pas trouver un moyen d'appliquer l'ordre dans lequel les lignes sont mises à jour, je me retrouve avec des blocages. Actuellement, je résout le problème en appliquant l'ordre manuellement, mais cela signifie que je dois exécuter beaucoup plus de requêtes que je ne le ferais normalement tout en augmentant la complexité de la recherche de O (log N + K) à O (K log N).
Existe-t-il un moyen d'améliorer les performances sans se retrouver vulnérable aux blocages? Je soupçonne que le remplacement de l' (baz)
index par l' (baz, id)
index pourrait fonctionner à condition que Postgres mette à jour les lignes dans le même ordre qu'il les a scannées, est-ce une approche qui mérite d'être poursuivie?
CREATE TABLE
code.