Förstå PostgreSQL-arkitektur
PostgreSQL är ett hanteringssystem för klient-/serverrelationsdatabaser (RDMS). PostgreSQL stöder också ett brett utbud av tillägg, till exempel Citus-tillägget i azure Cosmos DB for PostgreSQL-alternativet. När ett tillägg har lästs in i databasen fungerar det som alla inbyggda funktioner.
PostgreSQL har också ett eget frågespråk som kallas pgsql. Dessutom stöder PostgreSQL procedurspråk som Ruby on Rails.
Klient-/serverarkitektur
PostgreSQL baseras på en klient-/serverarkitektur. Servern lagrar, hanterar och returnerar data till klientprogram. Klientprogram begär data med hjälp av pgSQL, eller något av de procedurspråk som PostgreSQL stöder, till exempel PL/pgSQL.
En PostgreSQL-session består av tre delar:
- Postmastern
- Klientprogrammet
- Servern
Postmästare
Postmaster är den tillsynsdaemonprocess som hanterar en PostgreSQL-server. Postmaster-daemonen hanterar kommunikationen mellan de olika serverprocesserna, inklusive att initiera servern, stänga av servern, hantera anslutningsbegäranden och utföra andra bakgrundsprocesser. I Azure Database for PostgreSQL har du inte åtkomst till filsystemet eller Postmaster-processen.
Klientprogram
Klienter kör frågor och interagerar med databaser på en Azure Database for PostgreSQL-server. För att köra frågor behöver du ett klientverktyg som Azure Data Studio, DBeaver, pgAdmin eller psql. Du får lära dig mer om klientverktyg i nästa modul.
Serverprocesser
Kluster – en enskild PostgreSQL-server kan vara värd för flera användardatabaser. PostgreSQL refererar till den här samlingen databaser som ett kluster. Varje databas är separat från den andra och användare och program interagerar med en enda databas. Användare skapas på kluster- eller servernivå.
Data för dessa databaser lagras i klustrets datakatalog med namnet PGDATA. PGDATA-datakatalogen innehåller en fil som innehåller den version av PostgreSQL som körs, pg_tblspc som innehåller länkar till tabellområden och pg_xlog som innehåller loggfilerna för skrivning framåt.
Kommentar
Azure Databases for PostgreSQL är en tjänst som hanterar lagring och det underliggande filsystemet. Som användare av den här servern har du inte direkt åtkomst till PGDATA-katalogen eller någon av dess underkataloger.
Förutom de databaser du skapar finns det tre systemdatabaser:
- postgres – standarddatabasen. När servern har skapats ansluter du till postgres-databasen.
- azure_maintenance – databasen som hanterar tjänstprocesser. Du har inte direkt åtkomst till den här databasen.
- azure_sys – Query Store-databasen. Du får inte ändra azure_sys-databasen eller dess scheman. Om du ändrar något i azure_sys förhindrar du att Query Store och andra prestandafunktioner fungerar korrekt.
Scheman – ett schema är en namngiven gruppering av databasobjekt. Stora databaser med många objekt kan ordna objekt i scheman. Om du till exempel skapar ett schema för försäljningsrelaterade objekt och ett schema för klientrelaterade objekt blir det enklare att hitta rätt objekt.
Serverparametrar – PostgreSQL har flera konfigurationsfiler som avgör hur databasmotorn ska fungera. Huvudkonfigurationsfilen för PostgreSQL kallas postgresql.conf.
Azure Database for PostgreSQL ersatte dessa konfigurationsfiler med serverparametrar som kan nås via Azure Portal eller med hjälp av Azure CLI.
Så här visar eller ändrar du serverparametrar i Azure Portal:
- Gå till Din Azure Database for PostgreSQL-server.
- Välj Serverparametrar under Inställningar på den vänstra menyn.
- Använd sökfältet för att filtrera listan med parametrar eller välj det sidnummer som du behöver.
Storage – Azure Database for PostgreSQL hanterar datalagringen åt dig och etableras på servernivå. Oavsett om du väljer burstbar, generell användning eller minnesoptimerad beräkningsnivå kan du använda upp till 32 TB lagringsutrymme. Om du vill etablera lagring går du till Azure Database for PostgreSQL-servern och i avsnittet Översikt väljer du din konfiguration. Avsnittet Compute + Storage visas. Under Lagring och Lagringsstorlek (i GB) använder du skjutreglaget för att välja den mängd lagringsutrymme som du vill etablera.
Mängden lagringsutrymme som du etablerar definierar I/O-kapaciteten som är tillgänglig för din Azure Database for PostgreSQL-server. Du kan övervaka din I/O-förbrukning i Azure Portal eller med hjälp av Azure CLI-kommandon. Relevanta mått som ska övervakas är lagringsgräns, lagringsprocent, lagring som används och I/O-procent.
Kommentar
Du kan öka mängden lagringsutrymme när du har skapat Azure Database for PostgreSQL-servern, men du kan inte minska mängden lagringsutrymme.
Tablespaces – Med en lokal implementering av PostgreSQL kan du skapa tabellytor som är länkade till huvudlagringsområdet som kallas PGDATA med hjälp av underkatalogen pg_tblspc . Azure Database for PostgreSQL stöder inte tabellområden: alla tabeller skapas i huvudlagringsområdet.
Systemkataloger – PostgreSQL innehåller många systemtabeller och vyer som lagrar information om databasobjekt. Till exempel returnerar pg_database alla databaser på en server och pg_class lagrar statistik om tabeller.
Kommentar
Azure Database for PostgreSQL ger åtkomst till vissa, men inte alla systemkataloger.
Tillägg – PostgreSQL stöder en rad tillägg som utökar databasmotorns kärnfunktioner. Dessa tillägg görs tillgängliga på en lagringsplats som kallas PostgreSQL Extensions Network (PGXN).
Om du vill använda ett PostgreSQL-tillägg måste det vara installerat i databasen. Om du vill installera ett tillägg kör du kommandot CREATE EXTENSION från psql-verktyget för att läsa in tillägget i databasen. Till exempel:
SELECT create_extension('postgis');
Kör följande fråga för att ta reda på vilka tillägg som stöder Azure Database for PostgreSQL:
SELECT * FROM pg_available_extensions;
Alla Azure Database for PostgreSQL-servrar innehåller tillägget pg_stat_statements. Det här tillägget är redan installerat för att tillhandahålla funktioner för att spåra körningsstatistik för SQL-instruktioner. Serverparametern pg_stat_statements.track definierar vilka instruktioner som räknas av tillägget. Alternativen är:
- Överst – spårar alla instruktioner som utfärdas direkt av klienter (standard).
- Ingen – inga instruktioner spåras.
- Alla – spårar alla instruktioner, inklusive kapslade instruktioner och instruktioner som anropas av funktioner.
Kommentar
Det finns prestandakostnader på servern för att logga varje SQL-instruktion. Om du inte aktivt använder pg_stat_statements anger du den här parametern till ingen. Observera också att vissa övervakningstjänster från tredje part kan förlita sig på pg_stat_statements.
Frågeoptimerare – PostgreSQL använder en kostnadsbaserad frågeoptimeringsmetod. Parsern kontrollerar frågesyntaxen och separerar frågan i olika delar. Parsern skapar ett parsningsträd och skickar frågan till skrivmaskinen, som tillämpar regler för frågan. Planeraren räknar ut det bästa sättet att köra frågan innan frågan körs.
Serverdelsprocesser – PostgreSQL-process – per transaktionsmodell. När en ny användare ansluter autentiserar PostgreSQL användaren och skapar en serverdelsprocess för att hantera anslutningen. Klienten interagerar bara med serverprocessen när du skickar frågor och tar emot frågeresultat.