Partilhar via


Extensões do PostgreSQL na Base de Dados do Azure para PostgreSQL – Servidor Flexível

APLICA-SE A: Banco de Dados do Azure para PostgreSQL - Servidor Flexível

O servidor flexível do Banco de Dados do Azure para PostgreSQL fornece a capacidade de estender a funcionalidade do seu banco de dados usando extensões. As extensões agrupam vários objetos SQL relacionados em um único pacote que pode ser carregado ou removido do banco de dados com um comando. Depois de serem carregadas no banco de dados, as extensões funcionam como recursos internos.

Como usar extensões PostgreSQL

Antes de instalar extensões no Banco de Dados do Azure para servidor flexível PostgreSQL, você precisa permitir a lista dessas extensões para uso.

Usando o portal do Azure:

  1. Selecione sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL.
    1. No menu de recursos, na seção Configurações , selecione Parâmetros do servidor.
    2. Procure o azure.extensions parâmetro.
    3. Selecione as extensões que deseja permitirlist. Captura de ecrã a mostrar a Base de Dados do Azure para servidor flexível PostgreSQL - extensões de listagem permitida para instalação.

Usando a CLI do Azure:

Você pode permitir extensões por meio do comando conjunto de parâmetros CLI.

az postgres flexible-server parameter set --resource-group <resource_group>  --server-name <server> --subscription <subscription_id> --name azure.extensions --value <extension_name>,<extension_name>

Usando o modelo ARM: O exemplo a seguir permite extensões dblink, dict_xsyn, pg_buffercache em um servidor cujo nome é postgres-test-server:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "flexibleServers_name": {
            "defaultValue": "postgres-test-server",
            "type": "String"
        },
        "azure_extensions_set_value": {
            "defaultValue": " dblink,dict_xsyn,pg_buffercache",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.DBforPostgreSQL/flexibleServers/configurations",
            "apiVersion": "2021-06-01",
            "name": "[concat(parameters('flexibleServers_name'), '/azure.extensions')]",
            "properties": {
                "value": "[parameters('azure_extensions_set_value')]",
                "source": "user-override"
            }
        }
    ]
}

shared_preload_libraries é um parâmetro de configuração de servidor que determina quais bibliotecas devem ser carregadas quando o servidor flexível do Banco de Dados do Azure para PostgreSQL é iniciado. Todas as bibliotecas que usam memória compartilhada devem ser carregadas por meio desse parâmetro. Se sua extensão precisar ser adicionada a bibliotecas de pré-carregamento compartilhadas, siga estas etapas:

Usando o portal do Azure:

  1. Selecione sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL.
    1. No menu de recursos, na seção Configurações , selecione Parâmetros do servidor.
    2. Procure o shared_preload_libraries parâmetro.
    3. Selecione as bibliotecas que deseja adicionar.
 :::image type="content" source="./media/concepts-extensions/shared-libraries.png" alt-text="Screenshot showing Azure Database for PostgreSQL -setting shared preload libraries parameter setting for extensions installation." lightbox="./media/concepts-extensions/shared-libraries.png":::
```Using [Azure CLI](/cli/azure/):

   You can set `shared_preload_libraries` via CLI [parameter set](/cli/azure/postgres/flexible-server/parameter?view=azure-cli-latest&preserve-view=true) command.

   ```azurecli
az postgres flexible-server parameter set --resource-group <resource_group>  --server-name <server> --subscription <subscription_id> --name shared_preload_libraries --value <extension_name>,<extension_name>

Criar extensão

Depois que as extensões são permitidas e carregadas, elas devem ser instaladas em cada banco de dados no qual você planeja usá-las.

  1. Um usuário deve ser um membro da azure_pg_admin função para criar uma extensão. Um membro da azure_pg_admin função pode conceder privilégios a outros usuários para criar extensões.
  2. Para instalar uma extensão específica, você deve executar o comando CREATE EXTENSION . Este comando carrega os objetos empacotados em seu banco de dados.

Nota

As extensões de terceiros oferecidas no Banco de Dados do Azure para o servidor flexível PostgreSQL são código licenciado de código aberto. Atualmente, não oferecemos extensões de terceiros ou versões de extensão com modelos de licenciamento premium ou proprietários.

A instância flexível do servidor do Banco de Dados do Azure para PostgreSQL dá suporte a um subconjunto de extensões principais do PostgreSQL, conforme listado na tabela a seguir. Esta informação também está disponível através da execução SHOW azure.extensions;. Não há suporte para extensões não listadas neste documento no Banco de Dados do Azure para servidor flexível PostgreSQL. Não é possível criar ou carregar sua própria extensão no Banco de Dados do Azure para servidor flexível PostgreSQL.

