Você está na página 1de 23

PostgreSQL 10

Preparado por:

Gerncia de Suporte a Banco de Dados GSBD

Braslia, outubro de 2017

SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br


PostgreSQL 10

HISTRICO DO DOCUMENTO

Verso Data de reviso Descrio da reviso Responsvel


1.0 16/10/2017 Criao do documento GSDB

SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 2 de 23
PostgreSQL 10

NDICE

1. INFORMAES DESTE DOCUMENTO ............................................................ 5


1.1. Originador ....................................................................................................................... 5
1.2. Propriedade .................................................................................................................... 5
1.3. Autoria ............................................................................................................................ 5
1.4. Confidencialidade ............................................................................................................ 5
1.5. Cpias adicionais ............................................................................................................ 5
2. INFORMAES DA ATIVIDADE ....................................................................... 5
2.1. Objetivos ......................................................................................................................... 5
3. POSTGRESQL 10 ............................................................................................... 6
3.1. Novos Recursos .............................................................................................................. 6
3.2. Migrao para a verso 10 .............................................................................................. 6
3.3. Alteraes na verso ...................................................................................................... 9
3.3.1.1 Consultas Paralelas ........................................................................................................ 9
3.3.1.2. ndices ......................................................................................................................... 10
3.3.1.3. Bloqueios ..................................................................................................................... 10
3.3.1.4. Otimizador ................................................................................................................... 11
3.3.1.5. Desempenho Geral ...................................................................................................... 11
3.3.1.6. Monitoramento ............................................................................................................. 11
3.3.1.6.1. Registro no Log ........................................................................................................ 12
3.3.1.6.2. pg_stat_activity ......................................................................................................... 12
3.3.1.7. Autenticao ................................................................................................................ 13
3.3.1.8 Configurao do Servidor ............................................................................................. 13
3.3.1.9. Confiabilidade .............................................................................................................. 13
3.3.1.9.1. Write-Ahead Log ....................................................................................................... 14
3.3.2. REPLICAO E RECUPERAO ............................................................. 14
3.3.3. CONSULTAS ................................................................................................ 15
3.3.4. COMANDOS UTILITRIOS ......................................................................... 15
3.3.5. TIPOS DE DADOS........................................................................................ 16
3.3.6. FUNES ..................................................................................................... 16
3.3.7. LINGUAGENS SERVER-SIDE..................................................................... 17
3.3.7.1. PL/Tcl .......................................................................................................................... 17
3.3.8 APLICAES CLIENTE ............................................................................... 17
3.3.8.1. psql .............................................................................................................................. 17
3.3.8.2. pgbench ....................................................................................................................... 18
SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 3 de 23
PostgreSQL 10

3.3.9. APLICAES SERVIDOR ........................................................................... 18


3.3.9.1. pg_dump, pg_dumpall, pg_restore............................................................................... 18
3.3.9.2 pg_basebackup ............................................................................................................ 19
3.3.9.3 pg_ctl ............................................................................................................................ 19
3.3.10 Mdulos Adicionais ........................................................................................................ 20
3.4. MATRIZ DE FUNCIONALIDADES ................................................................. 21
4. POLTICA DE LIBERAO DE VERSES POSTGRESQL .......................... 22
5. REFERNCIAS .................................................................................................. 23

SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 4 de 23
PostgreSQL 10

1. INFORMAES DESTE DOCUMENTO

1.1. Originador
Tecnisys Informtica e Assessoria Empresarial Ltda / Gerncia de Suporte a Banco de Dados /
Equipe de Consultores do PostgreSQL.

1.2. Propriedade
Tecnisys Informtica e Assessoria Empresarial Ltda

1.3. Autoria
As informaes aqui contidas so de propriedade exclusiva da empresa originadora e no podem
ser compartilhadas, usadas, copiadas, reproduzidas, distribudas, exibidas ou divulgadas para outras partes
que no seus proprietrios ou expressamente autorizado por escrito para terceiros.
Cpias deste documento esto restritas s seguintes entidades:
Tecnisys Informtica e Assessoria Empresarial Ltda.

1.4. Confidencialidade
Todas as informaes neste documento so confidenciais.

1.5. Cpias adicionais


Cpias adicionais deste relatrio podem ser obtidas por meio de solicitao formal Gerencia de
Suporte a Banco de Dados GSDB Tecnisys.

2. INFORMAES DA ATIVIDADE

2.1. Objetivos
Avaliar as principais alteraes e benefcios com a nova verso do PostgreSQL, verso 10.

SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 5 de 23
PostgreSQL 10

3. POSTGRESQL 10

3.1. Novos Recursos


A nova release do PostgreSQL foi lanada no dia 05/10/2017 e traz melhorias significativas no
SGBD. As principais melhorias no PostgreSQL 10 incluem:

Replicao lgica usando publish/subscbribe;


