PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

PostgreSQL:count() ou manter um contador?


Talvez contra-intuitivamente, você provavelmente descobrirá que o simples count A abordagem é mais rápida, a menos que sua carga de trabalho seja muito tendenciosa para leituras.

A razão para isso é que o efeito da tabela do contador será serializar as atualizações, portanto, apenas uma transação que está atualizando um determinado foo pode estar em vôo a qualquer momento. Isso porque a atualização do gatilho que atualiza o contador travará esse foo 's na tabela do contador e não a liberará até que a transação seja revertida ou confirmada.

Pior ainda, se sua transação afetar mais de um foo e o mesmo acontece com outra, você tem uma grande chance de uma das transações ser abortada devido a um impasse.

Atenha-se a uma contagem simples até ter uma boa razão para alterá-la.