Share 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.
  2. Na barra lateral, selecione Parâmetros do servidor.
  3. Procure o azure.extensions parâmetro.
  4. Selecione as extensões que deseja permitirlistar. 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 <your resource group>  --server-name <your server name> --subscription <your subscription id> --name azure.extensions --value <extension name>,<extension name>

Usando o modelo ARM: Exemplo mostrado abaixo allowlists extensões dblink, dict_xsyn, pg_buffercache no servidor mypostgreserver

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "flexibleServers_name": {
            "defaultValue": "mypostgreserver",
            "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 do servidor que determina quais bibliotecas devem ser carregadas quando o Banco de Dados do Azure para o servidor flexível 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, esta ação pode ser feita:

Usando o portal do Azure:

  1. Selecione sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL.
  2. Na barra lateral, selecione Parâmetros do servidor.
  3. Procure o shared_preload_libraries parâmetro.
  4. Selecione as extensões que deseja adicionar. Captura de ecrã a mostrar a definição de parâmetros de bibliotecas de pré-carregamento partilhadas da Base de Dados do Azure para PostgreSQL para instalação de extensões.

Usando a CLI do Azure:

Você pode definir shared_preload_libraries através do comando CLI parameter set.

az postgres flexible-server parameter set --resource-group <your resource group>  --server-name <your server name> --subscription <your subscription id> --name shared_preload_libraries --value <extension name>,<extension name>

Depois que as extensões são permitidas listadas e carregadas, elas devem ser instaladas em seu banco de dados antes que você possa usá-las. 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 chave do PostgreSQL, conforme listado abaixo. 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 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.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.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
Amcheck Funções para verificar a integridade da relação 1.3 1.3 1.3 1.2 1.2 1.1
azure_ai Integração dos Serviços de IA e ML do Azure para PostgreSQL 1.0.0 1.1.0 1.0.0 1.0.0 1.0.0 N/A
azure_storage Integração do Azure para PostgreSQL 1,4 ✔️ 1,4 ✔️ 1,4 ✔️ 1,4 ✔️ 1,4 ✔️ 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
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
btree_gist Suporte para indexação de tipos de dados comuns no GiST 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.5
cubo Tipo de dados para cubos multidimensionais 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
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
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
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
Fuzzystrmatch Determinar semelhanças e distância entre cadeias de caracteres 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.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
Intagg Agregador e enumerador de números inteiros (obsoleto) 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.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
lo Manutenção de objetos grandes 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.4 1.4 1.4 1.4 1.4
ltree Tipo de dados para estruturas hierárquicas semelhantes a árvores 1.2 1.2 1.2 1.2 1.1 1.1
orafce Funções e operadores que emulam um subconjunto de funções e pacotes do Oracle RDBMS 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.11 1.9 1.8 1.7 1.7
PGAUDIT Fornece funcionalidade de auditoria 16,0 ✔️ 1,7 ✔️ 1.6.2 ✔️ 1,5 ✔️ 1,4 ✔️ 1.3.2 ✔️
pg_buffercache Examine o cache de buffer compartilhado 1.4 1.3 1.3 1.3 1.3 1.3
pg_cron Agendador de tarefas para PostgreSQL 1,5 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️
PGPcrypto Funções criptográficas 1.3 1.3 1.3 1.3 1.3 1.3
pg_failover_slots (Pré-visualização) Gerenciador de slots de replicação lógica para fins de failover 1.0.1 ✔️ 1.0.1 ✔️ 1.0.1 ✔️ 1.0.1 ✔️ 1.0.1 ✔️ 1.0.1 ✔️
pg_freespacemap Examine o mapa de espaço livre (FSM) 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.6.0 ✔️ 1,5 ✔️ 1,4 ✔️ 1.3.7 ✔️ 1.3.7 ✔️ 1.3.7 ✔️
pglogical Replicação lógica PostgreSQL 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 4.7.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 ✔️
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
pgrouting Extensão PgRouting 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
pg_squeeze Uma ferramenta para remover o espaço não utilizado de uma relação. 1,6 ✔️ 1,6 ✔️ 1,5 ✔️ 1,5 ✔️ 1,5 ✔️ 1,5 ✔️
pg_stat_statements Acompanhe o planejamento e as estatísticas de execução de todas as instruções SQL executadas 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
pg_trgm Medição da semelhança de texto e pesquisa de índice com base em trigramas 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
plpgsql Linguagem processual PL/pgSQL 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.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.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.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_sfcgal Funções SFCGAL PostGIS 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.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.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.0 1.0 1.0
semver Tipo de dados de versão semântica 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
sslinfo Informações sobre certificados SSL 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
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
Escala de tempoDB Permite inserções escaláveis e consultas complexas para dados de séries cronológicas 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
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
sem sotaque Dicionário de pesquisa de texto que remove acentos 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
vetor Tipo de dados vetoriais e métodos de acesso ivfflat e hnsw 0.6.1 0.6.1 0.6.1 0.6.1 0.6.1 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 versão específica: O comando não suporta a atualização para versões intermediárias de uma extensão. Ele sempre será atualizado 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.

Visualizando extensões instaladas

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

SELECT * FROM pg_extension;

Versões de extensão disponíveis

Para verificar quais versões de uma extensão estão disponíveis para a instalação atual do banco de dados, 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.

dblink e postgres_fdw permitem que você se conecte de uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL para outra ou para 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 essas duas extensões. 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_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_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. Isso garante 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 (pré-visualização)

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.

Siga os passos abaixo no portal do Azure:

  1. Entre no portal do Azure e vá para a página da instância flexível do servidor do Banco de Dados do Azure para PostgreSQL.
  2. No menu à esquerda, selecione Parâmetros do servidor.
  3. Encontre o shared_preload_libraries parâmetro na lista 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ê terá 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 será reinicializado automaticamente, aplicando as alterações 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_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.

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. Na barra lateral, selecione Parâmetros do servidor.

  3. Procure o shared_preload_libraries parâmetro.

  4. Selecione TimescaleDB.

  5. Selecione Salvar para preservar as alterações. Você recebe uma notificação assim que a alteração é salva.

  6. Após a notificação, reinicie o servidor para aplicar essas alterações.

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'll 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
  2. Criar um Banco de Dados do Azure de destino para PostgreSQL, instância de servidor flexível e banco de dados
  3. Habilite a extensão de escala de tempo como mostrado acima
  4. Conceder azure_pg_admin função ao usuário que será usada pelo ts-restore
  5. Execute ts-restore para restaurar o banco de dados

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

Nota

Ao usar timescale-backup utilitários para restaurar no Azure, como os nomes de usuário do banco de dados para o servidor único do Banco de Dados do Azure para PostgreSQL devem usar o <user@db-name> formato, você precisa substituir @ por %40 codificação de caracteres.

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 acima 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 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. Na barra lateral, selecione Parâmetros do servidor.

  3. Procure o shared_preload_libraries parâmetro.

  4. Selecione pg_hint_plan.

  5. Selecione Salvar para preservar as alterações. Você recebe uma notificação assim que a alteração é salva.

  6. Após a notificação, reinicie o servidor para aplicar essas alterações.

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_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).

Isso faz parte do contrib, e é fácil instalar essa extensão.

CREATE EXTENSION pg_buffercache;

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 Timescaledb, pgaudit, dblink, orafce e postgres_fdw 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.