Particionamento declarativo de tabela;
Paralelismo de consulta aprimorado;
Melhorias significativas no desempenho geral;
Autenticao de senha mais slida com base no SCRAM-SHA-256;
Monitoramento e controle aprimorado.

3.2. Migrao para a verso 10


A nova verso possui uma srie de alteraes que podem afetar a compatibilidade com verses
anteriores. Os testes de migrao devem ser executados em ambiente controlado de testes refletindo com
exatido o ambiente de produo. As incompatibilidades mapeadas so:
Os ndices do tipo Hash devem ser reconstrudos aps o pg_upgrade-ing de qualquer verso:
As melhorias no ndice do tipo Hash necessitaram deste requisito. O pg_upgrade criar um
script para auxiliar, caso no tenha o conhecimento nos comandos de reindexao.
Mudana do nome do diretrio do log transacional pg_xlog para pg_wal e do diretrio de
status da transao pg_clog para pg_xact:
Alguns usurios, ocasionalmente, removiam os diretrios, causando perda de dados
irrecupervel. Essas alteraes de nome destinam-se a desencorajar tais erros no futuro.

Mudana dos nomes das funes, ferramentas e opes SQL que fazem referncia "xlog"
para "wal":
Por exemplo, pg_switch_xlog() torna-se pg_switch_wal(), pg_receivexlog() se torna
pg_receivewal() e --xlogdir torna-se --waldir. Isto para a consistncia com a mudana do
nome do diretrio pg_xlog; em geral, a terminologia "xlog" no dever mais ser usada.

Mudana dos nomes das funes e views relacionadas ao WAL para usar lsn em vez de
location:
Havia uma confuso no uso das terminologias.

SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 6 de 23
PostgreSQL 10

Alterao da implementao das funes que retornam conjuntos (RETURNS SETOF) que
aparecem na lista SELECT de uma consulta:
As funes com retorno SETOF so agora avaliadas antes da avaliao de expresses
escalares na lista SELECT, como se tivessem sido colocadas em um item de clusula
LATERAL FROM. Isso permite uma semntica mais transparente para casos em que
vrias funes de retorno de conjunto esto presentes. Se eles retornarem diferentes
nmeros de linhas, os resultados mais curtos so estendidos para corresponder ao resultado
mais longo, adicionando nulos. Anteriormente, os resultados eram roteados at que todos
terminassem ao mesmo tempo, produzindo um nmero de linhas iguais , pelo menos, ao
mltiplo comum dos perodos das funes. Alm disso, as funes de retorno SETOF esto
desativadas nas construes com CASE e COALESCE.
Quando ALTER TABLE ... ADD PRIMARY KEY marca as colunas como NOT NULL,
essa alterao agora se propaga por herana para as tabelas filhas
Preveno nas triggers de nvel de declarao no disparem mais de uma vez por
declarao
Transferncia dos metadados das sequncias para um novo catlogo do sistema
pg_sequence:
A sequncia agora armazena apenas os campos que podem ser modificados por nextval(),
que last_value, log_cnt e is_ callled. Outras propriedades da sequncia, como o valor
inicial e o incremento, so mantidas em uma linha correspondente do catlogo
pg_sequence. As atualizaes de ALTER SEQUENCE agora so totalmente transacionais,
o que implica que a sequncia est bloqueada at o commit. As funes nextval() e setval()
permanecem no transacionais.
A incompatibilidade principal introduzida por esta alterao que a seleo de uma
sequncia agora retorna apenas os trs campos mencionados acima. Para obter as outras
propriedades da sequncia, os aplicativos devem procurar o catlogo pg_sequence. A nova
view de sistema pg_sequences tambm pode ser usada para esse propsito; Ela fornece
nomes de colunas que so mais compatveis com o cdigo existente.
A sada do comando \d do psql para uma sequncia tambm foi redesenhada.
O pg_basebackup foi modificado para fazer o stream do WAL necessrio para restaurar o
backup por padro:
Isso muda o mtodo -X/--xlog-default do pg_basebackup para stream. Uma opo none
foi adicionada para reproduzir o comportamento anterior. A opo x do pg_basebackup
foi removida (em vez disso, deve-se usar -X).
Alterao de como a replicao lgica usa o pg_hba.conf:

SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 7 de 23
PostgreSQL 10

Em verses anteriores, uma conexo de replicao lgica exigia a palavra-chave


