Top Banner
PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander [email protected] PRODUCTS CONSULTING APPLICATION MANAGEMENT IT OPERATIONS SUPPORT TRAINING
49

PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander [email protected] PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

Jan 24, 2019

Download

Documents

trantu
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

PostgreSQL 9.4FOSDEM 2014

Brussels, Belgium

Magnus [email protected]

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

Page 2: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

Magnus Hagander•PostgreSQL

•Core Team member•Committer•PostgreSQL Europe

•Redpill Linpro•Infrastructure services•Principal database consultant

Page 3: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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

Page 4: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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

Page 5: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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

Page 6: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

Current status•In final Commit Fest

•Started Jan 14•Continues until the end

•Please help with review and testing!

Page 7: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

Current status•Statistics!

•1892 files changed•81018 insertions (+)•55533 deletions(-)

•Significantly lower than 9.3•So far•CF1 still in progress!

Page 8: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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

Page 10: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

Ordered-set aggregates•New class of aggregates

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

Page 13: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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

Page 14: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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

Page 17: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

UNNEST•Multi-argument UNNEST

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

Page 19: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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

Page 20: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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

Page 22: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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

Page 23: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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 24: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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 25: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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

Page 26: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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 27: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

Tablespace options oncreation

•Tablespace options can now be set on CREATE•Previously required CREATE + ALTERCREATE TABLESPACE ssd LOCATION '/ssd' WITH (random_page_cost = 1.1);

Page 28: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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 29: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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

Page 30: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

ConfigurationALTER SYSTEM SET work_mem='10MB';

SELECT pg_reload_conf();

Page 31: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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 32: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

New configurationparameters

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

Page 33: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

New configurationparameters

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

Page 34: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

New configurationparameters

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

Page 35: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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 36: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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

Page 37: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

recovery_target=immediate•New recovery target: immediate•End recovery as soon as consistent state reached

Page 38: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

Regular logging of runningxacts

•Running transactions are logged every 15 secs•Faster "consistency reached" on hot standbys•Nothing sent on completely idle

Page 39: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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 40: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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

Page 41: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

Still pending•Commitfest is in progress•Features in the queue may or may not be included

Page 42: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

Foreign tables•Triggers on foreign tables•Foreign table inheritance

Page 43: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

Performance•Reduced locks for ALTER TABLE•Reduced WAL volume for updates•Partial sort•GIN index fastscan

Page 44: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

Backups•Backup throttling•Relocating tablespaces in pg_basebackup•pg_stat_archiver

Page 45: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

UPSERT•INSERT INTO ON DUPLICATE KEY LOCK FOR UPDATE•Makes it possible to implement UPSERT

•Maybe in combination with wCTE

Page 46: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

HStore 2.0•Nested hstore•Typed (partially)•Casts <-> json•jsonb

Page 47: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

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

Page 48: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

Just because we'rePostgres

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

Page 49: PostgreSQL 9 - Hagander · PostgreSQL 9.4 FOSDEM 2014 Brussels, Belgium Magnus Hagander magnus@hagander.net PRODUCTS • CONSULTING • APPLICATION MANAGEMENT • IT OPERATIONS •

Thank you!Magnus Hagander

[email protected]@magnushagander