sql >> Databasteknik >  >> RDS >> PostgreSQL

Vad är nytt i PostgreSQL 12

Den 3 oktober 2019 släpptes en ny version av världens mest avancerade öppen källkodsdatabas. PostgreSQL 12 är nu tillgänglig med anmärkningsvärda förbättringar av frågeprestanda (särskilt över större datamängder och övergripande utrymmesutnyttjande) bland andra viktiga funktioner.

I den här bloggen tar vi en titt på dessa nya funktioner och visar dig hur du skaffar och installerar denna nya PostgreSQL 12-version. Vi kommer också att undersöka några överväganden att ta hänsyn till när du uppgraderar.

PostgreSQL 12-funktioner och förbättringar

Låt oss börja nämna några av de viktigaste funktionerna och förbättringarna i denna nya PostgreSQL-version.

Indexering

  • Det finns en optimering av utrymmesutnyttjande och läs-/skrivprestanda för B-Tree-index.
  • Reducering av WAL-overhead för skapandet av GiST-, GIN- och SP-GiST-index.
  • Du kan utföra K-närmaste grannfrågor med avståndsoperatören (<->) med hjälp av SP-GiST-index.
  • Återskapa index utan att blockera skrivningar till ett index via kommandot REINDEX CONCURRENTLY, så att användare kan undvika driftstoppsscenarier för långa indexombyggnader.

Partitionering

  • Det finns förbättringar jämfört med frågor på partitionerade tabeller, särskilt för tabeller med tusentals partitioner som bara behöver hämta data från en begränsad delmängd.
  • Prestandaförbättringar för att lägga till data till partitionerade tabeller med INSERT och COPY.
  • Du kommer att kunna bifoga en ny partition till en tabell utan att blockera frågor.

SQL

  • Du kan nu köra frågor över JSON-dokument med JSON-sökvägsuttryck definierade i SQL/JSON-standarden och de kan använda de befintliga indexeringsmekanismerna för dokument lagrade i JSONB-formatet för att effektivt hämta data.
  • WITH-frågor kan nu infogas automatiskt av PostgreSQL 12 (om det inte är rekursivt, inte har några biverkningar och endast refereras en gång i en senare del av en fråga), vilket i sin tur kan hjälpa till att öka prestandan av många befintliga frågor.
  • Introducerar "genererade kolumner." Denna typ av kolumn beräknar dess värde från innehållet i andra kolumner i samma tabell. Lagring av detta beräknade värde på detta stöds också.

Internationalisering

  • PostgreSQL 12 utökar sitt stöd för ICU-kollationer genom att tillåta användare att definiera "icke-deterministiska sammanställningar" som till exempel kan tillåta skiftlägesokänsliga eller accentokänsliga jämförelser.

Autentisering

  • Inför både klient- och serverkryptering för autentisering över GSSAPI-gränssnitt.
  • PostgreSQL-tjänsten kan upptäcka LDAP-servrar om den är kompilerad med OpenLDAP.
  • Multifaktorautentisering, med alternativet clientcert=verify-full och en extra autentiseringsmetod konfigurerad i filen pg_hba.conf.

Om du vill dra nytta av dessa nya funktioner och förbättringar kan du gå till nedladdningssidan och få den senaste PostgreSQL-versionen. Om du behöver en HA-installation, här är en blogg som visar hur du installerar och konfigurerar PostgreSQL för HA.

Hur man installerar PostgreSQL 12

I det här exemplet kommer vi att använda CentOS7 som operativsystem. Så vi måste gå till den RedHat-baserade OS-nedladdningssidan och installera motsvarande version.

$ yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Det kommer att installera PostgreSQL-förvaret med stabila, testande och källkodspaket.

$ head /etc/yum.repos.d/pgdg-redhat-all.repo

# PGDG Red Hat Enterprise Linux / CentOS stable repositories:

[pgdg12]

name=PostgreSQL 12 for RHEL/CentOS $releasever - $basearch

baseurl=https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-$releasever-$basearch

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG

...

Installera sedan klient- och serverpaketen PostgreSQL12. Det kommer att installera vissa python-beroenden.