replication na coluna do banco de dados. A partir desta verso, a replicao lgica
corresponde a uma entrada normal com um nome de banco de dados ou palavras-chave,
como all. A replicao fsica continua a usar a palavra-chave replication. Uma vez que
a replicao lgica nova nesta verso, esta alterao afeta somente plugins de replicao
lgica de terceiros.
Todas as aes do pg_ctl aguardam a concluso por padro:
Anteriormente, algumas aes do pg_ctl no aguardavam a concluso e exigiam o uso de
-w para fazer isso.
Alterao do valor padro do parmetro log_directory de pg_log para log:
Adio da opo de configurao ssl_dh_params_file para especificar o nome do arquivo
para parmetros personalizados do OpenSSL DH:
Isso substitui o hardcoded, nome de arquivo indocumentado dh1024.pem. Observe que
dh1024.pem no mais examinado por padro; Deve-se definir esta opo se deseja usar
parmetros personalizados do DH.
Aumento do tamanho padro dos parmetros do DH usados para os cdigos para OpenSSL
para 2048 bits:
Remoo da capacidade de armazenar senhas no criptografadas no servidor:
O parmetro do servidor password_encryption no suporta mais off ou plain. A opo
UNENCRYPTED no mais suportada no CREATE / ALTER USER ... PASSSWORD.
Da mesma forma, a opo --unencrypted foi removida do createuser. As senhas no
criptografadas migradas das verses antigas sero armazenadas criptografadas nesta verso.
A configurao padro para password_encryption ainda md5.
Criao dos parmetros min_parallel_table_scan_size e min_parallel_index_scan_size
para controlar consultas paralelas:
Estes substituem min_parallel_relation_size, considerado muito genrico.
Mudana para no colocar o texto sem aspas minsculo no parmetro
shared_preload_libraries e outros parmetros relacionados:
Essas configuraes so realmente listas de nomes de arquivos, mas anteriormente foram
tratadas como listas de identificadores SQL, que possuem diferentes regras de anlise.
Remoo do parmetro sql_inheritance
Permisso para que as matrizes multidimensionais sejam passadas para funes PL /
Python e retornadas como listas de Python aninhadas:

SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 8 de 23
PostgreSQL 10

Esse recurso requer uma alterao incompatvel para o processamento de matrizes de tipos
compostos em PL / Python. Anteriormente, voc poderia retornar uma matriz de valores
compostos escrevendo, por exemplo, [[col1, col2], [col1, col2]]; mas agora isso
interpretado como uma matriz bidimensional. Tipos compostos em arrays agora devem ser
escritos como tuplas Python, no listas, para resolver a ambiguidade; isto , escreva [(col1,
col2), (col1, col2)] em vez disso.
Remoo da instalao automtica do mdulo de PL / Tcl:
Esta funcionalidade foi substituda por novos parmetros do servidor pltcl.start_proc e
pltclu.start_proc, que so mais fceis de usar e mais semelhantes aos recursos disponveis
em outros PLs.

Remoo do suporte do pg_dump / pg_dumpall para dump de verses pre-8.0


Remoo do suporte para floating-point timestamps e intervals
Remoo do suporte ao protocolo cliente/servidor verso 1.0
Remoo do mdulo contrib/tsearch2
Remoo dos comandos de linha createlang e droplang:
Esto depreciados desde o PostgreSQL 9.1. Em vez disso, use CREATE EXTENSION e
DROP EXTENSION.

Remoo do suporte para convenes de chamadas de funo version-0

3.3. Alteraes na verso


Abaixo, encontra-se uma lista detalhada das mudanas entre o PostgreSQL 10 e a verso principal
anterior.

3.3.1.1 Consultas Paralelas


Suporte a scans paralelos de ndices B-tree:
Esta alterao permite que pginas dos ndices B-tree ser consultado separadamente por
workers paralelos
Suporte a scans paralelos a bitmap heap scans:
Isso permite que uma nica verificao de ndice envie workers paralelos para processar
diferentes reas do heap da tabela.

Permite que merge joins sejam utilizados em paralelo

SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 9 de 23
PostgreSQL 10

Permite que as subconsultas no correlacionadas sejam executadas em paralelo


Melhorias na capacidade dos workers paralelos para retornar dados pr-classificados
Aumento do uso da consulta paralela nas funes de linguagem processual
Criao do parmetro max_parallel_workers para limitar o nmero de processos que
podem ser usados para o paralelismo de consulta:
Esse parmetro pode ser configurado com valor menor do que max_worker_processes para
reservar workers para fins diferentes de consultas paralelas.

3.3.1.2. ndices
Adicionado suporte aos ndices de hash no WAL (Write-Ahead Log)
Isso faz com que os ndices de hash sejam seguros e replicveis. A antiga mensagem de
aviso sobre o uso deles foi removida.
Melhoramento no desempenho do ndice hash
Adicionado o suporte do ndice SP-GiST para tipos de dados INET e CIDR
Adicionado a opo para permitir o sumrio do ndice BRIN ocorra de forma mais
agressiva:
Uma nova opo CREATE INDEX permite a sumarizao automtica das pginas do
ndice BRIN quando um novo intervalo de pginas criado.
Adicionadas funes para remover e readicionar a sumarizao BRIN para intervalos de
ndice BRIN:
A nova funo SQL brin_summarize_range() atualiza a sumarizao do ndice BRIN para
um intervalo especificado e brin_desummarize_range() o remove. Isso til para atualizar
a sumarizao de um intervalo que agora menor devido a UPDATEs e DELETEs.
Melhoramento na preciso para determinar se uma verificao do ndice BRIN benfica
Permite inseres e atualizaes mais recentes do GiST, reutilizando o espao do ndice de
forma mais eficiente

