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

Kiedy używać tabel dziedziczonych w PostgreSQL?

Istnieje kilka głównych powodów używania dziedziczenia tabel w postgresie.

Powiedzmy, że mamy kilka tabel potrzebnych do statystyk, które są tworzone i wypełniane każdego miesiąca:

statistics
    - statistics_2010_04 (inherits statistics)
    - statistics_2010_05 (inherits statistics)

W tym przykładzie w każdej tabeli mamy 2 000 000 wierszy. Każda tabela ma ograniczenie CHECK, aby upewnić się, że przechowywane są w niej tylko dane z pasującego miesiąca.

Więc co sprawia, że ​​dziedziczenie jest fajną funkcją — dlaczego dzielenie danych jest fajne?

  • WYDAJNOŚĆ:Wybierając dane, WYBIERAMY * ZE statystyk GDZIE data POMIĘDZY x i Y, a Postgres używa tylko tabel tam, gdzie ma to sens. Np. SELECT * FROM Statistics GDZIE data BETWEEN '2010-04-01' AND '2010-04-15' skanuje tylko statystyki tabeli_2010_04, wszystkie inne tabele nie zostaną dotknięte - szybko!
  • Rozmiar indeksu:nie mamy dużej tabeli z dużym indeksem z dużym indeksem w dniu kolumny. Mamy małe tabele miesięcznie, z małymi indeksami - szybsze odczyty.
  • Konserwacja:możemy uruchomić pełną próżnię, reindeksować, klastrować w tabeli każdego miesiąca bez blokowania wszystkich innych danych

Aby poprawnie używać dziedziczenia tabel jako wzmacniacza wydajności, zapoznaj się z instrukcją postgresql. Musisz ustawić ograniczenia CHECK na każdej tabeli, aby poinformować bazę danych, na którym kluczu dane zostaną podzielone (partycjonowane).

Często korzystam z dziedziczenia tabel, zwłaszcza jeśli chodzi o przechowywanie danych dziennika pogrupowanych według miesięcy. Wskazówka:Jeśli przechowujesz dane, które nigdy się nie zmienią (dane dziennika), utwórz lub indeksuj za pomocą CREATE INDEX ON () WITH(fillfactor=100); Oznacza to, że w indeksie nie będzie zarezerwowane miejsce na aktualizacje — indeks na dysku jest mniejszy.

UPDATE:fillfactor domyślna wartość to 100, z http://www.postgresql.org/docs/9.1/static/sql-createtable.html:

Współczynnik wypełnienia tabeli to wartość procentowa między 10 a 100. 100 (pełne opakowanie) jest wartością domyślną



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przeszukuj wiele tabel, a także wyświetlaj nazwę tabeli w wynikowych wierszach

  2. Przewodnik po użyciu pgBouncera w PostgreSQL

  3. Zarządzanie i automatyzacja PostgreSQL z ClusterControl

  4. Tworzenie PostgreSQL dla Windows, część 2

  5. Zmień sortowanie bazy danych, Ctype w Postgresql