sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvad er nyt i PostgreSQL 12

Den 3. oktober 2019 blev en ny version af verdens mest avancerede open source-database frigivet. PostgreSQL 12 er nu tilgængelig med bemærkelsesværdige forbedringer til forespørgselsydeevne (især over større datasæt og overordnet pladsudnyttelse) blandt andre vigtige funktioner.

I denne blog tager vi et kig på disse nye funktioner og viser dig, hvordan du får og installerer denne nye PostgreSQL 12-version. Vi vil også undersøge nogle overvejelser, der skal tages i betragtning, når du opgraderer.

PostgreSQL 12 funktioner og forbedringer

Lad os begynde at nævne nogle af de vigtigste funktioner og forbedringer af denne nye PostgreSQL-version.

Indeksering

  • Der er en optimering af pladsudnyttelse og læse-/skriveydelse for B-Tree-indekser.
  • Reduktion af WAL-overhead til oprettelse af GiST-, GIN- og SP-GiST-indekser.
  • Du kan udføre K-nærmeste nabo-forespørgsler med afstandsoperatøren (<->) ved hjælp af SP-GiST-indekser.
  • Genopbyg indekser uden at blokere skrivninger til et indeks via kommandoen REINDEX CONCURRENTLY, hvilket giver brugerne mulighed for at undgå nedetidsscenarier for længerevarende indeksgenopbygninger.

Partitionering

  • Der er forbedringer i forhold til forespørgsler på partitionerede tabeller, især for tabeller med tusindvis af partitioner, der kun behøver at hente data fra et begrænset undersæt.
  • Ydeevneforbedringer for tilføjelse af data til partitionerede tabeller med INSERT og COPY.
  • Du vil være i stand til at vedhæfte en ny partition til en tabel uden at blokere forespørgsler.

SQL

  • Du kan nu køre forespørgsler over JSON-dokumenter ved hjælp af JSON-stiudtryk defineret i SQL/JSON-standarden, og de kan bruge de eksisterende indekseringsmekanismer for dokumenter, der er gemt i JSONB-formatet, til effektivt at hente data.
  • WITH-forespørgsler kan nu automatisk indlejres af PostgreSQL 12 (hvis det ikke er rekursivt, ikke har nogen bivirkninger og kun refereres én gang i en senere del af en forespørgsel), hvilket igen kan hjælpe med at øge ydeevnen af mange eksisterende forespørgsler.
  • Introducerer "genererede kolonner." Denne type kolonne beregner dens værdi ud fra indholdet af andre kolonner i samme tabel. Lagring af denne beregnede værdi på denne understøttes også.

Internationalisering

  • PostgreSQL 12 udvider sin understøttelse af ICU-sammenstillinger ved at give brugerne mulighed for at definere "ikke-deterministiske sammenstillinger", der for eksempel kan tillade sammenligninger uden store og små bogstaver eller accentufølsomme.

Godkendelse

  • Introducerer både klient- og serverkryptering til godkendelse over GSSAPI-grænseflader.
  • PostgreSQL-tjenesten er i stand til at opdage LDAP-servere, hvis den er kompileret med OpenLDAP.
  • Multifaktorgodkendelse ved hjælp af clientcert=verify-full-indstillingen og en ekstra godkendelsesmetode, der er konfigureret i filen pg_hba.conf.

Hvis du vil drage fordel af disse nye funktioner og forbedringer, kan du gå til downloadsiden og få den sidste PostgreSQL-version. Hvis du har brug for en HA-opsætning, er her en blog, der viser dig, hvordan du installerer og konfigurerer PostgreSQL til HA.

Sådan installeres PostgreSQL 12

I dette eksempel skal vi bruge CentOS7 som operativsystem. Så vi er nødt til at gå til den RedHat-baserede OS-downloadside og installere den tilsvarende version.

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

Det vil installere PostgreSQL-lageret med stabile, test- og kildepakker.

$ 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

...

Installer derefter klient- og server-PostgreSQL12-pakkerne. Det vil installere nogle python-afhængigheder.

$ yum install postgresql12 postgresql12-server

Nu kan du initialisere din nye PostgreSQL 12-database.

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

Initializing database ... OK

Og aktiver/start PostgreSQL-tjenesten.

$ 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

Og det er det. Du har den nye PostgreSQL-version oppe at køre.

$ 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 installeret den sidste PostgreSQL-version, kan du migrere dine data til denne nye databasenode.

Opgradering til PostgreSQL 12

Hvis du vil opgradere din nuværende PostgreSQL-version til denne nye, har du tre hovedmuligheder, som vil udføre denne opgave.

  • pg_dump :Det er et logisk backupværktøj, der giver dig mulighed for at dumpe dine data og gendanne dem i den nye PostgreSQL-version. Her vil du have en nedetidsperiode, der vil variere i forhold til din datastørrelse.. Du skal stoppe systemet eller undgå nye data i masterknuden, køre pg_dump, flytte det genererede dump til den nye databasenode og gendanne det. I løbet af denne tid kan du ikke skrive ind i din master PostgreSQL-database for at undgå datainkonsistens.
  • Pg_upgrade :Det er et PostgreSQL-værktøj til at opgradere din PostgreSQL-version på stedet. Det kan være farligt i et produktionsmiljø, og vi anbefaler ikke denne metode i så fald. Ved at bruge denne metode vil du også have nedetid, men sandsynligvis vil det være betydeligt mindre end ved at bruge den tidligere pg_dump-metode.
  • Logisk replikering :Lige siden PostgreSQL 10 har du været i stand til at bruge denne replikeringsmetode, som giver dig mulighed for at udføre større versionsopgraderinger med nul (eller næsten nul) nedetid. På denne måde kan du tilføje en standby-node i den sidste PostgreSQL-version, og når replikeringen er opdateret, kan du udføre en failover-proces for at fremme den nye PostgreSQL-node.

Overvejelser før opgradering til PostgreSQL 12

Generelt, for alle opgraderingsprocesser og i al teknologi, er der flere punkter at tage hensyn til. Lad os se nogle af de vigtigste.

  • Datatyperne abstime, reltime og tinterval blev fjernet.
  • Recovery.conf-indstillingerne er i postgresql.conf-filen, og den bruges ikke længere. Hvis du har oprettet denne fil, starter serveren ikke. Filerne recovery.signal og standby.signal-filer bruges nu til at skifte til ikke-primær tilstand. Trigger_file-indstillingen er blevet omdøbt til promote_trigger_file, og standby_mode-indstillingen er blevet fjernet.
  • De flere modstridende recovery_target-specifikationer er ikke tilladt.
  • Specifikationen af ​​"-f" for at sende dumpindholdet til standardoutput er påkrævet i pg_restore.
  • Den maksimale indeksindtastningslængde er reduceret med otte bytes i B-Tree-indekserne for at forbedre håndteringen af ​​duplikerede poster. REINDEX-operation på et index pg_upgrade'd fra en tidligere version kunne mislykkes.
  • DROP HVIS FINDER FUNKTION/PROCEDURE/AGGREGAT/RUTINE genererer en fejl, hvis der ikke er angivet en argumentliste, og der er flere matchende objekter.

For mere detaljeret information om de nye PostgreSQL 12-funktioner og overvejelser, før du migrerer til den, kan du henvise til den officielle udgivelsesbemærkning-webside.


  1. Konverter 'datetime' til 'date' i SQL Server (T-SQL-eksempler)

  2. Postgres drop table syntaksfejl

  3. Fordele og ulemper ved at bruge lagrede procedurer

  4. Kan MySQL FIND_IN_SET eller tilsvarende fås til at bruge indekser?