Reduo do bloqueio da pgina durante o vacuum de ndices GIN

3.3.1.3. Bloqueios
Reduo do bloqueio necessrio para alterar os parmetros da tabela:
Por exemplo, alterar a configurao effective_io_concurrency de uma tabela agora pode
ser feita com um bloqueio mais leve.

Permite o tuning dos limites de promoo dos bloqueio de predicado:

SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 10 de 23
PostgreSQL 10

A promoo de bloqueio agora pode ser controlada atravs de dois novos parmetros do
servidor, max_pred_locks_per_relation e max_pred_locks_per_page.

3.3.1.4. Otimizador
Adicionadas estatsticas no otimizador de vrias colunas para calcular a relao de
correlao e o nmero de valores distintos:
Novos comandos so CREATE STATISTICS, ALTER STATISTICS e DROP
STATISTICS. Esse recurso til para estimar o uso da memria de consulta e ao combinar
as estatsticas de colunas individuais.
Melhoramento no desempenho das consultas afetadas por restries de segurana em nvel
de linha (row-level security RLS):
O otimizador agora tem mais conhecimento sobre onde ele pode colocar as condies do
filtro RLS, permitindo que sejam gerados melhores planos enquanto ainda impem as
condies RLS com segurana.

3.3.1.5. Desempenho Geral


Acelerao nas funes de agregao que calculam uma soma executada usando a
aritmtica do tipo numrico, incluindo algumas variantes de SUM(), AVG() e STDDEV()
Melhoramento no desempenho das converses de codificao de caracteres usando rvores
radix
Reduo da sobrecarga de avaliao de expresso durante a execuo da consulta, bem
como a sobrecarga de chamadas do n plano:
Isso particularmente til para consultas que processam muitas linhas.

Permite que a agregao hash seja usada com conjuntos de agrupamento


Utilizao de garantias de exclusividade para otimizar certos tipos de juno
Melhorias no desempenho de classificao do tipo de dados do macaddr
Reduo das estatsticas de rastreamento nas sesses que fazem referncia a milhares de
relaes

3.3.1.6. Monitoramento
Permite controle explcito sobre a exibio do EXPLAIN de planejamento e o tempo de
execuo:
Por padro, o planejamento e o tempo de execuo so exibidos por EXPLAIN ANALYZE
e no so exibidos em outros casos. A nova opo EXPLAIN SUMMARY permite o seu
controle explcito.
SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 11 de 23
PostgreSQL 10

Adicionados papis de monitoramento padro:


Novas funes pg_monitor, pg_read_all_settings, pg_read_all_stats e pg_stat_scan_tables
permitem a configurao de permisso simplificada.
Correo da atualizao do coletor de estatsticas durante o REFRESH MATERIALIZED
VIEW

3.3.1.6.1. Registro no Log


Alterao do valor padro de log_line_prefix para incluir o timestamp corrente (com
milissegundos) e o ID do processo em cada linha de sada do log do postmaster:
O padro anterior era um prefixo vazio.

Adicionadas funes para retornar o contedo do diretrio do log e do WAL:


As novas funes so pg_ls_logdir() e pg_ls_waldir() e podem ser executadas por qualquer
usurio com as permisses adequadas.
Adicionada a funo pg_current_logfile() para ler os nomes atuais do arquivo de sada
stderr e csvlog do coletor de logging:
Informao do endereo e o nmero da porta de cada soquete de escuta no log do servidor
durante a inicializao do postmaster:
Alm disso, ao registrar a falha na conexo de um soquete, foi includo o endereo
especfico da tentativa de inicializao.

Reduo do registro de log sobre o incio e a parada dos subprocessos:


Estas so agora mensagens de nvel DEBUG1.
Reduo da verbosidade da mensagem dos nveis de depurao de menor nvel,
controlados por log_min_messages:
Isso tambm altera a verbosidade dos nveis de depurao client_min_messages.

3.3.1.6.2. pg_stat_activity
Adicionado view pg_stat_activity os estados de espera de baixo nvel:
Esta alterao permite relatar inmeras condies de espera de baixo nvel, incluindo
travamento, leituras/escritas/fsyncs de arquivos, leituras/escritas de clientes e replicao
sncrona.
Visualizao de processos auxiliares, workers em segundo plano e processos walsender no
pg_stat_activity:
Isso simplifica o monitoramento. Uma nova coluna backend_type identifica o tipo de
SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 12 de 23
PostgreSQL 10

processo.
Permite que pg_stat_activity mostre a consulta SQL sendo executada por workers paralelos:
Mudana dos nomes dos tipos de evento de espera, em pg_stat_activity.wait_event_type,
de LWLockTranche e LWLockNamed para LWLock:
Isso torna a sada mais consistente.

