This confuses me—I thought a sequential scan was slow because it was limited by disk I/O; why is it faster to hawe multiple threads waiting around for the same disk?
(I guessed maybe that it was running different sequential scans in the same query in parallel, but no, pages 3 and 4 of the PDF show parallel workers being used for a single scan of a single table)
Not necessarily. Suppose you have a fairly big table that fits in the shared buffer cache and you run a query with a predicate that returns only a handful of rows. Then you would be better off scanning parts of it in parallel and then combining the results.
RAID?
https://wiki.postgresql.org/images/6/64/Fosdem20150130Postgr...
Is anybody aware somebody working on that for PG?
> Is anybody aware somebody working on that for PG?
Not that I am aware of.
Postgres is a fantastic database, and with zero licensing headaches, but when people ask why companies are still paying for commercial DBMS engines, some features that they have which Postgres does not have, and which I often miss are :
1)"temporal" / versioned tables / time consistent views of data . Oracle has a lot of "flashback" related options at the DB and table levels which can be really useful.
2) Easy, built-in partitioning for large datasets. (This is being worked on and will probably start to be released in Postgres 10).
3) Better backup options for large databases, such as incremental/differential backups.
In the Yandex migration from Oracle to Postgres I recall that this, ie incremental backups, is one of the things they mentioned it would be great to have.
4) Along with backups, the built-in recovery options in Postgres are fairly basic compared to what you can do regarding single table recovery, corruption repair etc that other DBs have.
In my experience in 90% of cases application code migration to a new db engine is the real road block.
I've seem many cases where even migration to a new Oracle version is a huge problem because of required app code review and full user acceptance tests. So companies pay licence fees for old unsupported versions. What is even more absurd.
And frankly speaking in many cases of simple apps even SQLite has all necessary features in replace Oracle.
Oracle doesn't have transactional DDL. It means if you drop a column or create a table, it commits your transaction automatically.
This is huge, because with PostgreSQL you can import a full database in a single transaction, and roll it back if anything goes wrong. You can upgrade a full application and roll back if anything goes wrong. No more partial-state headaches.
Therefore I'm not sure what "versioned tables" mean. Have you tried PostgreSQL's temporal tables extension, which seems to do what you mean?
What's wrong with WAL backup? Postgres can run your script and pass it path to newly created WAL chunk, that you can ship off anywhere.
Or run `pg_start_backup`, rsync data directory, `pg_stop_backup`.
Of course, it would be nice if Postgres natively supported the full SQL:2011 standard...