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

Jak sprawnie przechowywać miliony rekordów statystyk?

Ta liczba nie jest tak wysoka, jak myślisz. W obecnej pracy przechowujemy dane metryk dla stron internetowych, a łączna ilość posiadanych przez nas wierszy jest znacznie większa. A w poprzedniej pracy pracowałem z bazą danych pg, która zbierała dane z sieci komórkowej i zbierała ~2 miliardy rekordów dziennie. Więc nie bój się miliardów w liczbie rekordów.

Na pewno będziesz musiał podzielić dane - najprawdopodobniej w dzień. Przy takiej ilości danych indeksy mogą być zupełnie bezużyteczne. Zależy od samolotów, które zobaczysz w EXPLAIN wyjście polecenia. Na przykład ta aplikacja telekomunikacyjna w ogóle nie używała żadnych indeksów, ponieważ spowalniałyby one cały silnik.

Kolejnym pytaniem jest to, jak szybko będziesz potrzebować odpowiedzi na zapytania. I jakie kroki szczegółowości (sumy godzin/dni/tygodni itp.) dla zapytań zezwolisz użytkownikom. Może być nawet konieczne wykonanie pewnych agregacji dla szczegółów, takich jak tydzień, miesiąc lub kwartał.

Dodatek:

Te ~2 miliardy rekordów dziennie w tej aplikacji telekomunikacyjnej zajmowały ~290 GB dziennie. Oznaczało to wstawianie ~ 23000 rekordów na sekundę przy użyciu wstawek zbiorczych z poleceniem COPY. Każda masa to kilka tysięcy rekordów. Surowe dane podzielono na minuty. Aby uniknąć oczekiwania na dysku, db miał 4 przestrzenie tabel na 4 różnych dyskach/macierzach, a partycje były na nich rozmieszczone. PostreSQL poradził sobie z tym wszystkim bez żadnych problemów. Powinieneś więc pomyśleć również o właściwej konfiguracji sprzętu.

Dobrym pomysłem jest również przeniesienie katalogu pg_xlog na osobny dysk lub macierz. Nie tylko inny system plików. To wszystko musi być osobnym sprzętem. Dyski SSD mogę polecić tylko w macierzach z odpowiednią kontrolą błędów. Ostatnio mieliśmy problemy z uszkodzoną bazą danych na jednym dysku SSD.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Łącz/scal wartości tablicy podczas grupowania/agregacji

  2. PostgreSQL COPY csv wraz z cytatami

  3. SQL Uzyskaj wszystkie rekordy starsze niż 30 dni

  4. Jak używać Railsów z nazwami kolumn pisanymi wielkimi literami?

  5. Nie można skonfigurować AspNet.Identity przy użyciu PostgreSQL