Necesito mantener una tabla estadística para un proyecto, compuesta por una lista de elementos y su uso (piense en algo como un sitio web en el que le gustaría contar las visitas a la página). Cada vez que se instancia un elemento, necesito aumentar el uso del elemento específico.
Mi primera implementación es:
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>';
Mis preocupaciones son sobre el rendimiento y la concurrencia. El proceso de actualización será instanciado por varias decenas (quizás 80-120) dispositivos y podría ocurrir varias veces por segundo, así que mis preguntas son:
1) ¿este método preservará la concurrencia? (es decir, si más de un dispositivo solicita la actualización "al mismo tiempo", ¿se contará cada solicitud?)
2) ¿puede sugerir una mejor manera de lograr el resultado? Espero tener carga al escribir las actualizaciones, mientras que las lecturas serían mucho más frecuentes. ¿Existe una función específica para incrementar los valores? Estoy mirando "secuencia" pero no estoy seguro si esa es la forma correcta ...
Muchas gracias de antemano por cualquier consejo
fuente