PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

PostgreSQL:count() czy zachować licznik?

Być może wbrew intuicji prawdopodobnie zauważysz, że proste count podejście jest szybsze, chyba że obciążenie pracą jest bardzo ukierunkowane na odczyty.

Powodem tego jest to, że efektem tabeli liczników będzie serializacja aktualizacji, więc tylko jedna transakcja, która aktualizuje dane foo może być w locie w dowolnym momencie. Dzieje się tak, ponieważ aktualizacja wyzwalacza, który aktualizuje licznik, zablokuje to foo wpis w tabeli licznika i nie zwolni go, dopóki transakcja nie zostanie wycofana lub zatwierdzona.

Gorzej, jeśli Twoja transakcja dotyczy więcej niż jednego foo podobnie jak inna, masz dużą szansę na przerwanie jednej z transakcji z powodu impasu.

Trzymaj się prostej liczenia, dopóki nie będziesz miał dobrego powodu, aby to zmienić.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres - Zwróć błąd podczas aktualizacji, jeśli nie znaleziono rekordu

  2. PreparedStatement bardzo wolno, ale ręczne zapytanie szybkie

  3. Rozumienie rozmiarów wierszy Postgres

  4. Postgres Kopiuj ze zmiennej z danymi CSV

  5. JPA 2:użycie wielu kolumn w kluczach obcych