+ All Categories
Home > Documents > Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze...

Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze...

Date post: 22-Aug-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
36
Novinky v PostgreSQL 12 Prague PostgreSQL Developer Day, 6. února 2020 Tomáš Vondra < [email protected]>
Transcript
Page 1: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

Novinky v PostgreSQL 12Prague PostgreSQL Developer Day, 6. února 2020

Tomáš Vondra <[email protected]>

Page 2: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

Odstraněné věci● datové typy (nahrazeno SQL-standard typy)

○ abstime

○ reltime

○ tinternal

● podpora pro --disable-strong-random○ vyžadován silný zdroj náhodných dat

Page 3: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

DBA / Admin

Page 4: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

pg_stat_ssl● nové sloupce

○ client_serial

○ issuer_dn

● dat skrytá pro neprivilegované uživatele

Page 5: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

SSL konfiguracekontrola min/max SSL verze

● ssl_min_protocol_version=TLSv1● ssl_max_protocol_version=''

všechny podporované úrovně TLS

● TLSv1, TLSv1.1, TLSv1.2, TLSv1.3

Page 6: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

GSSAPI šifrování● šifrování bez SSL

● bez potřeby certifikátů apod.

● předpokládá že GSSAPI už funguje

● pg_stat_gssapi

Page 7: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

VACUUMSKIP_LOCKED

● přeskočí relace které nejde okamžitě zamknout

DISABLE_PAGE_SKIPPING

● obchází visibility map

● určeno pro debuggování

vacuumdb --min-xid-age X --min-mxid-age Y

Page 8: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

COPY FROM WHERECOPY mytable (a,b,c)FROM '/tmp/myfile.csv'WITH CSVWHERE a > 5

Page 9: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

CSV výstupní formát v psqlpostgres=# \pset format csvOutput format is csv.postgres=# SELECT * FROM mytable;a,b,c7,8,9

Page 10: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

pg_stat_statementsresetování statistik pro jednotlivé dotazy

SELECT pg_stat_statements_reset(queryid => -6363133595);

Page 11: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

Progress monitoringpg_stat_progress_create_index

● CREATE INDEX● REINDEX

pg_stat_progress_cluster

● CLUSTER● VACUUM FULL

Page 12: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

REINDEX CONCURRENTLY● reindexování bez zamezení zápisů

● trochu jako DROP + CREATE CONCURRENTLY

● reindexdb --concurrently

Page 13: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

Checksums● offline zapnutí / vypnutí

● progress report for zapínání / kontrolu

● pg_checksums --progress

Page 14: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

Pluggable access method● API pro "storage engines"

● existuje jediná implementace (zatím)

Page 15: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

SQL a vývojáři

Page 16: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

WITH OIDS● Odstraněno!

● označeno jako "deprecated" od 2005

● oid je nyní normální sloupec

● žádná další magie

Page 17: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

GENERATED sloupce● sloupce s výsledkem výpočtu

● aktuálně podporována pouze STORED varianta

● bez triggerů

CREATE TABLE foo ( a int NOTNULL, b int GENERATED ALWAYS AS (a*2) STORED);

Page 18: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

ENUM● přidání enum hodnoty v transakci

postgres=# BEGIN;postgres=# ALTER TYPE etype ADD VALUE 'foo';postgres=# ROLLBACK;

● nové omezení

postgres=# BEGIN;postgres=# ALTER TYPE etype ADD VALUE 'foo';postgres=# SELECT'foo'::etype;ERROR: unsafe use of new value "foo" of enum type etype

Page 19: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

JSONPATH● SQL standard pro dotazování JSON dokumentů

● nový "query language"

● stále stejné indexování

● nové funkce a operátory

○ jsonb_path_exists() @?

○ jsonb_path_matches() @@

○ jsonb_path_query()

○ ...

Page 20: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

JSONPATHSELECT jsonb_path_exists('{"a": 1}', '$.a');