Versões de extensão

As seguintes extensões estão disponíveis no Banco de Dados do Azure para servidor flexível PostgreSQL:

Nota

As extensões na tabela a seguir com a ✔️ marca exigem que suas bibliotecas correspondentes sejam habilitadas shared_preload_libraries no parâmetro server.

Nome da extensão Descrição PostgreSQL 17 PostgreSQL 16 PostgreSQL 15 PostgreSQL 14 PostgreSQL 13 PostgreSQL 12 PostgreSQL 11
address_standardizer Usado para analisar um endereço em elementos constituintes. Geralmente usado para suportar a etapa de normalização de endereços de geocodificação. 3.5.0 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
address_standardizer_data_us Exemplo de conjunto de dados do Address Standardizer US 3.5.0 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
idade (Pré-visualização) Fornece recursos de banco de dados gráfico N/A 1.5.0 ✔️ 1.5.0 ✔️ 1.5.0 ✔️ 1.5.0 ✔️ N/A N/A
Amcheck Funções para verificar a integridade da relação 1.4 1.3 1.3 1.3 1.2 1.2 1.1
anon (Pré-visualização) Ferramentas de anonimização de dados 1.3.2 ✔️ 1.3.2 ✔️ 1.3.2 ✔️ 1.3.2 ✔️ 1.3.2 ✔️ 1.3.2 ✔️ 1.3.2 ✔️
azure_ai Integração dos Serviços de IA e ML do Azure para PostgreSQL N/A 1.1.0 1.1.0 1.1.0 1.1.0 1.1.0 N/A
azure_storage Integração do Azure para PostgreSQL N/A 1,5 ✔️ 1,5 ✔️ 1,5 ✔️ 1,5 ✔️ 1,5 ✔️ N/A
floração Método de acesso Bloom - índice baseado em arquivo de assinatura 1.0 1.0 1.0 1.0 1.0 1.0 1.0
btree_gin Suporte para indexação de tipos de dados comuns no GIN 1.3 1.3 1.3 1.3 1.3 1.3 1.3
btree_gist Suporte para indexação de tipos de dados comuns no GiST 1.7 1.7 1.7 1.6 1.5 1.5 1.5
Citext Tipo de dados para cadeias de caracteres que não diferenciam maiúsculas de minúsculas 1.6 1.6 1.6 1.6 1.6 1.6 1.5
cubo Tipo de dados para cubos multidimensionais 1.5 1.5 1.5 1.5 1.4 1.4 1.4
dblink Conectar-se a outros bancos de dados PostgreSQL a partir de um banco de dados 1.2 1.2 1.2 1.2 1.2 1.2 1.2
dict_int Modelo de dicionário de pesquisa de texto para números inteiros 1.0 1.0 1.0 1.0 1.0 1.0 1.0
dict_xsyn Modelo de dicionário de pesquisa de texto para processamento estendido de sinônimo 1.0 1.0 1.0 1.0 1.0 1.0 1.0
distância terrestre Calcular distâncias de grande círculo na superfície da Terra 1.1 1.1 1.1 1.1 1.1 1.1 1.1
Fuzzystrmatch Determinar semelhanças e distância entre cadeias de caracteres 1.2 1.2 1.1 1.1 1.1 1.1 1.1
hstore Tipo de dados para armazenar conjuntos de pares (chave, valor) 1.8 1.8 1.8 1.8 1.7 1.6 1.5
Hipopg Índices hipotéticos para PostgreSQL 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0
Intagg Agregador e enumerador de números inteiros (obsoleto) 1.1 1.1 1.1 1.1 1.1 1.1 1.1
IntArray Suporte a funções, operadores e índice para matrizes 1D de inteiros 1.5 1.5 1.5 1.5 1.3 1.2 1.2
Não Tipos de dados para normas internacionais de numeração de produtos 1.2 1.2 1.2 1.2 1.2 1.2 1.2
lo Manutenção de objetos grandes 1.1 1.1 1.1 1.1 1.1 1.1 1.1
login_hook Login_hook - gancho para executar login_hook.login() no momento do login 1.5 1.5 1.4 1.4 1.4 1.4 1.4
ltree Tipo de dados para estruturas hierárquicas semelhantes a árvores 1.3 1.2 1.2 1.2 1.2 1.1 1.1
oracle_fdw Wrapper de dados estrangeiros para bancos de dados Oracle 1.2 1.2 1.2 1.2 1.2 1.2 N/A
orafce Funções e operadores que emulam um subconjunto de funções e pacotes do Oracle RDBMS 4,9 4.4 3.24 3.18 3.18 3.18 3.7
pageinspect Inspecionar o conteúdo das páginas do banco de dados em um nível baixo 1.12 1.12 1.11 1.9 1.8 1.7 1.7
PGAUDIT Fornece funcionalidade de auditoria 16,0 ✔️ 16,0 ✔️ 1,7 ✔️ 1.6.2 ✔️ 1,5 ✔️ 1.4.3 ✔️ 1.3.2 ✔️
pg_buffercache Examine o cache de buffer compartilhado 1.5 1.4 1.3 1.3 1.3 1.3 1.3
pg_cron Agendador de tarefas para PostgreSQL 1,6 ✔️ 1,6 ✔️ 1,6 ✔️ 1,6 ✔️ 1,6 ✔️ 1,6 ✔️ 1.4-1 ✔️
PGPcrypto Funções criptográficas 1.3 1.3 1.3 1.3 1.3 1.3 1.3
pg_freespacemap Examine o mapa de espaço livre (FSM) 1.2 1.2 1.2 1.2 1.2 1.2 1.2
pg_hint_plan Torna possível ajustar os planos de execução do PostgreSQL usando as chamadas dicas nos comentários SQL. 1.7.0 ✔️ 1.6.0 ✔️ 1,5 ✔️ 1,4 ✔️ 1.3.7 ✔️ 1.3.7 ✔️ 1.3.7 ✔️
pglogical Replicação lógica PostgreSQL 2.4.5 ✔️ 2.4.4 ✔️ 2.4.2 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️
pg_partman Extensão para gerenciar tabelas particionadas por tempo ou ID 5.0.1 ✔️ 5.0.1 ✔️ 4.7.1 ✔️ 4.6.1 ✔️ 4.5.0 ✔️ 4.5.0 ✔️ 4.5.0 ✔️
pg_prewarm Dados de relação pré-aquecimento 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️
pg_repack Reorganizar tabelas em bancos de dados PostgreSQL com bloqueios mínimos 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7
pgrouting Extensão PgRouting N/A N/A 3.5.0 3.3.0 3.3.0 3.3.0 3.3.0
pgrowlocks Mostrar informações de bloqueio no nível da linha 1.2 1.2 1.2 1.2 1.2 1.2 1.2
pg_squeeze Uma ferramenta para remover o espaço não utilizado de uma relação. 1,7 ✔️ 1,6 ✔️ 1,6 ✔️ 1,5 ✔️ 1,5 ✔️ 1,5 ✔️ 1,5 ✔️
pg_stat_statements Controlar estatísticas de execução de todas as instruções SQL executadas 1.11 ✔️ 1,10 ✔️ 1,10 ✔️ 1,9 ✔️ 1,8 ✔️ 1,7 ✔️ 1,6 ✔️
pgstattuple Mostrar estatísticas de nível de tupla 1.5 1.5 1.5 1.5 1.5 1.5 1.5
pg_trgm Medição da semelhança de texto e pesquisa de índice com base em trigramas 1.6 1.6 1.6 1.6 1.5 1.4 1.4
pg_visibility Examine o mapa de visibilidade (VM) e as informações de visibilidade no nível da página 1.2 1.2 1.2 1.2 1.2 1.2 1.2
plpgsql Linguagem processual PL/pgSQL 1.0 1.0 1.0 1.0 1.0 1.0 1.0
PLV8 PL/JavaScript (v8) linguagem processual confiável 3.1.7 3.1.7 3.1.7 3.0.0 3.0.0 3.0.0 3.0.0
Pós-SIG Geometria e geografia pós-SIG tipos espaciais e funções 3.5.0 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_raster Tipos e funções raster PostGIS 3.5.0 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_sfcgal Funções SFCGAL PostGIS 3.5.0 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_tiger_geocoder Geocodificador tigre PostGIS e geocodificador reverso 3.5.0 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_topology Topologia pós-SIG tipos espaciais e funções 3.5.0 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgres_fdw Wrapper de dados estrangeiros para servidores PostgreSQL remotos 1.1 1.1 1.1 1.1 1.0 1.0 1.0
postgres_protobuf Buffers de protocolo para PostgreSQL 0.2 0.2 0.2 0.2 0.2 0.2 N/A
semver Tipo de dados de versão semântica 0.32.1 0.32.1 0.32.0 0.32.0 0.32.0 0.32.0 0.32.0
session_variable Session_variable - registo e manipulação de variáveis e constantes de sessão 3.3 3.3 3.3 3.3 3.3 3.3 3.3
sslinfo Informações sobre certificados SSL 1.2 1.2 1.2 1.2 1.2 1.2 1.2
Tablefunc Funções que manipulam tabelas inteiras, incluindo tabela de referência cruzada 1.0 1.0 1.0 1.0 1.0 1.0 1.0
tds_fdw Wrapper de dados estrangeiros para consultar um banco de dados TDS (Sybase ou Microsoft SQL Server) 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3
Escala de tempoDB Permite inserções escaláveis e consultas complexas para dados de séries cronológicas N/A 2.13.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 1.7.4 ✔️
tsm_system_rows Método TABLESAMPLE que aceita o número de linhas como limite 1.0 1.0 1.0 1.0 1.0 1.0 1.0
tsm_system_time Método TABLESAMPLE que aceita o tempo em milissegundos como limite 1.0 1.0 1.0 1.0 1.0 1.0 1.0
sem sotaque Dicionário de pesquisa de texto que remove acentos 1.1 1.1 1.1 1.1 1.1 1.1 1.1
UUID-OSSP Gerar identificadores universalmente exclusivos (UUIDs) 1.1 1.1 1.1 1.1 1.1 1.1 1.1
vetor Tipo de dados vetoriais e métodos de acesso ivfflat e hnsw 0.7.0 0.7.0 0.7.0 0.7.0 0.7.0 0.7.0 0.5.1

