PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

PostgreSQL :compter() ou conserver un compteur ?

Peut-être de manière contre-intuitive, vous constaterez probablement que le simple count L'approche est plus rapide à moins que votre charge de travail ne soit très orientée vers les lectures.

La raison en est que l'effet de la table de compteur sera de sérialiser les mises à jour, donc une seule transaction qui met à jour un foo donné peut être en vol à tout moment. C'est parce que la mise à jour du déclencheur qui met à jour le compteur verrouillera ce foo dans la table des compteurs et ne la publiera pas tant que la transaction n'aura pas été annulée ou validée.

Pire, si votre transaction affecte plus d'un foo et un autre aussi, vous avez de fortes chances que l'une des transactions soit interrompue en raison d'un blocage.

Tenez-vous en à un comptage simple jusqu'à ce que vous ayez une bonne raison de le changer.