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

PostgreSQL:Jak zoptymalizować moją bazę danych do przechowywania i odpytywania ogromnego wykresu

Myślę, że dzieje się tak z powodu „gęstości” rekordów o tym samym kluczu na dysku. Myślę, że rekordy o tym samym identyfikatorze są przechowywane w gęstej (tj. kilku liczbie bloków), a te z tym samym łączem są przechowywane w rzadkim (tj. , rozłożone na ogromną liczbę bloków). Jeśli umieściłeś rekordy w kolejności id, taka sytuacja może się zdarzyć.

Załóżmy, że:1. jest 10 000 rekordów,2. są przechowywane w takiej kolejności, jak (id, link) =(1, 1), (1, 2),..., (1, 100), (2, 1)... i3. W jednym bloku można przechowywać 50 rekordów.

W powyższym założeniu blok #1~#3 składa się z rekordów (1,1)~(1,50), (1,51)~(1,100) i (2,1)~(2,50) odpowiednio.

Kiedy SELECT * FROM edges WHERE id=1 , tylko 2 bloki (#1, #2) mają zostać załadowane i zeskanowane. Z drugiej strony, SELECT * FROM edges WHERE link=1 wymaga 50 bloków (#1, #3, #5,...), mimo że liczba rzędów jest taka sama.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd serwera OpenERP Odmowa dostępu

  2. Używanie pg_dump do pobierania instrukcji wstawiania tylko z jednej tabeli w bazie danych

  3. Jakiej blokady, jeśli w ogóle, używa 'CREATE TRIGGER' w PostgreSQL 9.4.2?

  4. Django Postgres ArrayField agregacja i filtrowanie

  5. finder_sql nie analizuje ciągu znaków za pomocą Rails