sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL Tuning:Viktiga saker för att driva prestanda

PostgreSQL och prestanda

Prestanda är ett av nyckelkraven i design av mjukvaruarkitektur och har varit i fokus för PostgreSQL-utvecklare sedan starten, vilket också visas i följande PostgreSQL Git-källor:

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 uppnår prestanda genom att implementera olika funktioner:

  • Flera indextyper
  • Frågeplanerare och optimerare som kan dra fördel av multiprocessorsystem
  • MVCC
  • Tabellpartitionering

Val av miljö

Med de många alternativen som finns idag kommer lika många frågor:

  • På plats eller i molnet?
  • Obar metall eller virtualiserad?
  • Hårdvarumärkt eller bygg din egen?
  • Hur påverkar PostgreSQL lågnivåfunktionerna eller fsync hårdvarans prestanda?
  • Lokal disk eller delad lagring?
  • Vilka inställningar för operativsystem måste ställas in?

Återigen, PostgreSQL-wikin är en mycket bra utgångspunkt för allt som har med prestanda att göra.

Vad är de viktigaste sakerna att leta efter?

Eftersom det finns massor av litteratur där ute som berör olika aspekter av PostgreSQL-prestandajustering och systemdesign (tips:sök på sidan efter xfs), är den här bloggen inte tänkt att vara en djupdykning i något av de redan diskuterade ämnena, utan snarare en sysadmins perspektiv på var man ska börja när huvudfokus är att undvika resurskonflikter. Jag kommer också att peka på många referenser som tar upp specifika frågor mer i detalj. Expertrådgivning inom alla områden som är kritiska för PostgreSQL-prestanda finns tillgänglig genom de många företag som erbjuder professionella tjänster.

Låt oss börja!

Informationsinsamling

Om vi ​​antar en standardinstallation och vet att PostgreSQL inte försöker vara välinställd direkt och det kan till och med finnas några egenheter, innebär detta steg att ställa in de nödvändiga övervakningsverktygen.

Bra övervakning är avgörande för att förstå applikationer och snabbt kunna spåra de påverkade resurserna, och detta gäller särskilt för molnleverantörer där åtkomst till databasvärden kanske inte är tillgänglig för att köra benchmarks för CPU eller I/O:

Fig.1 — SlideShare, Jignesh Shah, Best Practices with Managed PostgreSQL in the Cloud

Reagerar på systemprestandavarningar

Övervakningsverktyg visar diagram och varnar om systemprestandaindikatorer:

CPU:

  • Varning — Hög användning indikerar en lång pågående fråga.
    • Påverkan — Appens svarstid.
    • Åtgärd — Granska databasstatistikmått för att identifiera frågor som behöver justeras.

I/O:

  • Varning — Högt antal eller läsningar.
    • Påverkan — Appens svarstid.
    • Åtgärd — Lägg till ytterligare en läsreplika. Granska databasstatistikmått för att identifiera långvariga frågor.
  • Varning — Högt antal skrivningar.
    • Påverkan — Appens svarstid.
    • Åtgärd — Justera GUC-parametrarna shared_buffers, work_mem och maintenance_work_mem. Ställ in kontrollpekaren och se till att autovakuum är korrekt inställt. Om PostgreSQL är installerat på egen hårdvara, konfigurera tabellutrymmen och/eller överväg sönderdelning men förstå särningsförbehållen.

Minne:

  • Varning — Hög minnesanvändning.
    • Påverkan — I/O-prestanda.
    • Åtgärd — Granska databasstatistikmått för att identifiera frågor som behöver justeras.

Nätverk:

  • Varning – hög fördröjning. Vanligtvis är detta ett DBaaS-problem.
    • Påverkan — klienter, replikering.
    • Åtgärd — Flytta databasvärdar närmare frontend-servrar.
  • Varning — Högt antal anslutningar.
    • Påverkan — klienter.
    • Åtgärd — Överväg att använda anslutningshämtning.

Databas interna prestandaindikatorer

Vyerna pg_* är fönstret till databasmotorns prestanda, och PostgreSQL-hanteringsapplikationer har skrivits för att hjälpa till att korrelera den mängd information som annars är tillgänglig via olika SQL-frågor. Ytterligare tillägg finns och de är ofta integrerade eller tillgängliga som plugins.

Att använda sådana verktyg förenklar DBA-uppgiften och säkerställer att bästa praxis följs när du ställer in och konfigurerar databasklustret.

Databasstatistik

Övervakningsverktyg som ClusterControl använder databasaktivitetsstatistik för att hjälpa DBA med prestandajustering:

Fig. 2 — Flera linjer, viktiga saker att övervaka i PostgreSQL — Analysera din arbetsbelastning och Ladda ner Whitepaper Today med ClusterControlLär dig om vad du behöver veta för att distribuera, övervaka, hantera och skala PostgreSQLDladda Whitepaper

Frågejustering

Från och med version 9.5 innehåller PostgreSQL avsevärda förbättringar av frågeprestanda som BRIN-index och parallella frågor:

Fig.3 — 2nd Quadrant, Thomas Vondra, Performance Improvements in PostgreSQL 9.5 (and beyond)

Låsning

Concurrency Control är tillägnad ett helt kapitel i PostgreSQL-dokumentation. Använd övervakningsverktyg för att få en varning när antalet lås eller låstid överskrider tröskeln och lös problemet genom att leta efter saknade index, granska applikationskoden eller genom att byta till anslutningspoling.

Massladd

synchronous_commit kan stängas av under stora dataimporter. Fler alternativ diskuteras i PostgreSQL-dokumentationsavsnittet Fylla i en databas.

Slutsats

PostgreSQL prestandajustering är en komplex uppgift. Komplexiteten kommer från de många tunables som gjorts tillgängliga, vilket är ett starkt argument för PostgreSQL. Det finns ingen silverkula för att lösa prestandaproblem, snarare är det applikationsspecifikationerna som i slutändan dikterar inställningskraven. Därför kan övervakningsverktyg hjälpa till att få prestandainsikter i förhållande till systemets prestanda och ytterligare tillåta att identifiera de PostgreSQL-specifika områden som behöver finjusteras såväl som SQL-frågor som kräver optimering. Databashanteringssystem kan dessutom hjälpa till med installation och administration av PostgreSQL för att säkerställa att bästa praxis följs.


  1. Installation av SQL Server 2017

  2. SSIS-handledning för nybörjare:Varför, vad och hur?

  3. Hur ändrar jag MySQL-datakatalog?

  4. SQLException:Ingen lämplig drivrutin hittades för jdbc:oracle:thin:@//localhost:1521/orcl