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

Dostrajanie PostgreSQL:kluczowe elementy zwiększania wydajności

PostgreSQL i wydajność

Wydajność jest jednym z kluczowych wymagań w projektowaniu architektury oprogramowania i od samego początku skupiała się na programistach PostgreSQL, co pokazano również w następującym zatwierdzeniu źródeł PostgreSQL Git:

commit d31084e9d1118b25fd16580d9d8c2924b5740dff
Author: Marc G. Fournier <[email protected]>
Date:   Tue Jul 9 06:22:35 1996 +0000

   Postgres95 1.01 Distribution - Virgin Sources

[...]

diff --git a/src/backend/access/heap/stats.c b/src/backend/access/heap/stats.c
new file mode 100644
index 0000000000..d41d01ac1b
--- /dev/null
+++ b/src/backend/access/heap/stats.c
@@ -0,0 +1,329 @@
+/*-------------------------------------------------------------------------
+ *
+ * stats.c--
+ *    heap access method debugging statistic collection routines
+ *
+ * Copyright (c) 1994, Regents of the University of California

[...]

+ * Also note that this routine probably shouldn't have to exist, and does
+ * screw up the call graph rather badly, but we are wasting so much time and
+ * system resources being massively general that we are losing badly in our
+ * performance benchmarks.
+ */

PostgreSQL osiąga wydajność poprzez implementację różnych funkcji:

  • Kilka typów indeksów
  • Planer zapytań i optymalizator, który może korzystać z systemów wieloprocesorowych
  • MVCC
  • Podział tabeli

Wybór środowiska

Dzięki wielu dostępnym dzisiaj opcjom pojawia się wiele pytań:

  • Na miejscu czy w chmurze?
  • Goły metal czy zwirtualizowany?
  • Sprzęt oznaczony marką lub zbuduj własny?
  • Jak funkcje niskiego poziomu PostgreSQL lub fsync wpływają na wydajność sprzętu?
  • Dysk lokalny czy pamięć współdzielona?
  • Jakie opcje dostrajania systemu operacyjnego należy ustawić?

Ponownie, wiki PostgreSQL jest bardzo dobrym punktem wyjścia dla wszystkich rzeczy związanych z wydajnością.

Jakie są kluczowe rzeczy, których należy szukać?

Ponieważ istnieje mnóstwo literatury dotyczącej różnych aspektów dostrajania wydajności PostgreSQL i projektowania systemu (wskazówka:wyszukaj na stronie xfs), ten blog nie ma na celu głębokiego zagłębienia się w którykolwiek z już omówionych tematów, ale raczej perspektywa sysadmin na temat tego, od czego zacząć, gdy głównym celem jest unikanie rywalizacji o zasoby. Wskażę również wiele odniesień, które bardziej szczegółowo dotyczą konkretnych zagadnień. Porady ekspertów we wszystkich obszarach krytycznych dla wydajności PostgreSQL są dostępne za pośrednictwem wielu firm oferujących usługi profesjonalne.

Zacznijmy!

Gromadzenie informacji

Zakładając domyślną instalację i wiedząc, że PostgreSQL nie stara się być dobrze dostrojony po wyjęciu z pudełka, a nawet mogą wystąpić pewne dziwactwa, ten krok obejmuje skonfigurowanie niezbędnych narzędzi do monitorowania.

Dobre monitorowanie ma kluczowe znaczenie dla zrozumienia aplikacji i umożliwienia szybkiego śledzenia zasobów, których dotyczy problem, a dotyczy to w szczególności dostawców chmury, w przypadku których dostęp do hosta bazy danych może nie być dostępny w celu przeprowadzenia testów porównawczych dla procesora lub we/wy:

Rys.1 — SlideShare, Jignesh Shah, najlepsze praktyki z zarządzanym PostgreSQL w chmurze

Reagowanie na alerty wydajności systemu

Narzędzia monitorujące będą tworzyć wykresy i ostrzegać o wskaźnikach wydajności systemu:

Procesor:

  • Alert — Wysokie użycie wskazuje na długotrwałe zapytanie.
    • Wpływ — czas odpowiedzi aplikacji.
    • Akcja — Przejrzyj metryki statystyk bazy danych, aby zidentyfikować zapytania, które wymagają dostrojenia.

