Preciso manter uma tabela estatística para um projeto, composta por uma lista de itens e seu uso (pense em algo como um site no qual você gostaria de contar exibições de página). Cada vez que um item é instanciado, preciso aumentar o uso do item específico.
Minha primeira implementação é:
statistics(
id integer NOT NULL,
name character varying(255) NOT NULL,
usage integer NOT NULL DEFAULT 0,
);
UPDATE statistics
SET usage = usage + 1
WHERE name = '<name>';
Minhas preocupações são sobre desempenho e concorrência. O processo de atualização será instanciado por várias dezenas (talvez 80-120) de dispositivos e poderá ocorrer várias vezes por segundo; portanto, minhas perguntas são:
1) esse método preservará a simultaneidade? (ou seja, se mais de um dispositivo solicitar a atualização "ao mesmo tempo", todas as solicitações serão contadas?)
2) você pode sugerir a melhor maneira de alcançar o resultado? Espero ter carga ao escrever as atualizações, enquanto as leituras me seriam muito mais frequentes. Existe uma função específica para incrementar valores? Estou olhando para "sequência", mas não tenho certeza se esse é o caminho certo ...
Muito obrigado antecipadamente por qualquer conselho
fonte