2013-02-15 16 views
24

Podczas implementacji rozwiązania dla wielu dzierżawców za pomocą PostgreS potrzebowałem odpowiedzi na pytanie, ile maksymalnych schematów może znajdować się w jednej bazie danych PostgreSQL.Ile schematów można utworzyć w postgresie

+0

Uważam to pytanie za wskazanie prawdopodobnej wady projektu. Z pewnością można użyć jednej bazy danych z kolumną wskazującą klienta. – Bohemian

+8

Istnieją plusy projektowe i minusy do korzystania z wielu schematów, podobnie jak przy dodawaniu kolumny klienta do tabel w jednym schemacie konfiguracji. AKA nie jest tak czarno-biała w mojej opinii. – Kuberchaun

+3

Z pewnością miałem tę opcję, ale ja ją zaadoptowałem, Postgres ma bardzo potężną funkcję dla wielu schematów, zdecydowanie powinniśmy ją wybrać zamiast zwiększać wysiłek w kodowaniu i wyszukiwaniu konkretnego klienta przed każdym zapytaniem. –

Odpowiedz

29

Testowaliśmy tysiące schematów - z tysiącami tabel bez problemu. Istnieje kilka znanych problemów

  • problemy z administracją GUI - powolny start ze względu czytać pełne drzewo obiekt na początku,
  • problemy z pg_dump - powolny początek tworzenia kopii zapasowych - potrzebuje dużo czasu do blokowania obiektów.
+0

Dzięki za podzielenie się wrażeniami! Kiedy mówisz "tysiące", jaka jest przybliżona wartość? –

+4

@MarcioSimao - około dziesięciu tysięcy. Teraz, dwa lata później, prawdziwym ograniczeniem są podstawowe narzędzia do administrowania i tworzenia kopii zapasowych. pg_dump, pg_restore może mieć problemy, gdy liczba przetworzonych obiektów w jednej transakcji jest większa niż 20000 obiektów. Innym problemem jest nadpisywanie pamięci podręcznych w zbyt dużym schemacie. Postgres przechowuje wiele danych w lokalnych pamięciach podręcznych na bazę danych. Gdy ponownie korzystasz z połączenia na dużym schemacie, pamięć podręczna może być zbyt duża, a czasami powolna - ale zależy to od typu pooler sw. Dostępny sw jak pgbouncer lub pgpool nie jest zbyt inteligentny :( –

+1

@PavelStehule Jak naprawiłeś problem pg_dump? Dowolne wskazówki? Mam do czynienia z tym samym problemem –