sql >> Databasteknik >  >> RDS >> PostgreSQL

Nya och utvecklande PostgreSQL Enterprise-funktioner med senaste versioner

PostgreSQL introducerade också många andra banbrytande funktioner i versionerna 10 till 11, 12 och 13 som gör det till en riktig konkurrent mot Oracle, såsom partitioneringsförbättringar, parallellfråga och logisk replikering. I det här blogginlägget kommer vi att visa upp några av de nya och anmärkningsvärda PostgreSQL-funktionerna som ingår i nyare versioner av PostgreSQL.

Partitioneringsfunktioner

Deklarativ partitionering

Fram till PostgreSQL version 9.4 fanns det ingen faktisk partitionering i PostgreSQL. Det uppnåddes endast genom tabellarv, vilket erbjöd mycket begränsad funktionalitet och prestandafördelar. Mycket av funktionaliteten hanteras manuellt genom triggers eller SQL-kommandon. Till exempel var vi tvungna att använda triggers för att rikta en rad före INSERT till rätt partition. Vi måste skapa index för varje partition separat. PostgreSQL version 10 födde deklarativ partitionering, men vi var fortfarande tvungna att skapa begränsningar och index för varje partition.

PostgreSQL 11 levereras komplett med en mycket imponerande uppsättning nya partitioneringsfunktioner som både hjälper till att förbättra prestanda och även för att göra partitionerade tabeller mer transparenta för applikationer.

Logisk replikering av partitionerade tabeller

Med PostgreSQL 13 introducerade de stöd för logiskt replikering av partitionerade tabeller. Tidigare var du tvungen att replikera partitioner till dina standbylägen individuellt. Nu kan du dock automatiskt replikera alla dina partitioner samtidigt

Partitioneringsmetoder

De partitioneringsmetoder som för närvarande stöds är range, list och hash.

Nycklar och index

Fullt stöd för främmande nycklar på partitionerade tabeller lades till i PostgreSQL 12. PostgreSQL har också stöd för primärnycklar, index och utlösare på partitionerade tabeller.

Standardpartition

PostgreSQL tillåter skapandet av en "standard" partition för att lagra data som inte matchar någon av de återstående partitionerna. Oracle-användare kommer att älska den här funktionen eftersom den inte är tillgänglig i Oracle Database.

Radrörelse

UPPDATERA uttalanden som ändrar en partitionsnyckelkolumn gör nu att berörda rader flyttas till lämpliga partitioner.

Partitionsbeskärning

Förbättra SELECT-prestanda genom förbättrade partitionselimineringsstrategier under frågeplanering och exekvering. En ny metod för att utföra partitionseliminering har lagts till. Den här nya algoritmen kan bestämma matchande partitioner genom att titta på frågans WHERE-sats. Den tidigare algoritmen kontrollerade varje partition i sin tur för att se om den kunde matcha WHERE-satsen i frågan. Detta resulterade i en ytterligare ökning av planeringstiden i takt med att antalet partitioner växte.

Partitionsbeskärning under utförande av fråge

När det gäller förberedda satser är frågeparametrarna inte kända före körningen. Query Planner kan inte eliminera partitioner under planeringsfasen eftersom parametrar inte är kända. Så, exekutorn gör partitionsbeskärningen under körningen för att bara komma åt de partitioner som matchar parametrar.

Nya och utvecklande PostgreSQL Enterprise-funktioner med senaste utgåvorKlicka för att tweeta

Indexeringsfunktioner

Täckande index

PostgreSQL låter dig nu lägga till icke-nyckelkolumner i btree-indexet. Eftersom frågor vanligtvis behöver hämta fler kolumner än bara de de söker på, låter PostgreSQL dig skapa ett index där vissa kolumner bara är "nyttolast" och inte är en del av söknyckeln. Det hjälper bara att göra index-skanningar för att hämta de rader som krävs.

indexera om samtidigt

Från och med PostgreSQL 12 är det möjligt att bygga om ett index med REINDEX SAMTIDIGT utan att låsa tabellen för läsning/skrivning, precis som Oracle REBUILD INDEX-kommandot.

Skapa parallellt index

Med parallell indexskapande (introducerat i PostgreSQL 11, för närvarande endast tillämpligt för b-tree index), kan index skapas snabbare upp till max_parallel_workers värde och ställa in maintenance_work_mem som är tillräckligt stora för att hålla flera kopior av data. Parallellt indexskapande kan avsevärt minska din indexskapandetid.

Deduplicering av data i B-Tree Index

Ibland kommer det att finnas dubbla poster i ett index. Det betyder att en lövnod i ett B-Tree-index med minst två indexposter i samma index innehåller samma data för alla indexkolumner. Med tillägget av deduplicering i PostgreSQL 13 kan du gruppera dessa dubbla B-Tree indexposter och samla dem i en grupppost. Fördelen med detta är att spara utrymme och minska belastningen på disk och RAM, eftersom du inte behöver duplicera kolumndata. Dubblettposter orsakar också oönskad indexuppblåsthet.

Autentisering

SCRAM-SHA-256

I PostgreSQL 11 kom stöd för SCRAM-SHA-256 lösenordsautentisering. Denna metod förhindrar lösenordssniffning på opålitliga anslutningar och låter dig lagra dina lösenord i en kryptografiskt hashad form.

Av alla för närvarande stödda lösenordsautentiseringsmetoder är detta den säkraste.

GSSAPI

GSSAPI tillåter säker autentisering, såväl som automatisk enkel inloggning för system som stöder det. Denna autentiseringsmetod bygger på ett GSSAPI-kompatibelt säkerhetsbibliotek. Data som skickas över databasanslutningen kommer att vara okrypterad om inte SSL används; men själva autentiseringen är säker. GSSAPI med Kerberos-autentisering är möjligt med PostgreSQL enligt industristandarder. När Kerberos används används en standardprincip i formatet "tjänstnamn/värdnamn@rike". Alla principer som ingår i tangentbordet som används av servern kommer att accepteras av PostgreSQL-servern.

