For being "boring and stable" technology, Postgres 16 includes 200 features, which is on par with each of prior years releases. If you're looking for the full set of features it's available here - https://www.postgresql.org/docs/16/release-16.html.
Personal favorites on the list include:
- load_balance_hosts, which is an improvement to libpq so you can load balance across multiple Postgres instances.
- Logical replication on standbys
- pg_stat_io which is a new view that shows IO details.
You can use https://github.com/twosigma/postgresql-contrib/blob/master/m... and write triggers to update your views or mark them as needing asynchronous refreshes. It's not as automatic as what you'd like, but it's a lot better than having to keep waiting.
> - Subqueries in the FROM clause can omit aliases
This is great. It never made any sense to me that this was required. For people who are unaware, say you want to understand a table a natural way of doing it might be
select *
from the_table
order by some_metric desc
limit 10
so you'd think you can do the same for queries like
select *
from (
select blah blah blah the rest of the query
) a
order by some_metric desc
limit 10
you need to put the alias 'a' to placate existing postgres even though it's never actually used, which never made any sense to me.
"parallel execution of the string_agg and array_agg aggregate functions" caught my eye - that feels like one of those minor improvements that might enable some pretty interesting new applications.
Have to say, I find the SQL/JSON support in Postgres (jsonb) is probably the single biggest killer feature IMO. I can't believe MS (still) doesn't have an implementation (their SQL to JSON functions suck exponentially by comparison).
Nice to see the continued advancement and progression all around.
There is pg_upgrade and logical replication. I have used both and they both work excellently. Logical replication can be a bit of a hassle to set up though, especially if the database is huge.
AWS has gotten much better in recent years. Pg15 is available on Aurora as of last month. That's about 6-7 months after it was released, a significant improvement over years past.
Bunch of interesting loosenings ups on logical replication. Allowing standbys to also have subscribers; great for fan out! Bunch of perf improvements (honestly a bunch of it is removing rather onerous limitations I didn't know about!) At the end there seems to be a developer flag for allowing seeming bidirectional replication too.
I am personally very excited to see that work on direct IO has started. It is a huge undertaking so I do not expect any production ready thing any time soon but nice to see that some code landed.
Yeah- we've been working on that for quite a while, and it'll take a few more years to finish it. I hope we can get some important parts into 17 though.
FWIW, there have been smaller prerequisites merged into 15 already, and 16 has a number of improvements that are part of that work. E.g. the more scalable relation extension (making COPY scale much better), and the related buffer mapping changes, come from the AIO effort.
Personally I think the feature is using asynchronous IO and direct IO support is part of that :)
Whenever you do a one day full of updates and fix small issues but also gain new features and performance, just remember there is someone who uses some super old db no one wanna touch it again and the migration of that old thing will take weeks!
craigkerstiens|2 years ago
Personal favorites on the list include:
- load_balance_hosts, which is an improvement to libpq so you can load balance across multiple Postgres instances.
- Logical replication on standbys
- pg_stat_io which is a new view that shows IO details.
Fgehono|2 years ago
Is this a replacement for PG bouncer and similar?
garyclarke27|2 years ago
Still waiting for automatic incremental updates for materialized views - been worked on for several years but still not released!
https://wiki.postgresql.org/wiki/Incremental_View_Maintenanc...
https://github.com/sraoss/pg_ivm
tensor|2 years ago
sophacles|2 years ago
On the other, it's pretty confidence-inspiring that they don't put stuff in until they're sure it's ready.
pawelduda|2 years ago
cryptonector|2 years ago
pritambaral|2 years ago
- pg_hba.conf and pg_ident.conf can include other files
- Logical replication apply can use non-PK btree indexes
- Integer literals in non-decimal bases
- Underscores in numeric literals
- Subqueries in the FROM clause can omit aliases
- Addition and subtraction of timestamptz values
- pg_upgrade can override new cluster's locale and encoding
seanhunter|2 years ago
This is great. It never made any sense to me that this was required. For people who are unaware, say you want to understand a table a natural way of doing it might be
so you'd think you can do the same for queries like you need to put the alias 'a' to placate existing postgres even though it's never actually used, which never made any sense to me.MuffinFlavored|2 years ago
https://commitfest.postgresql.org/19/1741/ (index skip scan/loose index scans) would be very welcomed... I think. Not sure how many people run into it in the wild.
It says "target version: 16" but "returned with feedback" and hasn't been bumped in 14 months. :( First opened in 2018.
https://wiki.postgresql.org/wiki/Loose_indexscan
simonw|2 years ago
array_agg is particularly interesting, because it lets you implement patterns like this: https://til.simonwillison.net/sqlite/related-rows-single-que...
itsthecourier|2 years ago
Load Balancing from client libs
Support for CPU acceleration using SIMD for both x86 and ARM architectures, including optimizations for processing ASCII and JSON strings
new pg_stat_io view that provides information on I/O statistics
tracker1|2 years ago
Nice to see the continued advancement and progression all around.
cjblomqvist|2 years ago
But yeah, obviously they're behind in that area!
sureglymop|2 years ago
h1fra|2 years ago
tuetuopay|2 years ago
Given the current release pace, I'd love to have another upgrade path than `pg_dump | psql`. That would remove a great deal of friction in prod.
hans_castorp|2 years ago
pg_upgrade
jeltz|2 years ago
jasfi|2 years ago
LunaSea|2 years ago
phamilton|2 years ago
rektide|2 years ago
klysm|2 years ago
jeltz|2 years ago
anarazel|2 years ago
FWIW, there have been smaller prerequisites merged into 15 already, and 16 has a number of improvements that are part of that work. E.g. the more scalable relation extension (making COPY scale much better), and the related buffer mapping changes, come from the AIO effort.
Personally I think the feature is using asynchronous IO and direct IO support is part of that :)
darksaints|2 years ago
dimmke|2 years ago
[deleted]
justinclift|2 years ago
djbusby|2 years ago
Fgehono|2 years ago