Novidades do
PostgreSQL 10
Programa de Índio
Eventos
Mudanças e
compatibilidades
Novidades do PostgreSQL 10
•Fim do formato de numeração X.Y.Z
•10.0, 10.1, 10.2 e 10.x
•Fim do suporte da versão 9.2 ~Set/2017
•s/pg_xlog/pg_wal/
•s/pg_clog/pg_xact/
Mudanças
Autenticação
• Suporte a SCRAM a fim de descontinuar o md5;
• Depende de nova versão da libpq;
• Remoção do suporte a senhas não criptografadas
Replicação
Novidades do PostgreSQL 10
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
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)'
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
Particionamento
Declarativo
Novidades do PostgreSQL 10
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
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;
Parallel Query
Novidades do PostgreSQL 10
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
Outros
Novidades do PostgreSQL 10
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
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;
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.
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()
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.
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
contato@timbira.com.br

Novidades do PostgreSQL 10

  • 1.
  • 2.
  • 3.
  • 4.
    •Fim do formatode numeração X.Y.Z •10.0, 10.1, 10.2 e 10.x •Fim do suporte da versão 9.2 ~Set/2017 •s/pg_xlog/pg_wal/ •s/pg_clog/pg_xact/ Mudanças
  • 5.
    Autenticação • Suporte aSCRAM a fim de descontinuar o md5; • Depende de nova versão da libpq; • Remoção do suporte a senhas não criptografadas
  • 6.
  • 7.
    Logical Replication ● Replicaçãode 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é a9.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
  • 10.
  • 11.
    Declarative Partitioning ● Aguardadapor 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;
  • 13.
  • 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
  • 15.
  • 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 ● Emresumo 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 eventosde 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 porbrasileiros • 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 notesda 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
  • 22.