3. října 2019 byla vydána nová verze nejpokročilejší open source databáze na světě. PostgreSQL 12 je nyní k dispozici s významnými vylepšeními ve výkonu dotazů (zejména u větších datových sad a celkového využití prostoru) a dalších důležitých funkcí.
V tomto blogu se podíváme na tyto nové funkce a ukážeme vám, jak získat a nainstalovat tuto novou verzi PostgreSQL 12. Prozkoumáme také některé úvahy, které je třeba vzít v úvahu při upgradu.
Funkce a vylepšení PostgreSQL 12
Začněme zmiňovat některé z nejdůležitějších funkcí a vylepšení této nové verze PostgreSQL.
Indexování
- Pro indexy B-Stromu došlo k optimalizaci využití prostoru a výkonu čtení/zápisu.
- Snížení režie WAL při vytváření indexů GiST, GIN a SP-GiST.
- Dotazy na nejbližšího souseda K můžete provádět pomocí operátoru vzdálenosti (<->) pomocí indexů SP-GiST.
- Znovu sestavte indexy bez blokování zápisů do indexu pomocí příkazu REINDEX CONCURRENTLY, což uživatelům umožňuje vyhnout se scénářům prostojů kvůli zdlouhavému přestavování indexu.
Rozdělení
- Došlo k vylepšení oproti dotazům na dělené tabulky, zejména u tabulek s tisíci oddíly, které potřebují načíst data pouze z omezené podmnožiny.
- Vylepšení výkonu pro přidávání dat do dělených tabulek pomocí INSERT a COPY.
- Budete moci připojit nový oddíl k tabulce bez blokování dotazů.
SQL
- Nyní můžete spouštět dotazy na dokumenty JSON pomocí výrazů cesty JSON definovaných ve standardu SQL/JSON a mohou využívat stávající mechanismy indexování pro dokumenty uložené ve formátu JSONB k efektivnímu načítání dat.
- Dotazy WITH lze nyní automaticky vkládat pomocí PostgreSQL 12 (pokud nejsou rekurzivní, nemají žádné vedlejší účinky a jsou odkazovány pouze jednou v pozdější části dotazu), což zase může pomoci zvýšit výkon z mnoha existujících dotazů.
- Představuje „generované sloupce“. Tento typ sloupce počítá svou hodnotu z obsahu jiných sloupců ve stejné tabulce. Podporováno je také ukládání této vypočtené hodnoty.
Internacionalizace
- PostgreSQL 12 rozšiřuje svou podporu porovnávání na ICU tím, že uživatelům umožňuje definovat "nedeterministické porovnávání", které například umožňuje porovnávání bez rozlišení velkých a malých písmen nebo zvýraznění.
Ověření
- Zavádí šifrování na straně klienta i serveru pro ověřování přes rozhraní GSSAPI.
- Služba PostgreSQL je schopna objevit servery LDAP, pokud je kompilována s OpenLDAP.
- Vícefaktorové ověřování pomocí možnosti clientcert=verify-full a další metody ověřování nakonfigurované v souboru pg_hba.conf.
Pokud chcete využít těchto nových funkcí a vylepšení, můžete přejít na stránku stahování a získat poslední verzi PostgreSQL. Pokud požadujete nastavení HA, zde je blog, který vám ukáže, jak nainstalovat a nakonfigurovat PostgreSQL pro HA.
Jak nainstalovat PostgreSQL 12
Pro tento příklad použijeme jako operační systém CentOS7. Musíme tedy přejít na stránku pro stažení OS založený na RedHat a nainstalovat odpovídající verzi.
$ yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Nainstaluje repozitář PostgreSQL se stabilními, testovacími a zdrojovými balíčky.
$ 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
...
Potom nainstalujte klientské a serverové balíčky PostgreSQL12. Nainstaluje některé závislosti na pythonu.
$ yum install postgresql12 postgresql12-server
Nyní můžete inicializovat svou novou databázi PostgreSQL 12.
$ /usr/pgsql-12/bin/postgresql-12-setup initdb
Initializing database ... OK
A povolit/spustit službu PostgreSQL.
$ 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
A je to. Máte spuštěnou novou verzi PostgreSQL.
$ 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)
Nyní máte nainstalovanou poslední verzi PostgreSQL a můžete migrovat svá data do tohoto nového databázového uzlu.
Upgrade na PostgreSQL 12
Pokud chcete upgradovat svou aktuální verzi PostgreSQL na tuto novou verzi, máte tři hlavní možnosti, jak tento úkol provést.
- pg_dump :Je to logický zálohovací nástroj, který vám umožňuje vypsat data a obnovit je v nové verzi PostgreSQL. Zde budete mít dobu odstávky, která se bude lišit podle velikosti vašich dat. Musíte zastavit systém nebo se vyhnout novým datům v hlavním uzlu, spustit pg_dump, přesunout vygenerovaný výpis do nového databázového uzlu a obnovit jej. Během této doby nemůžete zapisovat do své hlavní PostgreSQL databáze, abyste se vyhnuli nekonzistenci dat.
- Pg_upgrade :Je to nástroj PostgreSQL pro upgrade vaší verze PostgreSQL na místě. V produkčním prostředí by to mohlo být nebezpečné a v takovém případě tuto metodu nedoporučujeme. Při použití této metody budete mít také výpadky, ale pravděpodobně to bude podstatně kratší než použití předchozí metody pg_dump.
- Logická replikace :Již od PostgreSQL 10 můžete používat tuto metodu replikace, která vám umožňuje provádět velké aktualizace verzí s nulovými (nebo téměř nulovými) prostoji. Tímto způsobem můžete přidat pohotovostní uzel v poslední verzi PostgreSQL, a když je replikace aktuální, můžete provést proces převzetí služeb při selhání pro podporu nového uzlu PostgreSQL.
Úvahy před upgradem na PostgreSQL 12
Obecně platí, že u všech procesů upgradu a u všech technologií je třeba vzít v úvahu několik bodů. Podívejme se na některé z hlavních.
- Byly odstraněny datové typy abstime, reltime a tinterval.
- Nastavení recovery.conf je v souboru postgresql.conf a již se nepoužívá. Pokud máte tento soubor vytvořen, server se nespustí. Soubory recovery.signal a standby.signal se nyní používají k přepnutí do neprimárního režimu. Nastavení trigger_file bylo přejmenováno na promotion_trigger_file a nastavení standby_mode bylo odstraněno.
- Více konfliktních specifikací recovery_target není povoleno.
- Specifikace „-f“ pro odeslání obsahu výpisu na standardní výstup je vyžadována v pg_restore.
- Maximální délka položky indexu je snížena o osm bajtů v indexech B-Stromu, aby se zlepšilo zpracování duplicitních položek. Operace REINDEX na indexu pg_upgrade'd z předchozí verze může selhat.
- DROP IF EXISTS FUNCTION/PROCEDURE/AGGREGATE/RUTINE generuje chybu, pokud není zadán žádný seznam argumentů a existuje více odpovídajících objektů.
Podrobnější informace o nových funkcích PostgreSQL 12 a úvahách před migrací na něj naleznete na webové stránce Oficiální poznámky k vydání.