48
PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander [email protected] PRODUCTS CONSULTING APPLICATION MANAGEMENT IT OPERATIONS SUPPORT TRAINING

PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander [email protected] PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

PostgreSQL 9.4PGConf.EU 2014

Madrid, Spain

Magnus [email protected]

PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS • SUPPORT • TRAINING

Page 2: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Magnus Hagander•PostgreSQL

•Core Team member•Committer•PostgreSQL Europe

•Redpill Linpro•Infrastructure services•Principal database consultant

Page 3: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Do you read...•planet.postgresql.org

Page 4: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Thanks to!•depesz•Michael Paquier•(others)•And the developers of course!

Page 5: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Development schedule•June 14, 2013 - branch 9.3•June 2013 - CF1•September 2013 - CF2•November 2013 - CF3•January 2014 - CF4•July 2014 - beta2!

Page 6: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Current status•In beta testing!•Please help with testing!

Page 7: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Current status•Statistics!

•2222 files changed•131805 insertions (+)•59333 deletions(-)

•Lower than 9.3•But..?

Page 8: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

So what's really new•Need some sort of categorization•Developer and SQL features•Infrastructure•DBA and administration•Replication and recovery

Page 9: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

New features•Developer and SQL features•Infrastructure•DBA and administration•Replication and recovery

Page 10: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Smaller aggregate changes•Allow variadic aggregates

•None shipped by default•For user defined

•Improved EXPLAIN informationHashAggregate (cost=2.94..2.98 rows=4 width=8) Group Key: a -> Seq Scan on agg (cost=0.00..2.11 rows=111 width=8)

Page 11: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

FILTER aggregates•Add support for FILTER clause to aggregates•No more case-then-null!SELECT a, count(*), count(*) FILTER (WHERE b > 5)FROM agg GROUP BY a

Page 12: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Ordered-set aggregates•New class of aggregates

•"Offset in group"•WITHIN GROUP•Also Hypothetical aggregates

Page 13: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Ordered-set aggregates•Most common value in groupSELECT a, mode() WITHIN GROUP (ORDER BY b)FROM agg GROUP BY a

Page 14: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Ordered-set aggregates•PercentilesSELECT a, percentile_cont(0.3) WITHIN GROUP (ORDER BY b), percentile_disc(0.3) WITHIN GROUP (ORDER BY b)FROM agg GROUP BY a

Page 15: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Ordered-set aggregates•Hypothetical rowsSELECT a, rank(4) WITHIN GROUP (ORDER BY b), percent_rank(4) WITHIN GROUP (ORDER BY b)FROM agg GROUP BY a

Page 16: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Improved updatable views•Partially updatable views•Some columns can be updated, others not•Automatically detected

Page 17: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Improved updatable views•WITH CHECK OPTION•Only allow rows visible through view•LOCAL

•Only conditions on current view checked•CASCADE

•Recursively check on parents•Default once CHECK OPTION is specified

Page 18: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

UNNEST•Multi-argument UNNEST

•Unnest multiple arrays at onceSELECT * FROM unnest( array['a', 'b', 'c', 'x', 'y'], array['d', 'e', 'f'])

Page 19: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

WITH ORDINALITY•Automatic row number for unnested rowsSELECT * FROM unnest( array['a', 'b', 'c', 'x', 'y'], array['d', 'e', 'f']) WITH ORDINALITY

Page 20: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

pl/pgsql stacktrace•You can now get a stacktrace!CREATE OR REPLACE FUNCTION public.inner_func() RETURNS integer AS $$DECLARE stack text;BEGIN GET DIAGNOSTICS stack = PG_CONTEXT; RAISE NOTICE E'--- Call Stack ---\n%', stack; RETURN 1;END;$$ LANGUAGE plpgsql;

Page 21: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

JSONB•"Binary json"•Parsed JSON data

•Current json datatype just stores text•Basic datatyping•Key-order not preserved

Page 22: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

JSONB•"hstore-style" indexes•Nested structure support•Containment operatorsSELECT * FROM myjsontable WHERE jsondata @> '{"somekey": "somevalue", "otherkey": "othervalue"}'

