sql >> Base de Datos >  >> RDS >> PostgreSQL

PostgreSQL:¿contar () o mantener un contador?

Tal vez de manera contraria a la intuición, probablemente encontrará que el simple count El enfoque es más rápido a menos que su carga de trabajo esté muy sesgada hacia las lecturas.

La razón de esto es que el efecto de la tabla de contador será serializar actualizaciones, por lo que solo una transacción que actualiza un foo dado puede estar en vuelo en cualquier momento dado. Esto se debe a que la actualización del disparador que actualiza el contador bloqueará ese foo la entrada de en la tabla de contadores y no la liberará hasta que la transacción retroceda o se confirme.

Peor aún, si su transacción afecta a más de un foo y también lo hace otro, tiene una alta probabilidad de que una de las transacciones se cancele debido a un punto muerto.

Cíñete a un conteo simple hasta que tengas una buena razón para cambiarlo.