Atualizando extensões do PostgreSQL

Atualizações in-loco de extensões de banco de dados são permitidas através de um comando simples. Esse recurso permite que os clientes atualizem automaticamente suas extensões de terceiros para as versões mais recentes, mantendo os sistemas atuais e seguros sem esforço manual.

Atualizando extensões

Para atualizar uma extensão instalada para a versão mais recente disponível suportada pelo Azure, utilize o seguinte comando SQL:

ALTER EXTENSION <extension_name> UPDATE;

Este comando simplifica o gerenciamento de extensões de banco de dados, permitindo que os usuários atualizem manualmente para a versão mais recente aprovada pelo Azure, aprimorando a compatibilidade e a segurança.

Limitações

Embora a atualização de extensões seja simples, há certas limitações:

  • Seleção de uma versão específica: O comando não suporta a atualização para versões intermediárias de uma extensão. Ele sempre atualiza para a versão mais recente disponível.
  • Downgrade: Não suporta o downgrade de uma extensão para uma versão anterior. Se um downgrade for necessário, ele pode exigir assistência de suporte e depende da disponibilidade da versão anterior.

Extensões instaladas

Para listar as extensões atualmente instaladas no banco de dados, use o seguinte comando SQL:

SELECT * FROM pg_extension;

Extensões disponíveis e suas versões

