From dd028e904c67dae5f5d51da73628a8bd3cb1f5f1 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Tue, 16 Aug 2016 23:04:50 -0400 Subject: [PATCH] docs: my third pass over the 9.6 release notes Backpatch-through: 9.6 --- doc/src/sgml/release-9.6.sgml | 626 ++++++++++++++++++---------------- 1 file changed, 331 insertions(+), 295 deletions(-) diff --git a/doc/src/sgml/release-9.6.sgml b/doc/src/sgml/release-9.6.sgml index 9003b1f6e4..8d7356e27f 100644 --- a/doc/src/sgml/release-9.6.sgml +++ b/doc/src/sgml/release-9.6.sgml @@ -401,7 +401,7 @@ This commit is also listed under libpq and psql Allow GIN index builds to make effective use of - settings larger than 1GB (Robert Abraham, Teodor Sigaev) + settings larger than 1 GB (Robert Abraham, Teodor Sigaev) @@ -467,7 +467,217 @@ This commit is also listed under libpq and psql - General Performance + Sorting + + + + + + + Improve sorting performance by using quicksort, not replacement + selection sort, when performing external sort steps (Peter + Geoghegan) + + + + The new approach makes better use of the CPU cache + for typical cache sizes and data volumes. Where necessary, + the behavior can be adjusted via the new configuration parameter + . + + + + + + + Speed up text sorts where the same string occurs multiple times + (Peter Geoghegan) + + + + + + + Speed up sorting of uuid, bytea, and + char(n) fields by using abbreviated keys + (Peter Geoghegan) + + + + Support for abbreviated keys has also been + added to the non-default operator classes text_pattern_ops, + varchar_pattern_ops, and + bpchar_pattern_ops. Processing of ordered-set + aggregates can also now exploit abbreviated keys. + + + + + + + Speed up CREATE INDEX CONCURRENTLY by treating + TIDs as 64-bit integers during sorting (Peter + Geoghegan) + + + + + + + + + Locking + + + + + + + Reduce contention for the ProcArrayLock (Amit Kapila, + Robert Haas) + + + + + + + Improve performance by moving buffer content locks into the buffer + descriptors (Andres Freund, Simon Riggs) + + + + + + + Replace shared-buffer header spinlocks with atomic operations to + improve scalability (Alexander Korotkov, Andres Freund) + + + + + + + Use atomic operations, rather than a spinlock, to protect an + LWLock's wait queue (Andres Freund) + + + + + + + Partition the shared hash table freelist to reduce contention on + multi-CPU-socket servers (Aleksander Alekseev) + + + + + + + Reduce interlocking on standby servers during the replay of btree + index vacuuming operations (Simon Riggs) + + + + This change avoids substantial replication delays that sometimes + occurred while replaying such operations. + + + + + + + + + Optimizer Statistics + + + + + + + Improve ANALYZE's estimates for columns with many nulls + (Tomas Vondra, Alex Shulgin) + + + + Previously ANALYZE tended to underestimate the number + of non-NULL distinct values in a column with many + NULLs, and was also inaccurate in computing the + most-common values. + + + + + + + Improve planner's estimate of the number of distinct values in + a query result (Tomas Vondra) + + + + + + + Use foreign key relationships to infer selectivity for join + predicates (Tomas Vondra, David Rowley) + + + + If a table t has a foreign key restriction, say + (a,b) REFERENCES r (x,y), then a WHERE + condition such as t.a = r.x AND t.b = r.y cannot + select more than one r row per t row. + The planner formerly considered AND conditions + to be independent and would often drastically misestimate + selectivity as a result. Now it compares the WHERE + conditions to applicable foreign key constraints and produces + better estimates. + + + + + + + + + <command>VACUUM</> @@ -519,19 +729,40 @@ This commit is also listed under libpq and psql + + + + + + General Performance + + + - Reduce interlocking on standby servers during the replay of btree - index vacuuming operations (Simon Riggs) + Allow old MVCC snapshots to be invalidated after a + configurable timeout (Kevin Grittner) - This change avoids substantial replication delays that sometimes - occurre while replaying such operations. + Normally, deleted tuples cannot be physically removed by + vacuuming until the last transaction that could see + them is gone. A transaction that stays open for a long + time can thus cause considerable table bloat because + space cannot be recycled. This feature allows setting + a time-based limit, via the new configuration parameter + , on how long an + MVCC snapshot is guaranteed to be valid. After that, + dead tuples are candidates for removal. A transaction using an + outdated snapshot will get an error if it attempts to read a page + that potentially could have contained such data. @@ -576,6 +807,45 @@ This commit is also listed under libpq and psql + + Allow use of an index-only + scan on a partial index when the index's WHERE + clause references columns which are not indexed (Tomas Vondra, + Kyotaro Horiguchi) + + + + For example, CREATE INDEX tidx_partial ON t(b) WHERE a + > 0 could not previously be used for an index-only scan by a + query that only referenced a in its WHERE + clause because a is not an indexed value like + b is. + + + + + + + + Perform checkpoint writes in sorted order (Fabien Coelho, + Andres Freund) + + + + Previously, checkpoints wrote out dirty pages in whatever order + they happen to appear in shared buffers, which usually is nearly + random. That performs poorly, especially on rotating media. + This change causes checkpoint-driven writes to be done in order + by file and block number, and to be balanced across tablespaces. + + + + + - - Perform checkpoint writes in sorted order (Fabien Coelho, - Andres Freund) - - - - Previously, checkpoints wrote out dirty pages in whatever order - they happen to appear in shared buffers, which usually is nearly - random. That performs poorly, especially on rotating media. - This change causes checkpoint-driven writes to be done in order - by file and block number, and to be balanced across tablespaces. - - - - - - - Allow old MVCC snapshots to be invalidated after a - configurable timeout (Kevin Grittner) - - - - Normally, deleted tuples cannot be physically removed by - vacuuming until the last transaction that could see - them is gone. A transaction that stays open for a long - time can thus cause considerable table bloat because - space cannot be recycled. This feature allows setting - a time-based limit, via the new configuration parameter - , on how long an - MVCC snapshot is guaranteed to be valid. After that, - dead tuples are candidates for removal. A transaction using an - outdated snapshot will get an error if it attempts to read a page - that potentially could have contained such data. - - - - - - - Allow use of an index-only - scan on a partial index when the index's WHERE - clause references columns which are not indexed (Tomas Vondra, - Kyotaro Horiguchi) - - - - For example, CREATE INDEX tidx_partial ON t(b) WHERE a - > 0 could not previously be used for an index-only scan by a - query that only referenced a in its WHERE - clause because a is not an indexed value like - b is. - - - - - - - - Use foreign key relationships to infer selectivity for join - predicates (Tomas Vondra, David Rowley) - - - - If a table t has a foreign key restriction, say - (a,b) REFERENCES r (x,y), then a WHERE - condition such as t.a = r.x AND t.b = r.y cannot - select more than one r row per t row. - The planner formerly considered AND conditions - to be independent and would often drastically misestimate - selectivity as a result. Now it compares the WHERE - conditions to applicable foreign key constraints and produces - better estimates. - - - - - @@ -808,35 +987,6 @@ This commit is also listed under libpq and psql - - Improve ANALYZE's estimates for columns with many nulls - (Tomas Vondra, Alex Shulgin) - - - - Previously ANALYZE tended to underestimate the number - of non-NULL distinct values in a column with many - NULLs, and was also inaccurate in computing the - most-common values. - - - - - - - Improve planner's estimate of the number of distinct values in - a query result (Tomas Vondra) - - - - - @@ -851,69 +1001,6 @@ This commit is also listed under libpq and psql - - Improve sorting performance by using quicksort, not replacement - selection sort, when performing external sort steps (Peter - Geoghegan) - - - - The new approach makes better use of the CPU cache - for typical cache sizes and data volumes. Where necessary, - the behavior can be adjusted via the new configuration parameter - . - - - - - - - Speed up text sorts where the same string occurs multiple times - (Peter Geoghegan) - - - - - - - Speed up sorting of uuid, bytea, and - char(n) fields by using abbreviated keys - (Peter Geoghegan) - - - - Support for abbreviated keys has also been - added to the non-default operator classes text_pattern_ops, - varchar_pattern_ops, and - bpchar_pattern_ops. Processing of ordered-set - aggregates can also now exploit abbreviated keys. - - - - - - - Speed up CREATE INDEX CONCURRENTLY by treating - TIDs as 64-bit integers during sorting (Peter - Geoghegan) - - - - - @@ -924,57 +1011,6 @@ This commit is also listed under libpq and psql - - Reduce contention for the ProcArrayLock (Amit Kapila, - Robert Haas) - - - - - - - Improve performance by moving buffer content locks into the buffer - descriptors (Andres Freund, Simon Riggs) - - - - - - - Replace shared-buffer header spinlocks with atomic operations to - improve scalability (Alexander Korotkov, Andres Freund) - - - - - - - Use atomic operations, rather than a spinlock, to protect an - LWLock's wait queue (Andres Freund) - - - - - - - Partition the shared hash table freelist to reduce contention on - multi-CPU-socket servers (Aleksander Alekseev) - - - - - @@ -1017,6 +1053,21 @@ This commit is also listed under libpq and psql + + Add pg_control_system(), + pg_control_checkpoint(), + pg_control_recovery(), and + pg_control_init() functions to expose fields of + pg_control to SQL (Joe Conway, Michael + Paquier) + + + + + @@ -1082,21 +1133,6 @@ This commit is also listed under libpq and psql - - Add pg_control_system(), - pg_control_checkpoint(), - pg_control_recovery(), and - pg_control_init() functions to expose fields of - pg_control to SQL (Joe Conway, Michael - Paquier) - - - - - @@ -1219,18 +1255,18 @@ This commit is also listed under libpq and psql - Add configure option - This allows the use of systemd service units of - type notify, which greatly simplifies the management - of PostgreSQL under systemd. + This behavior is controlled by the new configuration parameter + . It can + be useful to prevent forgotten transactions from holding locks + or preventing vacuum cleanup for too long. @@ -1247,18 +1283,18 @@ This commit is also listed under libpq and psql - Allow sessions to be terminated automatically if they are in - idle-in-transaction state for too long (Vik Fearing) + Add configure option - This behavior is controlled by the new configuration parameter - . It can - be useful to prevent forgotten transactions from holding locks - or preventing vacuum cleanup for too long. + This allows the use of systemd service units of + type notify, which greatly simplifies the management + of PostgreSQL under systemd. @@ -1857,6 +1893,30 @@ XXX this is pending backpatch, may need to remove + + Improve full-text search to support searching for phrases, that + is, lexemes appearing adjacent to each other in a specific order, + or with a specified distance between them (Teodor Sigaev, Oleg + Bartunov, Dmitry Ivanov) + + + + A phrase-search query can be specified in tsquery + input using the new operators <-> and + <N>. The former means + that the lexemes before and after it must appear adjacent to + each other in that order. The latter means they must be exactly + N lexemes apart. + + + + + @@ -1917,30 +1977,6 @@ XXX this is pending backpatch, may need to remove - - Improve full-text search to support searching for phrases, that - is, lexemes appearing adjacent to each other in a specific order, - or with a specified distance between them (Teodor Sigaev, Oleg - Bartunov, Dmitry Ivanov) - - - - A phrase-search query can be specified in tsquery - input using the new operators <-> and - <N>. The former means - that the lexemes before and after it must appear adjacent to - each other in that order. The latter means they must be exactly - N lexemes apart. - - - - -