Update PostgreSQL 17 Beta 1 release with feedback
authorJonathan S. Katz <jonathan.katz@excoventures.com>
Sun, 19 May 2024 21:33:16 +0000 (17:33 -0400)
committerJonathan S. Katz <jonathan.katz@excoventures.com>
Sun, 19 May 2024 21:33:16 +0000 (17:33 -0400)
Reviewed-by: David Rowley <dgrowleyml@gmail.com>
Reviewed-by: Thom Brown <thom@linux.com>
Reviewed-by: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Reviewed-by: Jelte Fennema-Nio <postgres@jeltef.nl>
Reviewed-by: Joe Conway <mail@joeconway.com>
releases/17/17beta1.md

index 63c7238ad5c363f21636f6e8f03a6a229e6f3817..42ca225b02bbfbf07b1df2f49216f309da30bd1f 100644 (file)
@@ -4,8 +4,8 @@ This release contains previews of all features that will be available when
 PostgreSQL 17 is made generally available, though some details of the release
 can change during the beta period.
 
-You can find information about all of the features and changes found in
-PostgreSQL 17 in the [release notes](https://www.postgresql.org/docs/17/release-17.html):
+You can find information about all of the PostgreSQL 17 features and changes in
+the [release notes](https://www.postgresql.org/docs/17/release-17.html):
 
   [https://www.postgresql.org/docs/17/release-17.html](https://www.postgresql.org/docs/17/release-17.html)
 
@@ -30,18 +30,20 @@ PostgreSQL 17 Feature Highlights
 
 PostgreSQL 17 builds on recent releases and continues to improve performance across the entire system. [Vacuum](https://www.postgresql.org/docs/17/routine-vacuuming.html), the PostgreSQL process responsible for reclaiming storage, has a new internal data structure that reduces memory usage and has shown up to a 6x improvement in overall time to complete its work. Additionally, the vacuum process no longer has a `1GB` limit on the memory it can use (controlled by [`maintenance_work_mem`](https://www.postgresql.org/docs/17/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM)), giving you the option to apply more resources to vacuuming.
 
-PostgreSQL 17 can now use both planner statistics and the sort order of [common table expressions](https://www.postgresql.org/docs/17/queries-with.html) (aka [`WITH` queries](https://www.postgresql.org/docs/17/queries-with.html)) to further optimize these queries and help them to execute more quickly. Additionally, this release significantly improves execution time of queries that use the `IN` clause with a [B-tree index](https://www.postgresql.org/docs/17/indexes-types.html#INDEXES-TYPES-BTREE). Starting with this release, PostgreSQL can remove redundant `IS NOT NULL` statements from execution on columns that have a `NOT NULL` constraint, and no longer needs to do work on queries that contain an `IS NULL` clause on an `IS NOT NULL` column. Now as of PostgreSQL 17, you can now use parallel index builds for [BRIN](https://www.postgresql.org/docs/17/brin.html) indexes.
+This release introduces adds an interface to stream I/O, and can show performance improvements when performing sequential scans and running [`ANALYZE`](https://www.postgresql.org/docs/17/sql-analyze.html).
+
+PostgreSQL 17 can now use both planner statistics and the sort order of [common table expressions](https://www.postgresql.org/docs/17/queries-with.html) (aka [`WITH` queries](https://www.postgresql.org/docs/17/queries-with.html)) to further optimize these queries and help them to execute more quickly. Additionally, this release significantly improves execution time of queries that use the `IN` clause with a [B-tree index](https://www.postgresql.org/docs/17/indexes-types.html#INDEXES-TYPES-BTREE). Starting with this release, PostgreSQL can remove redundant `IS NOT NULL` statements from execution on columns that have a `NOT NULL` constraint, and no longer needs to do work on queries that contain an `IS NULL` clause on an `IS NOT NULL` column. Now as of PostgreSQL 17, you can use parallel index builds for [BRIN](https://www.postgresql.org/docs/17/brin.html) indexes.
 
 Workloads with highly concurrent changes can benefit from PostgreSQL 17 with an improvement to how [write-ahead log](https://www.postgresql.org/docs/17/wal-intro.html) ([WAL](https://www.postgresql.org/docs/17/wal-intro.html)) locks are managed, with some tests showing up to a 2x performance improvement. 
 
-Finally, PostgreSQL 17 adds more explicitly SIMD instructions, including AVX-512 support for the [`bit_count](https://www.postgresql.org/docs/17/functions-bitstring.html) function.
+Finally, PostgreSQL 17 adds more explicit SIMD instructions, including AVX-512 support for the [`bit_count](https://www.postgresql.org/docs/17/functions-bitstring.html) function.
 
 
 ### Partitioned and distributed workloads enhancements
 
 PostgreSQL 17 brings more flexibility to partition management, adding the ability to both split and merge partitions, and adds support to partitioned tables for identity columns and exclusion constraints. Additionally, the [PostgreSQL foreign data wrapper](https://www.postgresql.org/docs/17/postgres-fdw.html) ([`postgres_fdw`](https://www.postgresql.org/docs/17/postgres-fdw.html)) can realize performance benefits from queries with `EXISTS` and `IN` subqueries as these can now be pushed down to the remote server.
 
-PostgreSQL 17 adds new capabilities to logical replication that make it simpler to use it in high availability workloads and on upgrades. Starting with PostgreSQL 17, you no longer need to drop [logical replication slots](https://www.postgresql.org/docs/17/logical-replication-subscription.html#LOGICAL-REPLICATION-SUBSCRIPTION-SLOT) when using [`pg_upgrade`](https://www.postgresql.org/docs/17/pgupgrade.html), allowing you to avoid resynchronizing data after an upgrade. Additionally, this release introduces failover control for logical replication, providing more control for managing PostgreSQL databases in high availability environments. PostgreSQL 17 also lets logical replication subscribers use `hash` indexes for lookups, and introduces the `pg_createsubscriber` command-line tool for adding logical replication on a replica using physical replication.
+PostgreSQL 17 adds new capabilities to logical replication that make it simpler to use it in high availability workloads and on upgrades. Starting with upgrades from PostgreSQL 17 to newer versions, you no longer need to drop [logical replication slots](https://www.postgresql.org/docs/17/logical-replication-subscription.html#LOGICAL-REPLICATION-SUBSCRIPTION-SLOT) when using [`pg_upgrade`](https://www.postgresql.org/docs/17/pgupgrade.html), allowing you to avoid resynchronizing data after an upgrade. Additionally, this release introduces failover control for logical replication, providing more control for managing PostgreSQL databases in high availability environments. PostgreSQL 17 also lets logical replication subscribers use `hash` indexes for lookups, and introduces the `pg_createsubscriber` command-line tool for adding logical replication on a replica using physical replication.
 
 ### Developer Experience
 
@@ -49,9 +51,9 @@ PostgreSQL 17 continues to build on the SQL/JSON standard, adding support for th
 
 The [`MERGE`](https://www.postgresql.org/docs/17/sql-merge.html) command now supports the `RETURNING` clause, letting you further work with modified rows. You can also see what part of the `MERGE` command modified the row using the new `merge_action` function. PostgreSQL 17 also lets you update views using the `MERGE` command, and adds a `WHEN NOT MATCHED BY SOURCE` clause to let you provide behavior if a source row doesn't meet the conditions.
 
-[`COPY`](https://www.postgresql.org/docs/17/sql-copy.html), used to efficiently bulk load data into PostgreSQL, has improved performance in PostgreSQL 17 when the source encoding matches the destination encoding. Additionally `COPY` has a new option, `IGNORE_ERROR`, that lets the copy proceed even if the there is an error inserting a row.
+[`COPY`](https://www.postgresql.org/docs/17/sql-copy.html) is used to efficiently bulk load data into PostgreSQL, and with PostgreSQL 17 shows a 2x performance improvement when loading large rows. Additionally, `COPY` has improved performance when the source encoding matches the destination encoding, and has a new option, `ON_ERROR`, that lets the copy proceed even if there is an error inserting a row.
 
-PostgreSQL 17 includes a built-in collation provider that provides similar semantics to the `C` collation provided by libc. This new collation is guaranteed to be immutable, ensuring that the return values of your sorts won't change regardless of what system your PostgreSQL installation runs on.
+PostgreSQL 17 includes a built-in collation provider that provides similar sorting semantics to the `C` collation except with `UTF-8` encoding rather than `SQL_ASCII`. This new collation is guaranteed to be immutable, ensuring that the return values of your sorts won't change regardless of what system your PostgreSQL installation runs on.
 
 ### Security Features
 
@@ -69,7 +71,7 @@ PostgreSQL 17 introduces the ability to perform incremental backups using [`pg_b
 
 The [`EXPLAIN`](https://www.postgresql.org/docs/17/sql-explain.html) command, which provides information about query plans and execution, adds two new options: `SERIALIZE`, which shows the amount of time it takes to convert data for network transmission, and `MEMORY`, which reports optimizer memory usage. Additionally, `EXPLAIN` can now show how much time is spent for I/O block reads and writes.
 
-PostgreSQL 17 normalizes the parameters for `CALL` in [`pg_stat_statements`](https://www.postgresql.org/docs/17/pgstatstatements.html), reducing the number of entries for frequently called stored procedures. Additionally, [`VACUUM` progress reporting](https://www.postgresql.org/docs/devel/progress-reporting.html#VACUUM-PROGRESS-REPORTING) now shows the progress of vacuuming indexes. PostgreSQL 17 also introduces a new view, [`pg_wait_events`](https://www.postgresql.org/docs/17/view-pg-wait-events.html), which provides descriptions about wait events and can be combined with `pg_stat_activity` to give more insight into an operation. Additionally, some information in the [`pg_stat_bgwriter`](https://www.postgresql.org/docs/17/monitoring-stats.html#MONITORING-PG-STAT-BGWRITER-VIEW) view is now split out into the new [`pg_stat_checkpointer`](https://www.postgresql.org/docs/17/monitoring-stats.html#MONITORING-PG-STAT-CHECKPOINTER-VIEW) view.
+PostgreSQL 17 normalizes the parameters for `CALL` in [`pg_stat_statements`](https://www.postgresql.org/docs/17/pgstatstatements.html), reducing the number of entries for frequently called stored procedures. Additionally, [`VACUUM` progress reporting](https://www.postgresql.org/docs/devel/progress-reporting.html#VACUUM-PROGRESS-REPORTING) now shows the progress of vacuuming indexes. PostgreSQL 17 also introduces a new view, [`pg_wait_events`](https://www.postgresql.org/docs/17/view-pg-wait-events.html), which provides descriptions about wait events and can be combined with `pg_stat_activity` to give more insight into why a session is blocked. Additionally, some information in the [`pg_stat_bgwriter`](https://www.postgresql.org/docs/17/monitoring-stats.html#MONITORING-PG-STAT-BGWRITER-VIEW) view is now split out into the new [`pg_stat_checkpointer`](https://www.postgresql.org/docs/17/monitoring-stats.html#MONITORING-PG-STAT-CHECKPOINTER-VIEW) view.
 
 Additional Features
 -------------------