We/Wy:

  • Alert — Wysoka liczba lub odczyty.
    • Wpływ — czas odpowiedzi aplikacji.
    • Działanie — Dodaj kolejną replikę do odczytu. Przejrzyj metryki statystyk bazy danych, aby zidentyfikować długo działające zapytania.
  • Alert — Duża liczba zapisów.
    • Wpływ — czas odpowiedzi aplikacji.
    • Działanie — Dostosuj parametry GUC shared_buffers, work_mem i maintenance_work_mem. Dostrój wskaźnik kontrolny i upewnij się, że automatyczne odkurzanie jest prawidłowo dostrojone. Jeśli PostgreSQL jest zainstalowany na własnym sprzęcie, skonfiguruj obszary tabel i/lub rozważ sharding, ale zrozum ograniczenia dotyczące shardowania.

Pamięć:

  • Alert — Wysokie użycie pamięci.
    • Wpływ — wydajność we/wy.
    • Akcja — Przejrzyj metryki statystyk bazy danych, aby zidentyfikować zapytania, które wymagają dostrojenia.

Sieć:

  • Alert — duże opóźnienie. Zwykle jest to problem z DBaaS.
    • Wpływ — klienci, replikacja.
    • Działanie — Przenieś hosty bazy danych bliżej serwerów frontendowych.
  • Alert — Duża liczba połączeń.
    • Wpływ — Klienci.
    • Działanie — Rozważ użycie odpytywania połączeń.

Wewnętrzne wskaźniki wydajności bazy danych

Widoki pg_* są oknem na wydajność silnika bazy danych, a aplikacje do zarządzania PostgreSQL zostały napisane, aby pomóc w korelowaniu bogactwa informacji dostępnych w inny sposób za pośrednictwem różnych zapytań SQL. Istnieją dodatkowe rozszerzenia, które często są zintegrowane lub dostępne jako wtyczki.

Korzystanie z takich narzędzi upraszcza zadanie DBA i zapewnia przestrzeganie najlepszych praktyk podczas konfigurowania i konfigurowania klastra bazy danych.

Statystyki bazy danych

Narzędzia monitorujące, takie jak ClusterControl, wykorzystują statystyki aktywności bazy danych, aby pomóc administratorowi w dostrajaniu wydajności:

Rys.2 — Kilka dziewiątek, kluczowe rzeczy do monitorowania w PostgreSQL — Analiza obciążenia Pobierz oficjalny dokument dzisiaj — Zarządzanie i automatyzacja PostgreSQL z ClusterControlDowiedz się, co musisz wiedzieć, aby wdrażać, monitorować, zarządzać i skalować PostgreSQLPobierz raport

Dostrajanie zapytań

Począwszy od wersji 9.5 PostgreSQL zawiera znaczne ulepszenia wydajności zapytań, takie jak indeksy BRIN i zapytania równoległe:

Rys.3 — 2. kwadrant, Thomas Vondra, ulepszenia wydajności w PostgreSQL 9.5 (i nie tylko)

Blokowanie

Kontroli współbieżności poświęcono cały rozdział dokumentacji PostgreSQL. Użyj narzędzi do monitorowania, aby otrzymywać alerty, gdy liczba blokad lub czas trwania blokady przekroczy próg, i rozwiąż problem, szukając brakujących indeksów, przeglądając kod aplikacji lub przełączając się na odpytywanie połączeń.

Ładowanie zbiorcze

synchronous_commit można wyłączyć podczas importowania dużych ilości danych. Więcej opcji omówiono w sekcji dokumentacji PostgreSQL Zapełnianie bazy danych.

Wniosek

Dostrajanie wydajności PostgreSQL to złożone zadanie. Złożoność wynika z wielu dostępnych strojów, co jest mocnym argumentem przemawiającym za PostgreSQL. Nie ma złotego środka na rozwiązywanie problemów z wydajnością, raczej specyfika aplikacji ostatecznie dyktuje wymagania dotyczące strojenia. Dlatego narzędzia monitorujące mogą pomóc w uzyskaniu wglądu w wydajność w stosunku do wydajności systemu i dalej pozwalają zidentyfikować specyficzne obszary PostgreSQL, które wymagają dostrojenia, a także zapytania SQL, które wymagają optymalizacji. Dodatkowo systemy zarządzania bazami danych mogą pomóc w konfiguracji i administrowaniu PostgreSQL w celu zapewnienia przestrzegania najlepszych praktyk.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Transpozycja wyniku sql, tak aby jedna kolumna przechodziła do wielu kolumn

  2. Jak naprawić błędy niezgodności wersji pg_dump?

  3. Hibernate, Postgresql:Kolumna x jest typu oid, ale wyrażenie jest typu byte

  4. Nie można utworzyć żądanej usługi [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

  5. Postgres:jak zaokrąglić znacznik czasu w górę lub w dół do najbliższej minuty?