J'ai besoin de maintenir un tableau statistique pour un projet, composé d'une liste d'éléments et de leur utilisation (pensez à quelque chose comme un site Web dans lequel vous souhaitez compter les pages vues). Chaque fois qu'un élément est instancié, j'ai besoin d'augmenter l'utilisation de l'élément spécifique.
Ma première implémentation est:
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>';
Mes préoccupations concernent les performances et la concurrence. Le processus de mise à jour sera instancié par plusieurs dizaines (peut-être 80-120) et pourrait se produire plusieurs fois par seconde, donc mes questions sont les suivantes:
1) Cette méthode préservera-t-elle la concurrence? (c.-à-d. si plusieurs appareils demandent la mise à jour "en même temps", chaque demande sera-t-elle prise en compte?)
2) pouvez-vous suggérer une meilleure façon d'obtenir le résultat? Je m'attends à avoir la charge d'écrire les mises à jour, tandis que les lectures me seraient beaucoup plus fréquentes. Existe-t-il une fonction spécifique pour incrémenter les valeurs? Je regarde la "séquence" mais je ne sais pas si c'est la bonne façon ...
Merci beaucoup d'avance pour tout conseil
la source