3.3.1.7. Autenticao
Adicionado o suporte SCRAM-SHA-256 para negociao e armazenamento de senha:
Isso proporciona uma segurana melhor do que o mtodo de armazenamento e
armazenamento md5 existente.
Alterado o parmetro password_encryption de boolean para enum:
Isso foi necessrio para suportar opes de hashing de senhas adicionais.
Adicionada a view pg_hba_file_rules para exibir o contedo de pg_hba.conf:
Isso mostra o contedo do arquivo, no as configuraes atualmente ativas.
Suporte a mltiplos servidores RADIUS:
Todos os parmetros relacionados ao RADIUS suportam uma lista separada por vrgulas
de servidores.

3.3.1.8 Configurao do Servidor


Permitir que a configurao SSL seja atualizada durante o reload da configurao:
Isso permite que o SSL seja reconfigurado sem reiniciar o servidor, usando pg_ctl reload,
SELECT pg_reload_conf() ou enviando um sinal SIGHUP. No entanto, recarregar a
configurao SSL no funciona se a chave SSL do servidor requerer uma frase secreta,
pois no h como voltar a solicitar a mesma. Neste caso, a configurao original ser
aplicada enquanto o postmaster estiver em execuo.

O valor mximo de bgwriter_lru_maxpages torna-se ilimitado

3.3.1.9. Confiabilidade
Depois de criar ou desvincular arquivos, existe a execuo de um fsync em seu diretrio
pai:
Isso reduz o risco de perda de dados aps uma falha de energia.

3.3.1.9.1. Write-Ahead Log


Impedimento de checkpoints e arquivamento WAL desnecessrio em clusters inativos
Adicionado o parmetro wal_consistency_checking para adicionar detalhes ao WAL que

SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 13 de 23
PostgreSQL 10

podem ser verificados no standby:


Qualquer falha na verificao de sanidade gera um erro fatal no standby.

Aumento do tamanho mximo do segmento WAL para um 1GB:


Um tamanho maior do segmento WAL permite menos invocaes do archive_command e
menos arquivos WAL para gerenciar.

3.3.2. REPLICAO E RECUPERAO


Adicionada a capacidade de replicao lgica de tabelas em servidores standby:
A replicao lgica permite mais flexibilidade do que a replicao fsica, incluindo a
replicao entre diferentes verses principais do PostgreSQL e a replicao seletiva.
Permite aguardar confirmao do standby, independentemente da ordem em que aparecem
em synchronous_standby_names
Reduo nas mudanas de configurao necessrias para executar o backup e a replicao
streaming:
Especificamente, os padres foram alterados para wal_level, max_wal_senders,
max_replication_slots e hot_standby para torn-los adequados para esses usos fora da caixa.
Ativada a replicao das conexes localhost por padro no pg_hba.conf
Adicionadas colunas a pg_stat_replication para relatar os tempos de atraso de replicao:
As novas colunas so write_lag, flush_lag e replay_lag.
Permite especificao do ponto de parada de recuperao pelo nmero de seqncia de
registro (LSN) em recovery.conf:
Anteriormente, o ponto de parada s pode ser selecionado pelo timestamp ou XID.
Permite que os usurios desativem a espera do pg_stop_backup() para que todos os WAL
sejam arquivados:
Um segundo argumento opcional para pg_stop_backup() controla esse comportamento.
Permite a criao de slots temporrios de replicao:
Os slots temporrios so automaticamente removidos na sada ou erro da sesso.
Melhoramento no desempenho da reproduo em hot standby com melhor rastreamento
dos bloqueios Access Exclusive
Acelerao no desempenho da recuperao no two-phase commit

SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 14 de 23
PostgreSQL 10

3.3.3. CONSULTAS
Adicionada a funo XMLTABLE que converte dados formatados em XML em um
conjunto de linhas
Permitida a sintaxe do construtor de linha padro em UPDATE ... SET (column_list) =
row_constructor:
O row_constructor agora pode comear com a palavra-chave ROW; anteriormente, isso
tinha que ser omitido. Alm disso, uma ocorrncia de table_name.* Dentro do
row_constructor agora expandida em vrias colunas, como em outros usos de
row_constructors.

Correo do tratamento de classes de caracteres de expresses regulares para cdigos de


caracteres grandes, particularmente caracteres Unicode acima de U+7FF

3.3.4. COMANDOS UTILITRIOS


Adicionada a sintaxe de particionamento de tabela que cria automaticamente restries de
partio e lida com roteamento de inseres e atualizaes de tuplas:
A sintaxe suporta intervalo e particionamento de lista.