Para verificar quais versões de uma extensão estão disponíveis para a instalação atual do banco de dados, consulte a exibição do catálogo do pg_available_extensions sistema. Por exemplo, para determinar a versão disponível para a azure_aiextensão, execute:

SELECT * FROM pg_available_extensions WHERE name = 'azure_ai';

Esses comandos fornecem informações necessárias sobre as configurações de extensão do seu banco de dados, ajudando a manter seus sistemas de forma eficiente e segura. Ao habilitar atualizações fáceis para as versões de extensão mais recentes, o Banco de Dados do Azure para PostgreSQL continua a oferecer suporte ao gerenciamento robusto, seguro e eficiente de seus aplicativos de banco de dados.

Considerações específicas do Banco de Dados do Azure para servidor flexível PostgreSQL

A seguir está uma lista de extensões com suporte que exigem algumas considerações específicas quando usadas no serviço de servidor flexível Banco de Dados do Azure para PostgreSQL. A lista está ordenada por ordem alfabética.

dblink permite que você se conecte de uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL a outra ou a outro banco de dados no mesmo servidor. O servidor flexível do Banco de Dados do Azure para PostgreSQL dá suporte a conexões de entrada e saída para qualquer servidor PostgreSQL. O servidor de envio precisa permitir conexões de saída com o servidor de recebimento. Da mesma forma, o servidor de recebimento precisa permitir conexões do servidor de envio.

Recomendamos implantar seus servidores com integração de rede virtual se você planeja usar essa extensão. Por padrão, a integração de rede virtual permite conexões entre servidores na rede virtual. Você também pode optar por usar grupos de segurança de rede de rede virtual para personalizar o acesso.

