Estou executando consultas simultâneas do Postgres como esta:
UPDATE foo SET bar = bar + 1 WHERE baz = 1234
Cada consulta afeta o número fixo de K linhas e, não consigo encontrar uma maneira de impor a ordem na qual as linhas são atualizadas, acabo com impasses. Atualmente, eu corrijo o problema aplicando a ordem manualmente, mas isso significa que tenho que executar muito mais consultas do que normalmente faria, além de aumentar a complexidade da pesquisa de O (log N + K) para O (K log N).
Existe uma maneira de melhorar o desempenho sem acabar vulnerável a conflitos? Eu suspeito que a substituição do (baz)
índice pelo (baz, id)
índice possa funcionar, desde que o Postgres atualize as linhas na mesma ordem em que foram verificadas. É uma abordagem que vale a pena seguir?
CREATE TABLE
código.