Adicionado ao gatilho a opo AFTER para as tabelas de transio para registrar as linhas
alteradas:
Permite polticas de segurana restritivas em nvel de linha
Ao criar uma restrio de chave estrangeira, faz a verificao da permisso REFERENCES
apenas na tabela referenciada
Permite permisses padro em esquemas:
Isso feito usando o comando ALTER DEFAULT PRIVILEGES.
Adicionado o comando CREATE SEQUENCE AS para criar uma sequncia
correspondente a um tipo de dados inteiro
Permite COPY view FROM source em exibies com triggers INSTEAD INSERT:
As triggers so alimentadas com as linhas de dados lidas por COPY.
Permitida a especificao de um nome de funo sem argumentos em comandos DDL, se
for exclusivo
Permite que vrias funes, operadores e agregaes sejam descartados com um nico
comando DROP

SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 15 de 23
PostgreSQL 10

Suporte IF NOT EXISTS no CREATE SERVER, CREATE USER MAPPING e CREATE


COLLATION
Mudana para que o VACUUM VERBOSE relate o nmero de pginas ignoradas e o
xmin mais antigo:
Esta informao tambm est includa na sada log_autovacuum_min_duration.

Melhoramento na velocidade de remoo do VACUUM de pginas vazias do heap das


relaes

3.3.5. TIPOS DE DADOS


Adicionado suporte a pesquisa de texto completa para JSON e JSONB:
As funes ts_headline() e to_tsvector() agora podem ser usadas nesses tipos de dados.
Adicionado suporte para endereos MAC EUI-64, como um novo tipo de dados macaddr8:
Adicionadas colunas de identidade para atribuir um valor numrico s colunas na insero
Permite que os valores ENUM sejam renomeados:
Isso usa a sintaxe ALTER TYPE ... RENAME VALUE.
Tratamento adequado dos pseudo tipos da matriz (anyarray) como arrays em to_json() e
to_jsonb()
Adicionados operadores para a multiplicao e diviso de valores monetrios com valores
int8

Adicionada verificao da sobrecarga do tipo money, na entrada das funes

3.3.6. FUNES
Adicionada a funo regexp_match()
Adicionada uma verso do operador de excluso do jsonb que leva uma matriz de chaves
para excluir
Mudana para que a funo json_populate_record() e funes relacionadas processem
matrizes JSON e objetos recursivamente

Adicionada a funo txid_current_ifassigned() para retornar o ID da transao atual ou


NULL se nenhuma ID da transao tiver sido atribuda:
Isso diferente de txid_current(), que sempre retorna uma ID de transao, atribuindo uma,
se necessrio. Ao contrrio dessa funo, esta funo pode ser executada em servidores

SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 16 de 23
PostgreSQL 10

standby.
Adicionada a funo txid_status() para verificar se uma transao foi cometida
Permite que make_date() interprete anos negativos como anos BC
Mudana para que a funo to_timestamp() e to_date() rejeite os campos de entrada fora
do intervalo

3.3.7. LINGUAGENS SERVER-SIDE


Permite que as funes cursor() e execute() do PL/Python sejam chamadas como mtodos
de seus argumentos plano objeto:
Isso permite um estilo de programao mais orientado a objetos.

Permitida a instruo GET DIAGNOSTICS do PL/pgSQL para recuperar valores em


elementos de matriz:
Anteriormente, uma restrio sinttica impediu a varivel alvo de ser um elemento de
matriz.

3.3.7.1. PL/Tcl
Permitida que as funes PL/Tcl retornem tipos e conjuntos compostos
Adicionado um comando de subtransao a PL/Tcl:
Isso permite que as consultas PL/Tcl falhem sem abortar toda a funo.
Adicionado os parmetros pltcl.start_proc e pltclu.start_proc, para permitir que as funes
de inicializao sejam chamadas na inicializao PL/Tcl

3.3.8 APLICAES CLIENTE

3.3.8.1. psql
Adicionado o suporte a estruturas condicionais ao psql:
Esse recurso adiciona metadados psql \if, \elif, \else e \endif. Muito til para scripts.
Adicionado o meta-comando psql \gx para executar (\g) uma consulta no modo expandido
(\x):
Expanso das referncias variveis do psql
Impedimento para que as variveis especiais do psql no sejam definidas com valores
invlidos
Adicionadas variveis que mostrem a verso do servidor e a verso psql
SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 17 de 23
PostgreSQL 10

Melhoramento dos comandos \d (relao de exibio) e \dD (domnio de exibio) do psql


para mostrar propriedades, em colunas separadas, de idiomas, restries NOT NULL e
valores padres:
Anteriormente, eles eram exibidos em uma nica coluna "Modificadores".

Modificao para que os vrios comandos \d lidem com os casos de no correspondncia


de forma mais consistente

Melhoramento na funo tab-complete do psql

3.3.8.2. pgbench
Adicionada a opo --log-prefix no pgbench para controlar o prefixo do arquivo de log
Permitido que os meta-comandos do pgbench abranjam vrias linhas

Removida a restrio no posicionamento da opo -M em relao a outras opes da linha