pg_buffercache

pg_buffercache pode ser usado para estudar o conteúdo de shared_buffers. Usando esta extensão, você pode dizer se uma relação específica está armazenada em cache ou não (em shared_buffers). Essa extensão pode ajudá-lo a solucionar problemas de desempenho (problemas de desempenho relacionados ao cache).

Esta extensão é integrada com a instalação principal do PostgreSQL, e é fácil de instalar.

CREATE EXTENSION pg_buffercache;

pg_cron

pg_cron é um agendador de tarefas simples e baseado em cron para PostgreSQL que é executado dentro do banco de dados como uma extensão. A pg_cron extensão pode ser usada para executar tarefas de manutenção agendadas dentro de um banco de dados PostgreSQL. Por exemplo, você pode executar vácuo periódico de uma tabela ou remover trabalhos de dados antigos.

pg_cron pode executar vários trabalhos em paralelo, mas executa no máximo uma instância de um trabalho de cada vez. Se uma segunda execução deve começar antes que a primeira termine, a segunda execução é enfileirada e iniciada assim que a primeira é concluída. Dessa forma, garante-se que os trabalhos sejam executados exatamente quantas vezes forem programadas e não sejam executados simultaneamente com eles mesmos.

Alguns exemplos:

Para apagar dados antigos no sábado às 3h30 (GMT).

SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);

Para executar o vácuo todos os dias às 10:00 (GMT) no banco de dados postgrespadrão.

SELECT cron.schedule('0 10 * * *', 'VACUUM');

Para desagendar todas as tarefas de pg_cron.

SELECT cron.unschedule(jobid) FROM cron.job;

Para ver todos os trabalhos atualmente agendados com pg_crono .

SELECT * FROM cron.job;

Para executar vácuo todos os dias às 10:00 am (GMT) no banco de dados 'testcron' sob azure_pg_admin conta de função.

SELECT cron.schedule_in_database('VACUUM','0 10 * * * ','VACUUM','testcron',null,TRUE);

Nota

pg_cron extensão é pré-carregada para shared_preload_libraries cada instância de servidor flexível do Banco de Dados do Azure para PostgreSQL dentro do banco de dados postgres para fornecer a você a capacidade de agendar trabalhos para execução em outros bancos de dados dentro de sua instância de banco de dados flexível do Banco de Dados do Azure para PostgreSQL sem comprometer a segurança. No entanto, por razões de segurança, você ainda precisa permitir a extensão de lista e instalá-la usando o comando CREATE EXTENSION.pg_cron

A partir da pg_cron versão 1.4, você pode usar as cron.schedule_in_database funções e cron.alter_job para agendar seu trabalho em um banco de dados específico e atualizar uma agenda existente, respectivamente.

Alguns exemplos:

Para excluir dados antigos no sábado às 3:30am (GMT) no banco de dados DBName.

