2010-09-15 9 views
8

Stworzyłem bazę danych w PostgreSQL, nazwijmy ją: testdb.Czy istnieje ograniczenie liczby tabel, które może posiadać baza danych PostgreSQL?

Mam rodzajowe zestaw tabel wewnątrz tej bazy danych, xxx_table_one, xxx_table_two i xxx_table_three.

Teraz mam kod Pythona, w którym chcę dynamicznie tworzyć i usuwać "zestawy" tych 3 tabel do mojej bazy danych z unikalnym identyfikatorem w nazwie tabeli, odróżniającym różne "zestawy" od siebie, np.

Zestaw 1
testdb.aaa_table_one
testdb.aaa_table_two
testdb.aaa_table_three

Zestaw 2
testdb.bbb_table_one
testdb.bbb_table_two
testdb.bbb_table_three

Re Ason Chcę to zrobić w ten sposób, aby zachować wiele DUŻYCH zbiorów danych powiązanych z nimi oddzielnie. Muszę regularnie nadpisywać poszczególne kolekcje danych i jest to łatwe, jeśli możemy po prostu upuścić tabelę gromadzenia danych i odtworzyć kompletny nowy zestaw tabel. Muszę też wspomnieć, że różne kolekcje danych mieszczą się w tych samych schematach, więc mogłem zapisać wszystkie zbiory danych w jednym zestawie tabel przy użyciu identyfikatora, aby rozróżnić kolekcje danych, zamiast rozdzielać je za pomocą różnych tabel.

chcę wiedzieć kilka rzeczy

  1. PostgreSQL ograniczyć liczbę stołów na bazie danych?
  2. Jaki jest wpływ na wydajność, jeśli w ogóle, posiadania dużej liczby tabel w 1 bazie danych?
  3. Jaki jest wpływ na wydajność zapisywania zbiorów danych w różnych zestawach tabel w porównaniu do zapisywania ich wszystkich w tym samym zestawie, np. Przypuszczam, że musiałbym pisać więcej zapytań, jeśli chcę wysyłać zapytania do wielu kolekcji danych naraz, gdy dane są rozłożone między tabelami w porównaniu z tylko jednym zestawem tabel.
+1

Zdefiniuj "duży". Tworzenie i upuszczanie tabel jest zwykle złym podejściem do podjęcia. – mpen

+5

Do. Nie. Zrobić. To. To straszny hack do projektowania. Wiele osób próbuje tego - każdy, kto tego próbuje, żałuje tego. Użyj wartości kluczy jako kolumn w tabelach; nie twórz tabel takich jak to. –

+0

Duży może zawierać około 1 000 000 - 10 000 000 rekordów. Nie tak duże, ale każdy zbiór danych to wstępnie przetworzony zbiór danych aktualizowany raz lub dwa razy w miesiącu. – sizeight

Odpowiedz

14

PostgreSQL nie ma wielu ograniczeń, twój sprzęt jest znacznie bardziej ograniczony, to tam napotykasz najwięcej problemów. http://www.postgresql.org/about/

Możesz mieć 2^32 tabel w jednej bazie danych, nieco ponad 4 miliardy.

+0

Konkluzja, o której mowa w tej odpowiedzi, jest zasługą badań nad publikatorem społeczności PostgreSQL, patrz [PGCon 2013] (http://www.pgcon.org/2013/schedule/attachments/283_Billion_Tables_Project-PgCon2013.pdf) – pazfernando

2
  1. PostgreSQL nie narzuca bezpośrednią granicę na to, czy system operacyjny (to zależy od maksymalnego rozmiaru katalogu)
  2. To może zależeć od systemu operacyjnego, jak również. Niektóre systemy plików stają się wolniejsze w przypadku dużych katalogów.
  3. PostgreSQL nie będzie w stanie zoptymalizować zapytań, jeśli znajdują się one w różnych tabelach. Zatem użycie mniejszej liczby tabel (lub pojedynczego stołu) powinno być bardziej wydajne.
0

Jeśli Twoje dane nie były powiązane, myślę, że Twoje tabele mogą być w innym schemacie, a następnie użyjesz na przykład SET search_path TO schema1, public, w ten sposób nie będziesz musiał dynamicznie generować nazw tabel w swoich zapytaniach. Planuję wypróbować tę strukturę na dużej bazie danych, która przechowuje logi i inne informacje o śledzeniu.

Możesz również zmienić swój tablespace, jeśli twój os ma limit lub cierpi z powodu dużego rozmiaru katalogu.

Powiązane problemy