de comando

3.3.9. APLICAES SERVIDOR


Adicionada a opo -Z /-compress em pg_receivewal para especificar a compactao
Adicionada a opo --endpos em pg_recvlogical para especificar a posio final:
Isso complementa a opo --startpos existente.
Renomeada as opes --noclean e nosync do initdb por no-clean e no-sync:
As antigas grafias ainda so suportadas.

3.3.9.1. pg_dump, pg_dumpall, pg_restore


Permitido que o pg_restore exclua esquemas:
Isso adiciona uma nova opo -N/--exclude-schema.
Adicionada a opo --no-blobs para pg_dump:
Isso suprime o dump de objetos grandes.
Adicionada a opo no-role-passwords em pg_dumpall para omitir senhas de funo:
Isso permite o uso de pg_dumpall por no-superusurios; sem essa opo, ele falha devido
incapacidade de ler senhas.
Suporte ao uso de snapshots sincronizados quando o dump for de um servidor standby
Execuo do fsync() nos arquivos de sada gerados pelo pg_dump e pg_dumpall:
SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 18 de 23
PostgreSQL 10

Isso fornece mais segurana de que a sada foi armazenada com segurana no disco antes
da execuo terminar. Isso pode ser desabilitado com a nova opo --no-sync.

3.3.9.2 pg_basebackup

Permitido que o pg_basebackup faa streaming do WAL no modo tar:


O WAL ser armazenado em um arquivo tar separado da base backup.

O pg_basebackup passa a usar slots de replicao temporrios:


Os slots de replicao temporria sero usados por padro quando pg_basebackup usar
WAL streaming com opes padro.
Melhorias na sincronizao (fsync()) em todos os lugares necessrios no pg_basebackup e
pg_receivewal
Adicionada a opo --no-sync no pg_basebackup para desativar fsync
Melhoramento no processamento do pg_basebackup de quais diretrios ignorar

3.3.9.3 pg_ctl

Adicionada a opo de espera para a operao de promote

Adicionado o formato extendido para as opes wait (--wait) e no wait (--no-wait)


O pg_ctl start --wait detecta se o servidor est pronto ao verificar o arquivo postmaster.pid.
Anteriormente, o pg_ctl usava tentativas de conexes
Reduo do tempo de reao do pg_ctl ao aguardar o incio / parada do postmaster
Mudana para garantir que o pg_ctl sai com status diferente de zero se uma operao que
est sendo aguardada no for concluda dentro do tempo limite

3.3.10 Mdulos Adicionais


Permite que o mdulo file_fdw leia a partir da sada do programa, bem como arquivos
No mdulo postgres_fdw, as funes agregadas rodam no servidor remoto, quando
possvel:
Isso reduz a quantidade de dados que deve ser passado do servidor remoto e descarrega a
computao agregada do servidor solicitante.

No mdulo postgres_fdw, as junes rodam o servidor remoto na maioria dos casos


Suporte s colunas OID nas tabelas do mdulo postgres_fdw:

SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 19 de 23
PostgreSQL 10

Anteriormente, as colunas OID sempre retornavam zeros.


Permitido aos mdulos btree_gist e btree_gin indexem tipos enum:
Isso permite que enums sejam usados em restries de excluso.
Adicionado o suporte de indexao a btree_gist para o tipo de dados UUID
Adicionado o mdulo amcheck que pode verificar a validade dos ndices da B-tree
Mudana no mdulo pg_stat_statements para mostrar constantes ignoradas como $N em
vez de ?
Melhoramento na manipulao do mdulo cube para cubos de dimenses zero:
Isso tambm melhora o tratamento de valores infinite e NaN.
Permitido que o mdulo pg_buffercache seja executado com menos bloqueios:
Isso torna menos perturbador quando executado em sistemas de produo.
Adio da funo pgstathashindex(), no mdulo pgstattuple, para que possamostrar as
estatsticas dos ndices hash:

Utilizao das permisses GRANT para controlar o uso da funo de pgstattuple:


Isso possibilita que os DBAs permitam que os no-superusurios executem essas funes.

Reduo no bloqueio quando o Pgstattuple examina ndices de hash


Adicionada a funo function_checksum(), em pageinspect, para mostrar a soma de
verificao de uma pgina
Adicionada a funo bt_page_items(), em pagesinspect, para imprimir itens de pgina de
uma imagem de pgina
Adicionado o suporte ao ndice hash para pageinspect

3.4. MATRIZ DE FUNCIONALIDADES


Abaixo, encontra-se uma tabela comparativa de quando as principais funcionalidades foram incor-
poradas nas diversas verses.
Backend 9.3 9.4 9.5 9.6 10
ALTER SYSTEM No Sim Sim Sim Sim
ALTER TABLE ... SET LOGGED / UNLOGGED No No Sim Sim Sim
Particionamento declarativo de tabelas No No No No Sim
Background workers dinmicos No Sim Sim Sim Sim
Herana de tabelas externas No No Sim Sim Sim

SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 20 de 23
PostgreSQL 10

API para registro de WAL genrica No No No Sim Sim


GROUPING SETS, CUBE e ROLLUP No No Sim Sim Sim
INSERT ... ON CONFLICT DO NOTHING/UPDATE No No Sim Sim Sim
Operadores e funes JSONB No No Sim Sim Sim
Views materializadas com atualizaes concorrentes No Sim Sim Sim Sim
min_wal_size / max_wal_size No No Sim Sim Sim
View pg_config No No No Sim Sim
Atraso configurado nos servidores standbys No Sim Sim Sim Sim
Registro de ndices hash no WAL No No No No Sim
Clusula WITH CHECK No Sim Sim Sim Sim
Clusula WITHIN GROUP No Sim Sim Sim Sim
Clusula WITH ORDINALITY No Sim Sim Sim Sim
Replicao 9.3 9.4 9.5 9.6 10
Replicao lgica No No No No Sim
Mltiplos standbys sncronos No No No Sim Sim
Quorum commit para a replicao sncrona No No No No Sim
Modo remote_apply No No No Sim Sim
Slots de replicao No Sim Sim Sim Sim
Performance 9.3 9.4 9.5 9.6 10
Abreviao de chaves nos ndices e operaes de ordenao No No Sim Sim Sim
Controle da taxa de transferncia no pg_basebackup No Sim Sim Sim Sim
ndices que mapeiam blocos de pginas No No Sim Sim Sim
Mapeamento de pginas congeladas No No No Sim Sim
Melhoria de performance e tamanho nos ndices GIN No Sim Sim Sim Sim
Execuo da procura somente na estrutura dos ndices GiST No No Sim Sim Sim
Execuo do bitmap index scan paralelo No No No No Sim
Execuo do B-tree index scan paralelo No No No No Sim
Execuo de JOIN e a agregaes paralelos No No No Sim Sim
Execuo de merge joins paralelos No No No No Sim
Execuo de consultas paralelas No No No Sim Sim
Execuo de seqscan paralelos No No No Sim Sim
Execuo de vacuumdb paralelos No No Sim Sim Sim
Mdulo pg_prewarm No Sim Sim Sim Sim
Reduo dos nveis de locks para comandos ALTER TABLE No Sim Sim Sim Sim
Clusula SKIP LOCKED No No Sim Sim Sim
Clusula TABLESAMPLE No No Sim Sim Sim
Segurana 9.3 9.4 9.5 9.6 10

SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 21 de 23
PostgreSQL 10

Autenticao krb5 (sem o gssapi) Sim Obsoleto Obsoleto Obsoleto Obsoleto


Segurana em nvel de linha No No Sim Sim Sim
Autenticao SCRAM-SHA-256 No No No No Sim
Tipos de Dados 9.3 9.4 9.5 9.6 10
CREATE EXTENSION CASCADE No No No Sim Sim
JSONB No Sim Sim Sim Sim
macaddr8 No No No No Sim
Procura por frases e palavras prximas No No No Sim Sim
Foreign Data Wrappers 9.3 9.4 9.5 9.6 10
IMPORT FOREIGN SCHEMA No No Sim Sim Sim
Execuo de JOINS, ordenaes, UPDATES e DELETES nos
No No No Sim Sim
servidores externos com o driver postgres_fdw
Funes e Triggers 9.3 9.4 9.5 9.6 10
Clusula FILTER para funes de agregao No Sim Sim Sim Sim
Linguagens Procedurais 9.3 9.4 9.5 9.6 10
CREATE TRANSFORM No No Sim Sim Sim
Mdulos Contrib 9.3 9.4 9.5 9.6 10
contrib/pg_rewind No No Sim Sim Sim
Suporte indexao KNN para operaes com CUBE No No No Sim Sim

4. POLTICA DE LIBERAO DE VERSES POSTGRESQL


As verses majoritrias do PostgreSQL tm suporte completo durante 5 anos. Aps esse perodo,
correes crticas no so lanadas e os usurios so encorajados a fazer o upgrade da verso.
Abaixo, temos a tabela de fim de vida (end of life - EOL) de cada verso ainda suportada.

Verso Verso Atual EOL


10 10.0 Outubro 2022
9.6 9.6.5 Setembro 2021
9.5 9.5.9 Janeiro 2021
9.4 9.4.14 Dezembro 2019
9.3 9.3.19 Setembro 2018

5. REFERNCIAS
https://www.postgresql.org/docs/10/static/release-10.html

SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 22 de 23
PostgreSQL 10

SIA Trecho 06 Lotes 05/15 Bloco B | Braslia DF | CEP: 71205-060

Fone: +55 61 3039-9700 | Fax: +55 61 3039-9701 | www.tecnisys.com.br

Pgina 23 de 23