Major Features: Postgres 9.6
Transcript of Major Features: Postgres 9.6
![Page 1: Major Features: Postgres 9.6](https://reader034.fdocuments.in/reader034/viewer/2022051200/586e8c221a28abab528ba8e4/html5/thumbnails/1.jpg)
Major Features: Postgres 10
BRUCE MOMJIAN
POSTGRESQL is an open-source, full-featured relational database.This presentation gives an overview of the Postgres 10 release.Creative Commons Attribution License http://momjian.us/presentations
Last updated: January, 2018
1 / 21
![Page 2: Major Features: Postgres 9.6](https://reader034.fdocuments.in/reader034/viewer/2022051200/586e8c221a28abab528ba8e4/html5/thumbnails/2.jpg)
Postgres 10 Feature Outline
1. Logical replication
2. Partitioning syntax
3. Crash-safe, faster, and replicated hash indexes
4. ICU library
5. Quorum commit
6. Progress on parallelism
7. Multi-column statistics
8. pg_stat_activity improvements
9. SCRAM-SHA-256 authentication
10. FDW aggregate pushdown
11. More
Full item list at https://www.postgresql.org/docs/devel/static/release-10.html
2 / 21
![Page 3: Major Features: Postgres 9.6](https://reader034.fdocuments.in/reader034/viewer/2022051200/586e8c221a28abab528ba8e4/html5/thumbnails/3.jpg)
1. Logical Replication
Cluster 1, port 5432, database ’test’ Cluster 2, port 5433, database ’test’
$ psql -p 5432 -c ‘‘ALTER SYSTEM
SET wal_level = ’logical’;’’ test
$ pg_ctl -p 5432 restart
$ psql -p 5432 test $ psql -p 5433 test
CREATE TABLE test (x INT PRIMARY KEY); CREATE TABLE test (x INT PRIMARY KEY);
INSERT INTO test VALUES (1);
CREATE PUBLICATION mypub FOR TABLE test;
CREATE SUBSCRIPTION mysub CONNECTION
’dbname=test port=5432’ PUBLICATION mypub;
3 / 21
![Page 4: Major Features: Postgres 9.6](https://reader034.fdocuments.in/reader034/viewer/2022051200/586e8c221a28abab528ba8e4/html5/thumbnails/4.jpg)
Logical Replication in Action
Cluster 1 Cluster 2
SELECT * FROM test;
1
INSERT INTO test VALUES (2);
SELECT * FROM test;
1
2
4 / 21
![Page 5: Major Features: Postgres 9.6](https://reader034.fdocuments.in/reader034/viewer/2022051200/586e8c221a28abab528ba8e4/html5/thumbnails/5.jpg)
Benefits of Logical Replication
Logical replication allows:
◮ table-level granularity
◮ replication from multiple clusters to a single cluster(aggregation)
◮ replication of a single table to multiple clusters(broadcasting)
◮ replication and upgrades between major Postgres versions
◮ creation of local objects on subscribers, e.g. tables, indexes
5 / 21
![Page 6: Major Features: Postgres 9.6](https://reader034.fdocuments.in/reader034/viewer/2022051200/586e8c221a28abab528ba8e4/html5/thumbnails/6.jpg)
2. Partitioning Syntax
CREATE TABLE numbers (x INTEGER) PARTITION BY RANGE (x);CREATE TABLE negatives PARTITION OF numbers FOR VALUES FROM (UNBOUNDED) TO (0);CREATE TABLE positives PARTITION OF numbers FOR VALUES FROM (0) TO (UNBOUNDED);
6 / 21
![Page 7: Major Features: Postgres 9.6](https://reader034.fdocuments.in/reader034/viewer/2022051200/586e8c221a28abab528ba8e4/html5/thumbnails/7.jpg)
Partition Table Structure
\d+ numbersTable "public.numbers"
Column | Type | Collation | Nullable | Default | …--------+---------+-----------+----------+---------+…x | integer | | not null | |…Partition key: RANGE (x)Partitions: negatives FOR VALUES FROM (UNBOUNDED) TO (0),
positives FOR VALUES FROM (0) TO (UNBOUNDED)
\d negativesTable "public.negatives"
Column | Type | Collation | Nullable | Default--------+---------+-----------+----------+---------x | integer | | not null |
Partition of: numbers FOR VALUES FROM (UNBOUNDED) TO (0)
\d positivesTable "public.positives"
Column | Type | Collation | Nullable | Default--------+---------+-----------+----------+---------x | integer | | not null |Partition of: numbers FOR VALUES FROM (0) TO (UNBOUNDED)
7 / 21
![Page 8: Major Features: Postgres 9.6](https://reader034.fdocuments.in/reader034/viewer/2022051200/586e8c221a28abab528ba8e4/html5/thumbnails/8.jpg)
Tuple Routing
INSERT INTO numbers VALUES (-4), (-1), (7), (12);
SELECT * FROM numbers;x-----4-17
12
SELECT * FROM negatives;x-----4
-1
SELECT * FROM positives;x----712
8 / 21
![Page 9: Major Features: Postgres 9.6](https://reader034.fdocuments.in/reader034/viewer/2022051200/586e8c221a28abab528ba8e4/html5/thumbnails/9.jpg)
Partitioning Benefits and Limitations
Partitioning does:
◮ Create proper child constraints
◮ Route parent INSERTs into child tables
Partitioning does not yet:
◮ Hash partitioning
◮ Create child tables for values not already covered (it errorsinstead)
◮ Move updated rows that no longer match the partitionconstraints (it errors instead)
◮ Prune child tables faster than PG 9.6
◮ Perform executor-stage partition pruning
◮ Perform parallel partition processing
9 / 21
![Page 10: Major Features: Postgres 9.6](https://reader034.fdocuments.in/reader034/viewer/2022051200/586e8c221a28abab528ba8e4/html5/thumbnails/10.jpg)
3. Crash-Safe, Faster, and Replicated Hash Indexes
Hash indexes is now a first-class feature:
◮ Crash safe
◮ Replicated
◮ Reduced locking during bucket splits
◮ Faster lookups
◮ More even index growth
◮ Single-page pruning
10 / 21
![Page 11: Major Features: Postgres 9.6](https://reader034.fdocuments.in/reader034/viewer/2022051200/586e8c221a28abab528ba8e4/html5/thumbnails/11.jpg)
4. ICU Library
◮ Uses ICU library instead of OS-supplied internationalizationlibrary
◮ Allows detection of collation changes that can affect indexordering
◮ Enabled via configure --with-icu
11 / 21
![Page 12: Major Features: Postgres 9.6](https://reader034.fdocuments.in/reader034/viewer/2022051200/586e8c221a28abab528ba8e4/html5/thumbnails/12.jpg)
5. Quorum Commit
◮ synchronous_standby_names = FIRST 1 (s1, s2) continues whenthe first active standby replies (pre-10 behavior)
◮ Now synchronous_standby_names = ANY 1 (s1, s2) continueswhen the any server from the list replies
◮ synchronous_standby_names = ANY 2 (s1, s2, s3) is alsopossible
◮ Called quorum commit
12 / 21
![Page 13: Major Features: Postgres 9.6](https://reader034.fdocuments.in/reader034/viewer/2022051200/586e8c221a28abab528ba8e4/html5/thumbnails/13.jpg)
6. Progress on Parallelism
Parallelism is now supported in:
◮ Btree index scans
◮ Bitmap heap scans
◮ Merge joins
◮ Procedural languages
13 / 21
![Page 14: Major Features: Postgres 9.6](https://reader034.fdocuments.in/reader034/viewer/2022051200/586e8c221a28abab528ba8e4/html5/thumbnails/14.jpg)
7. Multi-Column Statistics
◮ Previously, WHERE a=1 AND b=1 multiplied the probabilities ofthe two columns, assuming they were unrelated
◮ Now CREATE STATISTICS … WITH (dependencies) recordsmulti-column correlation
◮ The correlation is used when combining single-columnprobabilities
14 / 21
![Page 15: Major Features: Postgres 9.6](https://reader034.fdocuments.in/reader034/viewer/2022051200/586e8c221a28abab528ba8e4/html5/thumbnails/15.jpg)
8. pg_stat_activity Improvements
◮ Additional wait tracking
◮ client reads, writes◮ server reads, writes, fsyncs◮ synchronous replication
◮ Additional process display
◮ auxiliary processes◮ worker processes◮ WAL senders
15 / 21
![Page 16: Major Features: Postgres 9.6](https://reader034.fdocuments.in/reader034/viewer/2022051200/586e8c221a28abab528ba8e4/html5/thumbnails/16.jpg)
pg_stat_activity Example
SELECT wait_event_type, wait_event, count(*)FROM pg_stat_activityWHERE backend_type = ’client backend’GROUP BY wait_event_type, wait_event
ORDER BY 1, 2;
wait_event_type | wait_event | count-----------------+---------------+-------Client | ClientRead | 2IO | DataFileWrite | 1Lock | transactionid | 3LWLock | WALWriteLock | 19
| | 8
16 / 21
![Page 17: Major Features: Postgres 9.6](https://reader034.fdocuments.in/reader034/viewer/2022051200/586e8c221a28abab528ba8e4/html5/thumbnails/17.jpg)
9. SCRAM-SHA-256 Authentication
SCRAM-SHA-256 provides a more secure passwordauthentication method than MD5:
◮ Make packet replay more difficult (MD5 has a 50%probability of repeating after 64k connections)
◮ Make stolen hashed password reuse more difficult
◮ Make brute-force attacks more difficult
17 / 21
![Page 18: Major Features: Postgres 9.6](https://reader034.fdocuments.in/reader034/viewer/2022051200/586e8c221a28abab528ba8e4/html5/thumbnails/18.jpg)
10. FDW Aggregate Pushdown
������������������������������������������������������������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������������������������������������������������������
������������������������������������������������������������������������������������������������������������������������������������������
SQL Queries
SQL Queries with:
PG FDW
Foreign Server Foreign Server Foreign Server
aggregates (10)joins (9.6)
sorts (9.6)
18 / 21
![Page 19: Major Features: Postgres 9.6](https://reader034.fdocuments.in/reader034/viewer/2022051200/586e8c221a28abab528ba8e4/html5/thumbnails/19.jpg)
11. More
◮ Restrictive row-level security policies, provides AND/requiredpolicies
◮ AFTER trigger transition tables
◮ Full text search support for JSON and JSONB
◮ Default permissions on schemas
◮ Multiple libpq-specified host names, plus write-mode filter
19 / 21
![Page 20: Major Features: Postgres 9.6](https://reader034.fdocuments.in/reader034/viewer/2022051200/586e8c221a28abab528ba8e4/html5/thumbnails/20.jpg)
Pending Postgres 11 Features
◮ Procedures with transaction control
◮ JIT compilation of the executor
◮ Parallel query improvements, e.g. parallel CREATE INDEX
◮ Partitioning
◮ hash partitioning◮ partition-wise join, benefits joins between
identically-partitioned tables◮ executor-stage partitioning, benefits join pruning and
prepared queries◮ partition key updates move affected rows to their new
partition◮ default partitioning are committed◮ foreign keys pointing to a partitioned table
Current as of 2018-01-17
20 / 21
![Page 21: Major Features: Postgres 9.6](https://reader034.fdocuments.in/reader034/viewer/2022051200/586e8c221a28abab528ba8e4/html5/thumbnails/21.jpg)
Conclusion
http://momjian.us/presentations https://www.flickr.com/photos/thevlue/
21 / 21