O documento resume as principais novidades da versão 10 do PostgreSQL, incluindo o fim do suporte à versão 9.2, melhorias na autenticação, réplica lógica, particionamento declarativo, queries paralelas e índices hash duráveis.
7. Logical Replication
● Replicação de uma ou mais tabelas;
● Replicação de várias instâncias para uma única instância;
● Replicação de uma única tabela para várias instâncias;
● Replicação entre diferentes versões do PostgreSQL;
● Criação de objetos locais nas tabelas replicadas, EX: índices;
● Na inicialização de um nó você pode optar por fazer a cópia
inicial de todos os dados ou não
8. Quorum Commit
Até a 9.6:
synchronous_standby_names = '2 (s1, s2, s3)'
Apartir da 10:
synchronous_standby_names = 'ANY|FIRST 2 (s1, s2,
s3)'
9. Temporary Replication Slots
• Agora operações de manutenção (como backup) podem
passar usar slots temporários.
• pg_basebackup faz automaticamente quando não
informado o slot
11. Declarative Partitioning
● Aguardada por anos
● Re-utiliza infraestrutura de herança
● Você cria a tabela pai declarando os campos da partição
● Você cria as tabelas filhas informando o pai e declarando o
“range”
● Você pode “desanexar” tabelas filhas para alterar o range e
“re-anexá-las”
● Tabela particionada não pode conter constraints PK, UK, FK ou
EXCLUDE, mas as filhas sim
12. Declarative Partitioning
● Criando
○ BEGIN;
○ CREATE TABLE pai PARTITION BY RANGE(campos);
○ CREATE TABLE filha1 PARTITION OF pai FOR VALUES FROM … TO …
○ CREATE TABLE filha2 PARTITION OF pai FOR VALUES FROM … TO …
○ END;
● Modificando
○ BEGIN;
○ ALTER TABLE filha1 DETACH PARTITION pai;
○ ALTER TABLE filha1 ATTACH PARTITION pai FOR VALUES …
○ COMMIT;
14. Improved Parallel Query
• Na 9.6 havia apenas HashJoin e NestedLoop
• Parallel Merge Join
• Btree index scans
• Bitmap heap scans
• Merge joins
• Procedural languages
• UNION ALL
16. Durable Hash Indexes
● Índices hash são utilizados para operações de igualdade
simples;
● Agora são “crash-safe” e replicam para slaves
● Em determinados cenários ultrapassam o desempenho dos
índices b-tree
17. FDW Push-down
● Em resumo agora um “SELECT count(*) FROM
tabela_estrangeira” processa o “count” no servidor remoto;
● Inclui operações de JOINs, SORT e Agregação;
18. pg_stat_activity
• Novos eventos de espera:
• Leituras e gravações no cliente;
• Leituras e gravações no server, fsyncs;
• Replicação síncrona;
• Exibe processos adicionais:
• Processos auxiliares;
• Worker processes;
• WAL senders.
19. E mais ...
• Gatilhos “After” para todo o
conjunto de registros
alterados pelo comando;
• Append e UNION ALL;
• Generalização dos nós
“workers” e novas melhorias
• XMLTABLE
• Melhoria desempenho
SUM()
20. Patches criados por brasileiros
• Redução de locks durante a
alteração de parâmetros de
tabelas
(Simon Riggs, Fabrízio
Mello)
• Revisão de patches (Euler
Taveira)
• Cria permissões padrão em
esquemas (Matheus
Oliveira)
Isto é feito utilizando o
comando ALTER DEFAULT
PRIVILEGES.
21. Links
• Release notes da versão 10:
https://www.postgresql.org/docs/10/static/release-10.html
• Bruce Momjian "Major Features: Postgres 10":
https://momjian.us/main/writings/pgsql/features.pdf
• WIKI Development information:
https://wiki.postgresql.org/wiki/Development_information
• Blog do Depez: https://www.depesz.com
• Blog do Michael Parquier: http://paquier.xyz
• PGConf.Brasil: http://www.pgconf.com.br
• PGBR 2017: https://pgbr.postgresql.org.br/2017