LDAP

Denna autentiseringsmetod fungerar på liknande sätt som lösenordsautentisering och använder LDAP som verifieringsmetod. Det används bara för att validera användarnamn och lösenordspar, därför måste användaren redan finnas i databasen för att autentiseringen ska fungera. LDAP-autentisering fungerar antingen i ett enkelt bindningsläge eller vad som kallas sök+bind. Search+bind låter dig använda andra identifierare jämfört med det enkla bindningsläget, som endast tillåter att det distinguerade namnet, domännamnet eller e-postadressen används.

Certifikat

Certifikatautentiseringsmetoden använder SSL-certifikat för att autentisera. Följaktligen är den endast tillgänglig för SSL-anslutningar. Med certifikatautentisering krävs inget lösenord. Klienten behöver helt enkelt tillhandahålla ett giltigt och pålitligt certifikat för att kunna autentisera. Certifikatets gemensamma namn kommer att matchas med databasens användarnamn, och om en matchning hittas kommer klienten att loggas in.

Andra anmärkningsvärda funktioner

Parallelldammsugare

Med lanseringen av PostgreSQL 13 implementerades förbättringar av VACUUM-kommandot. Förbättringen i fråga är det tillagda parameteralternativet PARALLEL. Med PARALLEL kan du utföra indexvakuum och indexrensningsfaser av VACUUM. Detta gör att du kan parallelldammsuga flera index som motsvarar en enda tabell.

Parallell fråga

De flesta rapportfrågor, som i allmänhet skannar mycket data, lider av prestandaförsämring på grund av att man behöver skanna eller aggregera data från många rader även med en indexskanning. Dessa frågor kan endast använda en CPU fram till 9.4 och köras seriellt.

Med parallell fråga (som erbjuder parallell sekventiell genomsökning, merge join, hash join, aggregat och andra parallella frågeplansfunktioner) kan dessa frågor dra fördel av flera arbetare, och prestanda kan förbättra från 2x till 10x enligt dokumentationen.

Kolla in det här inlägget för att lära dig när du använder parallella frågor.

Inbyggd logisk replikering

PostgreSQL introducerade inbyggd logisk replikering i version 10 för att ge ett mer flexibelt replikeringsalternativ, till skillnad från strömmande replikering och mer som Oracle Streams, för att replikera specifika tabeller, kolumner eller rader. Detta kan användas för att dela upp mellan flera databaser eller konsolidera från flera databaser. Och kan även replikera mellan olika större versioner av PostgreSQL.

Lagrade procedurer med inbäddade transaktioner

Ännu ett tillägg som gör PostgreSQL kompatibel för migrering från Oracle-databas.

Vi har ingen transaktionskontroll i pgsql-programmet (DO-block eller funktion) i version 9.4, och vi måste använda en lösning som dblink för att starta och utföra/återställa transaktioner .

Med lagrade procedurer, som hade premiär i version 11, kan vi nu implementera transaktionskontroll inom vilken pgsql-struktur som helst som while loop, for loop eller if else-sats. Även om lagrade procedurer liknar funktioner, måste de anropas av CALL-kommando och kan fungera som oberoende program.

Genererade kolumner

Precis som Oracle-databasen kan genererade kolumner i PostgreSQL lagra data som automatiskt beräknas från andra kolumner i raden. Detta påskyndar frågor genom att inte behöva beräkna värdet under exekveringen av frågan, utan istället beräknas det genererade kolumnvärdet på INSERT eller UPPDATERA till raden.

JIT-kompilering

PostgreSQL 11, 12 och 13 stöder alla Just-in-Time (JIT) kompilering, som lades till redan 2018. JIT kompilering är processen att förvandla en tolkad programutvärdering till ett inbyggt program. Med JIT-kompilering kan denna process göras under körning. En fördel med JIT är möjligheten att generera uttrycksspecifika funktioner som CPU:n kan köra naturligt. I sin tur ger processen dig en snabbare.

Sidkontrollsummor

Sidkontrollsummor är en funktion som hjälper dig att verifiera integriteten hos data som lagras på disken. Tidigare kunde du bara aktivera sidkontrollsummor under initieringen av ett PostgreSQL-kluster. PostgreSQL 12 introducerade möjligheten att aktivera eller inaktivera sidkontrollsummor i ett offlinekluster via kommandot pg_checksums.

Sammanfattning

Som du kan se från den här artikeln är PostgreSQL ett ständigt utvecklande databassystem som ger många kraftfulla funktioner till bordet. Varje ny version lägger till nya spännande funktioner som gör den till en riktig konkurrent till andra databaser som Oracle. Dess funktioner för partitionering och indexering får många nya uppdateringar som kompletterar den redan expansiva verktygslådan.

Om du letar efter en hanterad lösning för din PostgreSQL-databas, kolla gärna in vår ScaleGrid för PostgreSQL-tjänst. Vi tillhandahåller en gratis 30-dagars provperiod som låter dig använda alla våra hanteringsfunktioner utan begränsningar. Priset börjar på bara 10 USD/månad och ger dig tillgång till en helt hanterad PostgreSQL-värdlösning i företagsklass med support dygnet runt.


  1. Få standardvärdena för tabellkolumner i Postgres?

  2. Kapacitetsplanering för MySQL och MariaDB - Dimensionerande lagringsstorlek

  3. Lösningsindex för tabellanvändare är korrupt; försök att reparera det

  4. Konvertera månadsnummer till månadsnamnsfunktion i SQL