SELECT cron.schedule_in_database('JobName', '30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$,'DBName');

Nota

cron_schedule_in_database função permite o nome de usuário como parâmetro opcional. Definir o nome de usuário como um valor não nulo requer privilégio de superusuário PostgreSQL e não é suportado no Banco de Dados do Azure para servidor flexível PostgreSQL. Exemplos anteriores mostram a execução dessa função com o parâmetro opcional de nome de usuário ommited ou definido como null, que executa o trabalho no contexto do agendamento do usuário do trabalho, que deve ter privilégios de função azure_pg_admin.

Para atualizar ou alterar o nome da base de dados no agendamento existente

SELECT cron.alter_job(job_id:=MyJobID,database:='NewDBName');

pg_failover_slots

A extensão PG Failover Slots aprimora o Banco de Dados do Azure para servidor flexível PostgreSQL ao operar com replicação lógica e servidores habilitados para alta disponibilidade. Ele efetivamente aborda o desafio dentro do mecanismo PostgreSQL padrão que não preserva slots de replicação lógica após um failover. A manutenção desses slots é fundamental para evitar pausas de replicação ou incompatibilidades de dados durante alterações na função de servidor principal, garantindo a continuidade operacional e a integridade dos dados.

A extensão simplifica o processo de failover gerenciando a transferência, a limpeza e a sincronização necessárias dos slots de replicação, proporcionando assim uma transição perfeita durante as alterações de função de servidor. A extensão é suportada para PostgreSQL versões 11 a 16.

Você pode encontrar mais informações e como usar a extensão PG Failover Slots em sua página do GitHub.

Ativar pg_failover_slots

Para habilitar a extensão de Slots de Failover PG para sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL, você precisa modificar a configuração do servidor incluindo a extensão nas bibliotecas de pré-carregamento compartilhadas do servidor e ajustando um parâmetro de servidor específico. Segue-se o processo:

  1. Adicione pg_failover_slots às bibliotecas de pré-carregamento compartilhadas do servidor atualizando o shared_preload_libraries parâmetro.
  2. Altere o parâmetro hot_standby_feedback server para on.

Quaisquer alterações no parâmetro exigem uma reinicialização do shared_preload_libraries servidor para entrar em vigor.

Usando o portal do Azure:

  1. Selecione sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL.
  2. No menu de recursos, na seção Configurações , selecione Parâmetros do servidor.
  3. Procure o shared_preload_libraries parâmetro e edite seu valor para incluir pg_failover_slots.
  4. Procure o hot_standby_feedback parâmetro e defina seu valor como on.
  5. Selecione Salvar para preservar as alterações. Agora, você tem a opção de Salvar e reiniciar. Escolha esta opção para garantir que as alterações entrem em vigor, uma vez que a modificação shared_preload_libraries requer uma reinicialização do servidor.

Ao selecionar Salvar e reiniciar, o servidor é reinicializado automaticamente, aplicando as alterações que acabaram de ser feitas. Quando o servidor estiver online novamente, a extensão de Slots de Failover PG estará habilitada e operacional em sua instância de servidor flexível principal do Banco de Dados do Azure para PostgreSQL, pronta para lidar com slots de replicação lógica durante failovers.

pg_hint_plan

pg_hint_plan torna possível ajustar os planos de execução do PostgreSQL usando as chamadas "dicas" nos comentários SQL, como:

/*+ SeqScan(a) */

pg_hint_plan lê frases de sugestão em um comentário de forma especial fornecido com a instrução SQL de destino. A forma especial começa pela sequência de caracteres "/*+" e termina com "*/". As frases de dica consistem em nome de dica e seguintes parâmetros entre parênteses e delimitados por espaços. Novas linhas para legibilidade podem delimitar cada frase de sugestão.

Exemplo:

  /*+
      HashJoin(a b)
      SeqScan(a)
    */
    SELECT *
      FROM pgbench_branches b
      JOIN pgbench_accounts an ON b.bid = a.bid
     ORDER BY a.aid;

O exemplo anterior faz com que o planejador use os resultados de a seq scan na tabela a para ser combinado com a tabela b como um hash join.

Para instalá-pg_hint_plan, além disso, para permitir listá-lo, como mostrado em como usar extensões PostgreSQL, você precisa incluí-lo nas bibliotecas de pré-carregamento compartilhadas do servidor. Uma alteração no parâmetro do Postgres shared_preload_libraries requer uma reinicialização do servidor para entrar em vigor. Você pode alterar parâmetros usando o portal do Azure ou a CLI do Azure.

Usando o portal do Azure:

  1. Selecione sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL.
  2. No menu de recursos, na seção Configurações , selecione Parâmetros do servidor.
  3. Procure o shared_preload_libraries parâmetro e edite seu valor para incluir pg_hint_plan.
  4. Selecione Salvar para preservar as alterações. Agora, você tem a opção de Salvar e reiniciar. Escolha esta opção para garantir que as alterações entrem em vigor, uma vez que a modificação shared_preload_libraries requer uma reinicialização do servidor. Agora você pode habilitar pg_hint_plan seu Banco de Dados do Azure para banco de dados de servidor flexível PostgreSQL. Conecte-se ao banco de dados e emita o seguinte comando:
CREATE EXTENSION pg_hint_plan;

pg_prewarm

A pg_prewarm extensão carrega dados relacionais em cache. Pré-aquecer seus caches significa que suas consultas têm melhores tempos de resposta na primeira execução após uma reinicialização. A funcionalidade de pré-aquecimento automático não está atualmente disponível no Banco de Dados do Azure para servidor flexível PostgreSQL.

pg_repack

Uma pergunta típica que as pessoas fazem quando tentam usar essa extensão pela primeira vez é: pg_repack é uma extensão ou um executável do lado do cliente como psql ou pg_dump?

A resposta é que, na verdade, são as duas coisas. pg_repack/lib contém o código para a extensão, incluindo o esquema e os artefatos SQL que ele cria, e a biblioteca C implementando o código de várias dessas funções. Por outro lado, pg_repack/bin mantém o código para o aplicativo cliente, que sabe como interagir com os artefatos de programação criados pela extensão. Esta aplicação cliente visa facilitar a complexidade da interação com as diferentes interfaces apresentadas pela extensão do lado do servidor, oferecendo ao usuário algumas opções de linha de comando que são mais fáceis de entender. O aplicativo cliente sem a extensão criada no banco de dados para o qual é apontado, é inútil. A extensão do lado do servidor por si só seria totalmente funcional, mas exigiria que o usuário entendesse um padrão de interação complicado que consiste em executar consultas para recuperar dados que são usados como entrada para funções implementadas pela extensão.

Permissão negada para reempacotamento de esquema

A partir de agora, devido à maneira como concedemos permissões para o esquema de repack criado por essa extensão, só há suporte para executar pg_repack funcionalidade a partir do contexto do azure_pg_admin.

Você pode notar que se o proprietário de uma tabela, que não azure_pg_adminé, tenta executar pg_repack, eles acabam recebendo um erro como o seguinte:

NOTICE: Setting up workers.conns
ERROR: pg_repack failed with error: ERROR:  permission denied for schema repack
LINE 1: select repack.version(), repack.version_sql()

Para evitar esse erro, certifique-se de executar pg_repack a partir do contexto do azure_pg_admin.

pg_stat_statements

A extensão pg_stat_statements oferece uma visão de todas as consultas que foram executadas em seu banco de dados. Isso é útil para entender como é o desempenho da carga de trabalho de consulta em um sistema de produção.

A extensão pg_stat_statements é pré-carregada em shared_preload_libraries cada instância de servidor flexível do Banco de Dados do Azure para PostgreSQL para fornecer um meio de controlar estatísticas de execução de instruções SQL. No entanto, por razões de segurança, você ainda tem que permitir a listapg_stat_statements extensão e instalá-lo usando o comando CREATE EXTENSION. A configuração pg_stat_statements.track, que controla quais instruções são contadas pela extensão, assume topcomo padrão , o que significa que todas as instruções emitidas diretamente pelos clientes são rastreadas. Os outros dois níveis de rastreamento são none e all. Esta definição é configurável como parâmetro do servidor.

Existe um compromisso entre as informações de execução de consultas disponibilizadas pela extensão pg_stat_statements e o impacto no desempenho do servidor à medida que regista cada instrução SQL. Se você não estiver usando ativamente a pg_stat_statements extensão, recomendamos que defina pg_stat_statements.track como none. Alguns serviços de monitoramento de terceiros podem se basear pg_stat_statements para fornecer informações sobre o desempenho da consulta, portanto, confirme se esse é o seu caso ou não.

postgres_fdw

postgres_fdw permite que você se conecte de uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL a outra ou a outro banco de dados no mesmo servidor. O servidor flexível do Banco de Dados do Azure para PostgreSQL dá suporte a conexões de entrada e saída para qualquer servidor PostgreSQL. O servidor de envio precisa permitir conexões de saída com o servidor de recebimento. Da mesma forma, o servidor de recebimento precisa permitir conexões do servidor de envio.

Recomendamos implantar seus servidores com integração de rede virtual se você planeja usar essa extensão. Por padrão, a integração de rede virtual permite conexões entre servidores na rede virtual. Você também pode optar por usar grupos de segurança de rede de rede virtual para personalizar o acesso.

pgstattuple

Ao usar a extensão 'pgstattuple' para tentar obter estatísticas de tupla pg_toast de objetos mantidos no esquema nas versões do Postgres 11 a 13, você receberá um erro de "permissão negada para pg_toast de esquema".

Permissão negada para o esquema pg_toast

Os clientes que usam as versões 11 a 13 do PostgreSQL no Banco de Dados do Azure para Servidor Flexível não podem usar a pgstattuple extensão em objetos dentro do pg_toast esquema.

No PostgreSQL 16 e 17, a pg_read_all_data função é concedida automaticamente ao azure_pg_admin, permitindo pgstattuple funcionar corretamente. No PostgreSQL 14 e 15, os clientes podem conceder manualmente a pg_read_all_data função para azure_pg_admin obter o mesmo resultado. No entanto, no PostgreSQL 11 a 13, a pg_read_all_data função não existe.

Os clientes não podem conceder diretamente as permissões necessárias. Se você precisar ser capaz de executar pgstattuple para acessar objetos sob o esquema, prossiga para criar uma solicitação de suporte do pg_toast Azure.

Escala de tempoDB

TimescaleDB é um banco de dados de séries temporais que é empacotado como uma extensão para PostgreSQL. O TimescaleDB fornece funções analíticas orientadas ao tempo, otimizações e dimensiona o Postgres para cargas de trabalho de séries temporais. Saiba mais sobre TimescaleDB, uma marca registada da Timescale, Inc.

Instalar o TimescaleDB

Para instalar o TimescaleDB, além disso, para permitir listá-lo, como mostrado acima, você precisa incluí-lo nas bibliotecas de pré-carregamento compartilhadas do servidor. Uma alteração no parâmetro do Postgres shared_preload_libraries requer uma reinicialização do servidor para entrar em vigor. Você pode alterar parâmetros usando o portal do Azure ou a CLI do Azure.

Usando o portal do Azure:

  1. Selecione sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL.
  2. No menu de recursos, na seção Configurações , selecione Parâmetros do servidor.
  3. Procure o shared_preload_libraries parâmetro e edite seu valor para incluir TimescaleDB.
  4. Selecione Salvar para preservar as alterações. Agora, você tem a opção de Salvar e reiniciar. Escolha esta opção para garantir que as alterações entrem em vigor, uma vez que a modificação shared_preload_libraries requer uma reinicialização do servidor. Agora você pode habilitar o TimescaleDB em seu Banco de Dados do Azure para banco de dados de servidor flexível PostgreSQL. Conecte-se ao banco de dados e emita o seguinte comando:
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

Gorjeta

Se vir um erro, confirme que reiniciou o servidor depois de guardar shared_preload_libraries.

Agora você pode criar uma hipertabela TimescaleDB do zero ou migrar dados de séries cronológicas existentes no PostgreSQL.

Restaurar um banco de dados Timescale usando pg_dump e pg_restore

Para restaurar um banco de dados de Escala de tempo usando pg_dump e pg_restore, você deve executar dois procedimentos auxiliares no banco de dados de destino: timescaledb_pre_restore() e timescaledb_post restore().

Primeiro, prepare o banco de dados de destino:

--create the new database where you want to perform the restore
CREATE DATABASE tutorial;
\c tutorial --connect to the database
CREATE EXTENSION timescaledb;

SELECT timescaledb_pre_restore();

Agora você pode executar pg_dump no banco de dados original e, em seguida, fazer pg_restore. Após a restauração, execute o seguinte comando no banco de dados restaurado:

SELECT timescaledb_post_restore();

Para obter mais detalhes sobre o método de restauração com o banco de dados habilitado para Timescale, consulte a documentação do Timescale.

Restaurar um banco de dados Timescale usando timescaledb-backup

Durante a execução SELECT timescaledb_post_restore() do procedimento listado acima, você pode obter permissões negadas, erro ao atualizar o sinalizador timescaledb.restoreing. Isso se deve à permissão limitada ALTER DATABASE nos serviços de banco de dados Cloud PaaS. Nesse caso, você pode executar um método alternativo usando timescaledb-backup a ferramenta para fazer backup e restaurar o banco de dados Timescale. Timescaledb-backup é um programa para tornar o despejo e a restauração de um banco de dados TimescaleDB mais simples, menos propenso a erros e com melhor desempenho.
Para fazer isso, você deve fazer o seguinte

  1. Instale as ferramentas conforme detalhado aqui
    1. Criar um Banco de Dados do Azure de destino para PostgreSQL, instância de servidor flexível e banco de dados
    2. Habilite a extensão de escala de tempo como mostrado acima
    3. Conceder azure_pg_admin função ao usuário que será usada pelo ts-restore
    4. Execute ts-restore para restaurar o banco de dados

Mais detalhes sobre esses utilitários podem ser encontrados aqui.

Extensões e atualização da versão principal

O servidor flexível do Banco de Dados do Azure para PostgreSQL introduziu um recurso de atualização de versão principal in-loco que executa uma atualização in-loco da instância flexível do servidor do Banco de Dados do Azure para PostgreSQL com apenas um clique. A atualização da versão principal in-loco simplifica o processo de atualização flexível do servidor do Banco de Dados do Azure para PostgreSQL, minimizando a interrupção para usuários e aplicativos que acessam o servidor. A atualização da versão principal in-loco não suporta extensões específicas e há algumas limitações para atualizar determinadas extensões. As extensões anon, Apache AGE, dblink, orafce, pgaudit, postgres_fdw e Timescaledb não têm suporte para todas as versões flexíveis do Servidor do Banco de Dados do Azure para PostgreSQL ao usar o recurso de atualização de versão principal in-loco.