$ yum install postgresql12 postgresql12-server

Nu kan du initiera din nya PostgreSQL 12-databas.

$ /usr/pgsql-12/bin/postgresql-12-setup initdb

Initializing database ... OK

Och aktivera/starta PostgreSQL-tjänsten.

$ systemctl enable postgresql-12

Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-12.service to /usr/lib/systemd/system/postgresql-12.service.

$ systemctl start postgresql-12

Och det är allt. Du har den nya PostgreSQL-versionen igång.

$ psql

psql (12.0)

Type "help" for help.

postgres=# select version();

                                                 version

---------------------------------------------------------------------------------------------------------

 PostgreSQL 12.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit

(1 row)

Nu har du installerat den senaste PostgreSQL-versionen, kan du migrera dina data till denna nya databasnod.

Uppgraderar till PostgreSQL 12

Om du vill uppgradera din nuvarande PostgreSQL-version till denna nya, har du tre huvudalternativ som kommer att utföra denna uppgift.

  • pg_dump :Det är ett logiskt säkerhetskopieringsverktyg som låter dig dumpa din data och återställa den i den nya PostgreSQL-versionen. Här kommer du ha en stilleståndsperiod som kommer att variera beroende på din datastorlek. Du måste stoppa systemet eller undvika ny data i masternoden, köra pg_dump, flytta den genererade dumpen till den nya databasnoden och återställa den. Under den här tiden kan du inte skriva in i din master PostgreSQL-databas för att undvika datainkonsekvens.
  • Pg_upgrade :Det är ett PostgreSQL-verktyg för att uppgradera din PostgreSQL-version på plats. Det kan vara farligt i en produktionsmiljö och vi rekommenderar inte den här metoden i så fall. Om du använder den här metoden kommer du också ha stillestånd, men förmodligen kommer det att vara betydligt mindre än med den tidigare pg_dump-metoden.
  • Logisk replikering :Ända sedan PostgreSQL 10 har du kunnat använda denna replikeringsmetod som låter dig utföra större versionsuppgraderingar med noll (eller nästan noll) driftstopp. På detta sätt kan du lägga till en standby-nod i den senaste PostgreSQL-versionen, och när replikeringen är uppdaterad kan du utföra en failover-process för att främja den nya PostgreSQL-noden.

Överväganden innan du uppgraderar till PostgreSQL 12

I allmänhet, för alla uppgraderingsprocesser, och i all teknik, finns det flera punkter att ta hänsyn till. Låt oss se några av de viktigaste.

  • Datatyperna abstime, reltime och tinterval togs bort.
  • Inställningarna för recovery.conf finns i postgresql.conf-filen och den används inte längre. Om du har skapat den här filen startar inte servern. Filerna recovery.signal och standby.signal används nu för att växla till icke-primärt läge. Trigger_file-inställningen har bytt namn till promote_trigger_file och standby_mode-inställningen har tagits bort.
  • De flera motstridiga recovery_target-specifikationerna är inte tillåtna.
  • Specifikationen för "-f" för att skicka dumpinnehållet till standardutdata krävs i pg_restore.
  • Den maximala längden för indexposter reduceras med åtta byte i B-Tree-indexen, för att förbättra hanteringen av dubbla poster. REINDEX-operation på ett index pg_upgrade'd från en tidigare version kunde misslyckas.
  • SLAPP OM FINNS FUNKTION/PROCEDUR/AGGREGAT/RUTIN genererar ett fel om ingen argumentlista tillhandahålls och det finns flera matchande objekt.

För mer detaljerad information om de nya PostgreSQL 12-funktionerna och övervägande innan du migrerar till den, kan du gå till den officiella versionskommentarer-webbsidan.


  1. Skapa en tabell av två typer i PostgreSQL

  2. Hur får man tillgång till Oracle-databasen över nätverket?

  3. java.security.AccessControlException:åtkomst nekad (java.security.SecurityPermission authProvider.SunMSCAPI)

  4. ORA-01950:inga privilegier på tabellutrymmet "USERS"