Page 23: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

JSONB•Compact GIN indexes•Much faster than 9.3

•Also faster than e.g. MongoDB

Page 24: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

New features•Developer and SQL features•Infrastructure•DBA and administration•Replication and recovery

Page 25: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Dynamic background workers•9.3 got background workers•Only at postmaster startup•Can now be started dynamically

Page 26: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Dynamic shared memory•Shared memory can be allocated on request•Main segment still fixed at startup•Requested by e.g. bgworkers•Also supports lightweight message queue

Page 27: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

MVCC catalog access•SnapshotNow has been removed•All catalog access is now MVCC•Extensions relying on it will break

•This is intentional•Simpler and more robust code•Future decreased locking

Page 28: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Logical changesetextraction

•Fetch logical changes from WAL•Foundation for future replication and analysis

•E.g. the BDR project

Page 29: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Replication slots•Keep track of standbys•Automatically block WAL removal•No more need for wal_keep_segments?

Page 30: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

New features•Developer and SQL features•Infrastructure•DBA and administration•Replication and recovery

Page 31: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

MATERIALIZED VIEWS•9.3 added materialized views

•Limited usability due to locking•9.4 adds concurrent refreshREFRESH MATERIALIZED VIEW CONCURRENTLY myview•Requires UNIQUE index on view

Page 32: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Move objects intablespaces

•Move all objects in tablespaces•Or all tables, all indexes, etc.

ALTER TABLESPACE pg_default MOVE INDEXES TO ssd;

ALTER TABLESPACE ssd MOVE ALL TO pg_default;

Page 33: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

pg_prewarm•Prewarm your cache•Extension with pg_prewarm() function•Prewarm OS or Postgres caches

Page 34: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

GIN compressed postinglists

•Each entry contains "array of pointers"•Page number and offset

•Pointer size compressed from 90 bytes to 21•Store as "difference from previous"

•Up to 6x smaller indexes!

Page 35: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

GIN Index fastscan•"Smarter" scan order of GIN posting list•Start with the smallest list...

•Skip through other lists•Big improvement for "common AND rare"

Page 36: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

ConfigurationALTER SYSTEM SET work_mem='10MB';

SELECT pg_reload_conf();

Page 37: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

ALTER SYSTEM SET•Variables in separate config file•Overrides what's in postgresql.conf•Reload still required•Contexts still applies

•Restart can be tricky!

Page 38: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

New configurationparameters

•autovacuum_work_mem•Default -1 = use maintenance_work_mem•Can now be controlled independently

Page 39: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

New configurationparameters

•session_preload_libraries•Loaded at session startup•But not just from plugins directory

Page 40: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

New configurationparameters

•wal_log_hints•Log hintbit changes to WAL•Required for rewind tools when not using checksums•Hint about checksum log increments

Page 41: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

pg_stat_statements•pg_stat_statements now exposes query id•Internal hash value

•Based on parse tree•NOT stable across versions

•Or platforms•Or schema modifications (some)

Page 42: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

New features•Developer and SQL features•Infrastructure•DBA and administration•Replication and recovery

Page 43: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Time delayed standbys•Delay WAL application on slave•Replays all normal WAL, delays at commit•"fast recovery starting point"•min_recovery_apply_delay=30min

•in recovery.conf

Page 44: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Backup improvements•Relocating tablespaces in pg_basebackup•Statistics view pg_stat_archiver

Page 45: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

There's always more•Lots of smaller fixes•Performance improvements•etc, etc•Can't mention them all!

Page 46: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Tiny favorite?•Dynamic library loading logs to DEBUG1•Particularly useful for local_preload_libraries•Less logspam!

Page 47: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Just because we'rePostgres

•Date parsing now supports years >5 digits•ISO parsing already supported this!•Non-standard formats now supported as well

Page 48: PostgreSQL 9 - Magnus Hagander · 2015-12-31 · PostgreSQL 9.4 PGConf.EU 2014 Madrid, Spain Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT

Thank you!Magnus Hagander

[email protected]@magnushagander