SELECT'{"a": 1}'::jsonb @? '$.a';

SELECT jsonb_path_match('{"a": 1}', '$.a == 1');

SELECT'{"a": 1}'::jsonb @@ '$.a == 1';

Page 21: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

CTE● ne nutně "optimization barrier" jako dříve● nové klíčové slovo MATERIALIZE

postgres=# WITH t AS (SELECT * FROM foo),postgres-# t2 AS (SELECT * FROM foo)postgres-# SELECT * FROM t UNION ALL SELECT * FROM t2;

Page 22: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

CTE / MATERIALIZEDpostgres=# EXPLAINpostgres-# WITH t AS (SELECT * FROM foo),postgres-# t2 AS MATERIALIZED (SELECT * FROM foo)postgres-# SELECT * FROM t UNION ALL SELECT * FROM t2;

QUERY PLAN ------------------------------------------------------------------ Append (cost=35.50..147.50 rows=5100 width=4) CTE t2 -> Seq Scan on foo foo_1 (cost=0.00..35.50 rows=...) -> Seq Scan on foo (cost=0.00..35.50 rows=2550 width=4) -> CTE Scan on t2 (cost=0.00..51.00 rows=2550 width=4)(5 rows)

Page 23: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

CREATE STATISTICS● nový typ statistik MCV

CREATE TABLE t ASSELECT mod(i,100) AS a, mod(i,100) AS bFROM generate_series(1,1000000) s(i);

CREATE STATISTICS s (mcv) ON a, b FROM t;

ANALYZE t;

EXPLAIN ANALYZE SELECT * FROM t WHERE (a > 0) AND (b < 2);

Page 24: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

Zálohování & replikace

Page 25: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

max_wal_senders● nadále není zahrnuto v max_connections

● oddělený parametr, dedikovaný wal sender procesům

Page 26: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

recovery.conf● integrováno do postgresql.conf

● v hlavním konfiguračním souboru / include souboru○ např. postgresql.auto.conf

● rekonfigurace pouze reloadem○ recovery_min_apply_delay, archive_cleanup_command, ...

● recovery.signal○ nový "trigger" soubor (protože recovery.conf už neexistuje)

● standby.signal○ nový "trigger" soubor pro standby mode

Page 27: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

recovery.conf● rekonfigurace pouze reloadem

○ recovery_min_apply_delay, archive_cleanup_command, ...

● recovery_target_timeline○ nový default "latest"

● pg_promote()○ funkce pro "promote" standby

Page 28: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

Exclusivní backupyještě více označeny jako "deprecated"

Page 29: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

Výkon

Page 30: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

IndexySP-GiST

● nyní podporují KNN vyhledávíní

GiST, GIN a SP-GiST

● méně WAL generováno během vytváření indexů● rychlejší a lepší!

GiST covering indexy (IOS)

● INCLUDE klauzule

Page 31: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

TOAST● částečná dekomprese TOAST hodnot

● pokud stačí pouze část hodnoty (např. PostGIS)

Page 32: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

Partitioning● flexibilnější limity partitions (generalized expressions)

● zamykání odloženo až do exekuce○ může vést k daleko rychlejším skenům

○ pokud se pracuje s mnoha partitions

● ATTACH nevyžaduje access exclusive lock

● Multi-inserty pro COPY○ rychlejší COPY do partitioned tabulek

● Cizí klíče ukazující na partitioned tabulku○ pokud partitioned tabulka má PRIMARY KEY

Page 33: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

SERIALIZABLE● nyní funguje s paralelními dotazy

Page 34: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

JIT kompilace● nyní zapnuto by default

Page 35: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

… a spousta dalšího

Page 36: Novinky v PostgreSQL 12 · 2020. 2. 17. · např. postgresql.auto.conf rekonfigurace pouze reloadem recovery_min_apply_delay, archive_cleanup_command, ... recovery.signal nový "trigger"

https://www.postgresql.org/docs/12/release-12.html


Recommended