Estensioni di PostgreSQL in Database di Azure per PostgreSQL - Server flessibile

SI APPLICA A: Database di Azure per PostgreSQL - Server flessibile

Database di Azure per PostgreSQL server flessibile consente di estendere le funzionalità del database usando le estensioni. Le estensioni raggruppano più oggetti SQL correlati in un singolo pacchetto che possono essere caricati o rimossi dal database con un comando . Dopo il caricamento nel database, le estensioni funzionano come le funzionalità predefinite.

Come usare le estensioni di PostgreSQL

Prima di installare le estensioni in Database di Azure per PostgreSQL server flessibile, è necessario consentire l'elenco di queste estensioni da usare.

Tramite il portale di Azure:

  1. Selezionare l'istanza del server flessibile Database di Azure per PostgreSQL.
  2. Nella barra laterale selezionare Parametri del server.
  3. Cercare il azure.extensions parametro.
  4. Selezionare le estensioni da consentire. Screenshot che mostra Database di Azure per PostgreSQL server flessibile: estensioni di elenco elementi consentiti per l'installazione.

Uso dell'interfaccia della riga di comando di Azure:

È possibile consentire le estensioni dell'elenco tramite il comando set di parametri dell'interfaccia della riga di comando.

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>

Uso del modello di Resource Manager: esempio illustrato di seguito sono le estensioni dblink, dict_xsyn pg_buffercache nel server 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è un parametro di configurazione del server che determina quali librerie devono essere caricate all'avvio Database di Azure per PostgreSQL server flessibile. Tutte le librerie che usano la memoria condivisa devono essere caricate tramite questo parametro. Se l'estensione deve essere aggiunta alle librerie di precaricamento condiviso, è possibile eseguire questa azione:

Tramite il portale di Azure:

  1. Selezionare l'istanza del server flessibile Database di Azure per PostgreSQL.
  2. Nella barra laterale selezionare Parametri del server.
  3. Cercare il shared_preload_libraries parametro.
  4. Selezionare le estensioni da aggiungere. Screenshot che mostra Database di Azure per PostgreSQL impostazione del parametro delle librerie di precaricamento condiviso per l'installazione delle estensioni.

Uso dell'interfaccia della riga di comando di Azure:

È possibile impostare shared_preload_libraries tramite il comando set di parametri dell'interfaccia della riga di comando.

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>

Dopo aver consentito e caricato le estensioni, queste devono essere installate nel database prima di poterle usare. Per installare una particolare estensione, è necessario eseguire il comando CREATE EXTENSION . Questo comando carica gli oggetti in pacchetto nel database.

Nota

Le estensioni di terze parti offerte in Database di Azure per PostgreSQL server flessibile sono codice con licenza open source. Attualmente, non sono disponibili estensioni o versioni di estensioni di terze parti con modelli di licenza Premium o proprietari.

Database di Azure per PostgreSQL'istanza del server flessibile supporta un subset di estensioni PostgreSQL chiave, come illustrato di seguito. Queste informazioni sono disponibili anche eseguendo SHOW azure.extensions;. Le estensioni non elencate in questo documento non sono supportate nel server flessibile Database di Azure per PostgreSQL. Non è possibile creare o caricare un'estensione personalizzata in Database di Azure per PostgreSQL server flessibile.

Versioni dell'estensione

Le estensioni seguenti sono disponibili in Database di Azure per PostgreSQL server flessibile:

Nota

Le estensioni nella tabella seguente con il contrassegno richiedono l'abilitazione ✔️ delle librerie corrispondenti nel parametro del server shared_preload_libraries.

Nome dell'estensione Descrizione PostgreSQL 16 PostgreSQL 15 PostgreSQL 14 PostgreSQL 13 PostgreSQL 12 PostgreSQL 11
address_standardizer Consente di analizzare un indirizzo nei suoi elementi costitutivi. In genere è utilizzata per supportare il passaggio di normalizzazione dell'indirizzo nella geocodifica. 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
address_standardizer_data_us Esempio di set di dati Address Standardizer US 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
amcheck Funzioni per la verifica dell'integrità delle relazioni 1.3 1.3 1.3 1.2 1.2 1.1
anon (anteprima) Strumenti di anonimizzazione dei dati 1.2.0 ✔️ 1.2.0 ✔️ 1.2.0 ✔️ 1.2.0 ✔️ 1.2.0 ✔️ 1.2.0 ✔️
azure_ai Integrazione di Machine Learning Services e intelligenza artificiale di Azure per PostgreSQL 1.0.0 1.0.0 1.0.0 1.0.0 N/D N/D
azure_storage Integrazione di Azure per PostgreSQL 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ N/D
bloom Metodo di accesso Bloom - Indice basato su file di firma 1.0 1.0 1.0 1.0 1.0 1.0
btree_gin Supporto per l'indicizzazione di tipi di dati comuni in GIN 1.3 1.3 1.3 1.3 1.3 1.3
btree_gist Supporto per l'indicizzazione di tipi di dati comuni in GiST 1,7 1,7 1.6 1,5 1,5 1,5
citext Tipo di dati per stringhe di caratteri senza distinzione tra maiuscole e minuscole 1.6 1.6 1.6 1.6 1.6 1,5
cube Tipo di dati per cubi multidimensionali 1,5 1,5 1,5 1.4 1.4 1.4
dblink Connessione ad altri database PostgreSQL dall'interno di un database 1.2 1.2 1.2 1.2 1.2 1.2
dict_int Modello di dizionario di ricerca del testo per numeri interi 1.0 1.0 1.0 1.0 1.0 1.0
dict_xsyn Modello di dizionario di ricerca del testo per l'elaborazione dei sinonimi estesa 1.0 1.0 1.0 1.0 1.0 1.0
earthdistance Calcolare grandi distanze circolari sulla superficie della Terra 1.1 1.1 1.1 1.1 1.1 1.1
fuzzystrmatch Determinare analogie e distanza tra stringhe 1.2 1.1 1.1 1.1 1.1 1.1
hstore Tipo di dati per l'archiviazione di set di coppie (chiave, valore) 1.8 1.8 1.8 1,7 1.6 1,5
hypopg Indici ipotetici per PostgreSQL 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0
intagg Aggregatore intero ed enumeratore (obsoleto) 1.1 1.1 1.1 1.1 1.1 1.1
intarray Funzioni, operatori e supporto dell'indice per matrici 1D di numeri interi 1,5 1,5 1,5 1.3 1.2 1.2
isn Tipi di dati per standard internazionali di numerazione dei prodotti 1.2 1.2 1.2 1.2 1.2 1.2
lo Manutenzione di oggetti di grandi dimensioni 1.1 1.1 1.1 1.1 1.1 1.1
login_hook Login_hook : hook per eseguire login_hook.login() al momento dell'accesso 1,5 1.4 1.4 1.4 1.4 1.4
ltree Tipo di dati per strutture ad albero gerarchico 1.2 1.2 1.2 1.2 1.1 1.1
orafce Funzioni e operatori che emulano un subset di funzioni e pacchetti da Oracle RDBMS 4.4 3.24 3.18 3.18 3.18 3.7
pageinspect Esaminare il contenuto delle pagine del database a un livello basso 1.12 1.11 1,9 1.8 1,7 1,7
pgaudit Fornisce funzionalità di controllo 16.0 ✔️ 1.7 ✔️ 1.6.2 ✔️ 1.5 ✔️ 1.4 ✔️ 1.3.2 ✔️
pg_buffercache Esaminare la cache del buffer condiviso 1.4 1.3 1.3 1.3 1.3 1.3
pg_cron Utilità di pianificazione dei processi per PostgreSQL 1.5 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️
pgcrypto Funzioni crittografiche 1.3 1.3 1.3 1.3 1.3 1.3
pg_failover_slots (anteprima) Gestione slot di replica logica per scopi di failover 1.0.1 1.0.1 1.0.1 1.0.1 1.0.1 1.0.1
pg_freespacemap Esaminare la mappa dello spazio disponibile (FSM) 1.2 1.2 1.2 1.2 1.2 1.2
pg_hint_plan Consente di modificare i piani di esecuzione di PostgreSQL usando i cosiddetti hint nei commenti SQL. 1.6.0 ✔️ 1.5 ✔️ 1.4 ✔️ 1.3.7 ✔️ 1.3.7 ✔️ 1.3.7 ✔️
pglogical Replica logica PostgreSQL 2.4.4 ✔️ 2.4.2 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️
pg_partman Estensione per gestire le tabelle partizionate in base all'ora o all'ID 4.7.1 ✔️ 4.7.1 ✔️ 4.6.1 ✔️ 4.5.0 ✔️ 4.5.0 ✔️ 4.5.0 ✔️
pg_prewarm Dati di relazione prewarm 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️
pg_repack Riorganizzare le tabelle nei database PostgreSQL con blocchi minimi 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7
pgrouting Estensione PgRouting N/D 3.5.0 3.3.0 3.3.0 3.3.0 3.3.0
pgrowlocks Mostra informazioni sul blocco a livello di riga 1.2 1.2 1.2 1.2 1.2 1.2
pg_squeeze Strumento per rimuovere lo spazio inutilizzato da una relazione. 1.6 ✔️ 1.6 ✔️ 1.5 ✔️ 1.5 ✔️ 1.5 ✔️ 1.5 ✔️
pg_stat_statements Tenere traccia delle statistiche di pianificazione ed esecuzione di tutte le istruzioni SQL eseguite 1.10 ✔️ 1.10 ✔️ 1.9 ✔️ 1.8 ✔️ 1.7 ✔️ 1.6 ✔️
pgstattuple Mostra statistiche a livello di tupla 1,5 1,5 1,5 1,5 1,5 1,5
pg_trgm Misurazione della somiglianza del testo e ricerca di indici in base ai trigrammi 1.6 1.6 1.6 1,5 1.4 1.4
pg_visibility Esaminare la mappa di visibilità e le informazioni di visibilità a livello di pagina 1.2 1.2 1.2 1.2 1.2 1.2
plpgsql Linguaggio procedurale PL/pgSQL 1.0 1.0 1.0 1.0 1.0 1.0
plv8 Linguaggio procedurale attendibile PL/JavaScript (v8) 3.1.7 3.1.7 3.0.0 3.0.0 3.0.0 3.0.0
Postgis Funzioni e tipi spaziali di geometria postGIS e geografia 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_raster Tipi e funzioni raster PostGIS 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_sfcgal Funzioni PostGIS SFCGAL 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_tiger_geocoder Geocoder tiger postGIS e geocoder inverso 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_topology Funzioni e tipi spaziali di topologia PostGIS 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgres_fdw Wrapper di dati stranieri per server PostgreSQL remoti 1.1 1.1 1.1 1.0 1.0 1.0
semver Tipo di dati della versione semantica 0.32.1 0.32.0 0.32.0 0.32.0 0.32.0 0.32.0
session_variable Session_variable - Registrazione e manipolazione di variabili e costanti di sessione 3.3 3.3 3.3 3.3 3.3 3.3
sslinfo Informazioni sui certificati SSL 1.2 1.2 1.2 1.2 1.2 1.2
tablefunc Funzioni che modificano intere tabelle, inclusi i campi incrociati 1.0 1.0 1.0 1.0 1.0 1.0
tds_fdw Wrapper di dati esterno per l'esecuzione di query su un database TDS (Sybase o Microsoft SQL Server) 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3
timescaledb Abilita inserimenti scalabili e query complesse per i dati delle serie temporali N/D 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 2.10.0 ✔️ 1.7.4 ✔️
tsm_system_rows Metodo TABLESAMPLE che accetta il numero di righe come limite 1.0 1.0 1.0 1.0 1.0 1.0
tsm_system_time Metodo TABLESAMPLE che accetta il tempo in millisecondi come limite 1.0 1.0 1.0 1.0 1.0 1.0
unaccent Dizionario di ricerca del testo che rimuove gli accenti 1.1 1.1 1.1 1.1 1.1 1.1
uuid-ossp Generare identificatori universalmente univoci (UUID) 1.1 1.1 1.1 1.1 1.1 1.1
vector Tipi di dati vettoriali e metodi di accesso ivfflat e hnsw 0.6.1 0.6.1 0.6.1 0.6.1 0.6.1 0.5.1

dblink e postgres_fdw consentono di connettersi da un'istanza del server flessibile Database di Azure per PostgreSQL a un'altra o a un altro database nello stesso server. Database di Azure per PostgreSQL server flessibile supporta connessioni sia in ingresso che in uscita a qualsiasi server PostgreSQL. Il server di invio deve consentire le connessioni in uscita al server ricevente. Analogamente, il server ricevente deve consentire le connessioni dal server di invio.

È consigliabile distribuire i server con l'integrazione della rete virtuale se si prevede di usare queste due estensioni. Per impostazione predefinita, l'integrazione della rete virtuale consente le connessioni tra server nella rete virtuale. È anche possibile scegliere di usare i gruppi di sicurezza di rete virtuale per personalizzare l'accesso.

pg_prewarm

L'estensione pg_prewarm carica i dati relazionali nella cache. La prewarming delle cache significa che le query hanno tempi di risposta migliori alla prima esecuzione dopo un riavvio. La funzionalità di preavviso automatico non è attualmente disponibile in Database di Azure per PostgreSQL server flessibile.

pg_cron

pg_cron è un'utilità di pianificazione dei processi semplice basata su cron per PostgreSQL che viene eseguita all'interno del database come estensione. L'estensione pg_cron può essere usata per eseguire attività di manutenzione pianificate all'interno di un database PostgreSQL. Ad esempio, è possibile eseguire un vuoto periodico di una tabella o rimuovere processi di dati obsoleti.

pg_cron può eseguire più processi in parallelo, ma viene eseguita al massimo un'istanza di un processo alla volta. Se si prevede che una seconda esecuzione venga avviata prima del completamento del primo, la seconda esecuzione viene accodata e avviata non appena viene completata la prima esecuzione. In questo modo, i processi vengono eseguiti esattamente come pianificati e non vengono eseguiti simultaneamente con se stessi.

Alcuni esempi:

Per eliminare i vecchi dati il sabato alle 3:30 (GMT)

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

Per eseguire vuoto ogni giorno alle 10:00 (GMT) nel database predefinito 'postgres'

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

Per annullare la configurazione di tutte le attività da pg_cron

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

Per visualizzare tutti i processi attualmente pianificati con pg_cron

SELECT * FROM cron.job;

Per eseguire vacuum ogni giorno alle 10:00 (GMT) nel database 'testcron' in azure_pg_admin account del ruolo

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

Nota

pg_cron'estensione viene precaricata in shared_preload_libraries per ogni istanza del server flessibile Database di Azure per PostgreSQL all'interno del database postgres per consentire l'esecuzione di processi in altri database all'interno dell'istanza del database del server flessibile Database di Azure per PostgreSQL senza compromettere la sicurezza. Tuttavia, per motivi di sicurezza, è comunque necessario consentire l'elenco pg_cron'estensione e installarla usando il comando CREATE EXTENSION.

A partire da pg_cron versione 1.4, è possibile usare rispettivamente le funzioni cron.schedule_in_database e cron.alter_job per pianificare il processo in un database specifico e aggiornare una pianificazione esistente.

Di seguito alcuni esempi:

Per eliminare i dati precedenti il sabato alle 3:30 (GMT) nel database 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 funzione consente il nome utente come parametro facoltativo. L'impostazione del nome utente su un valore non Null richiede privilegi avanzati postgreSQL e non è supportata in Database di Azure per PostgreSQL server flessibile. Gli esempi precedenti mostrano l'esecuzione di questa funzione con il parametro facoltativo del nome utente ommitted o impostato su null, che esegue il processo nel contesto della pianificazione utente del processo, che deve avere azure_pg_admin privilegi di ruolo.

Per aggiornare o modificare il nome del database per la pianificazione esistente

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

pg_failover_slots (anteprima)

L'estensione Slot di failover PG migliora Database di Azure per PostgreSQL server flessibile quando si utilizzano sia la replica logica che i server abilitati per la disponibilità elevata. Risolve in modo efficace la sfida all'interno del motore PostgreSQL standard che non mantiene gli slot di replica logica dopo un failover. La gestione di questi slot è fondamentale per impedire le pause di replica o le mancate corrispondenze dei dati durante le modifiche del ruolo del server primario, garantendo la continuità operativa e l'integrità dei dati.

L'estensione semplifica il processo di failover gestendo il trasferimento, la pulizia e la sincronizzazione necessari degli slot di replica, offrendo così una transizione senza problemi durante le modifiche del ruolo del server. L'estensione è supportata per PostgreSQL versioni da 16 a 11.

Altre informazioni e come usare l'estensione Pg Failover Slots (Slot di failover PG) sono disponibili nella pagina GitHub.

Abilitare pg_failover_slots

Per abilitare l'estensione PG Failover Slots per l'istanza del server flessibile Database di Azure per PostgreSQL, è necessario modificare la configurazione del server includendo l'estensione nelle librerie di precaricamento condiviso del server e modificando un parametro server specifico. È necessario eseguire le operazioni seguenti:

  1. Aggiungere pg_failover_slots alle librerie di precaricamento condiviso del server aggiornando il shared_preload_libraries parametro .
  2. Modificare il parametro hot_standby_feedback del server in on.

Per rendere effettive le modifiche apportate al shared_preload_libraries parametro, è necessario riavviare il server.

Seguire questa procedura nel portale di Azure:

  1. Accedere al portale di Azure e passare alla pagina dell'istanza del server flessibile Database di Azure per PostgreSQL.
  2. Nel menu a sinistra selezionare Parametri del server.
  3. Trovare il parametro nell'elenco e modificarne il shared_preload_libraries valore in modo da includere pg_failover_slots.
  4. Cercare il parametro e impostarne il hot_standby_feedback valore su on.
  5. Selezionare Salva per mantenere le modifiche. A questo punto, si avrà la possibilità di salvare e riavviare. Scegliere questa opzione per assicurarsi che le modifiche siano effettive shared_preload_libraries perché la modifica richiede un riavvio del server.

Selezionando Salva e riavvia, il server verrà riavviato automaticamente, applicando le modifiche apportate. Quando il server è di nuovo online, l'estensione PG Failover Slots è abilitata e operativa nell'istanza primaria del server flessibile Database di Azure per PostgreSQL, pronta per gestire gli slot di replica logica durante i failover.

pg_stat_statements

L'estensione pg_stat_statements offre una visualizzazione di tutte le query eseguite nel database. Ciò è utile per comprendere l'aspetto delle prestazioni del carico di lavoro delle query in un sistema di produzione.

L'estensione pg_stat_statements viene precaricata in shared_preload_libraries in ogni istanza del server flessibile Database di Azure per PostgreSQL per fornire un mezzo per tenere traccia delle statistiche di esecuzione delle istruzioni SQL. Tuttavia, per motivi di sicurezza, è comunque necessario consentire l'elencopg_stat_statements'estensione e installarla usando il comando CREATE EXTENSION . L'impostazione pg_stat_statements.track, che controlla le istruzioni conteggiate mediante l'estensione, è impostata su top. Ciò consente di rilevare tutte le istruzioni eseguite direttamente dai client. Gli altri due livelli di rilevamento sono none e all. Questa impostazione è configurabile come parametro del server.

Esiste un compromesso tra le informazioni sull'esecuzione delle query pg_stat_statements fornisce e l'impatto sulle prestazioni del server durante la registrazione di ogni istruzione SQL. Se non si usa attivamente l'estensione pg_stat_statements, è consigliabile impostare pg_stat_statements.track su none. Alcuni servizi di monitoraggio di terze parti potrebbero basarsi su pg_stat_statements per fornire informazioni dettagliate sulle prestazioni delle query, quindi verificare se questo è il caso per l'utente o meno.

TimescaleDB

TimescaleDB è un database time series che viene creato in un pacchetto come estensione per PostgreSQL. TimescaleDB offre funzioni analitiche orientate al tempo, ottimizzazioni e scalabilità di Postgres per carichi di lavoro di serie temporali. Altre informazioni su TimescaleDB, un marchio registrato di Timescale, Inc. Database di Azure per PostgreSQL server flessibile fornisce l'edizione TimescaleDB Apache-2.

Installare TimescaleDB

Per installare TimescaleDB, inoltre, per consentire l'inserimento nell'elenco, come illustrato in precedenza, è necessario includerlo nelle librerie di precaricamento condiviso del server. Per rendere effettiva una modifica al parametro di shared_preload_libraries Postgres, è necessario riavviare il server. È possibile modificare i parametri usando il portale di Azure o l'interfaccia della riga di comando di Azure. Tramite il portale di Azure:

  1. Selezionare l'istanza del server flessibile Database di Azure per PostgreSQL.

  2. Nella barra laterale selezionare Parametri del server.

  3. Cercare il shared_preload_libraries parametro.

  4. Selezionare TimescaleDB.

  5. Selezionare Salva per mantenere le modifiche. Una volta salvata la modifica, si riceve una notifica.

  6. Dopo la notifica, riavviare il server per applicare queste modifiche.

È ora possibile abilitare TimescaleDB nel database del server flessibile Database di Azure per PostgreSQL. Connessione al database ed eseguire il comando seguente:

CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

Suggerimento

Se viene visualizzato un errore, verificare che il server sia stato riavviato dopo il salvataggio shared_preload_libraries.

È ora possibile creare un'hypertable TimescaleDB da zero o eseguire la migrazione dei dati delle serie temporali esistenti in PostgreSQL.

Ripristinare un database di scala cronologica usando pg_dump e pg_restore

Per ripristinare un database di scala cronologica usando pg_dump e pg_restore, è necessario eseguire due procedure helper nel database di destinazione: timescaledb_pre_restore() e timescaledb_post restore().

Preparare prima di tutto il database di destinazione:

--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();

È ora possibile eseguire pg_dump nel database originale e quindi eseguire pg_restore. Dopo il ripristino, assicurarsi di eseguire il comando seguente nel database ripristinato:

SELECT timescaledb_post_restore();

Per altre informazioni sul metodo di ripristino con il database abilitato per La scalabilità cronologica, vedere la documentazione sulla scalabilità cronologica

Ripristinare un database di scala cronologica usando timescaledb-backup

Durante l'esecuzione della SELECT timescaledb_post_restore() procedura precedente è possibile ottenere autorizzazioni negate durante l'aggiornamento del flag timescaledb.restore. Ciò è dovuto all'autorizzazione ALTER DATABA edizione Standard limitata nei servizi di database PaaS cloud. In questo caso è possibile eseguire un metodo alternativo usando timescaledb-backup lo strumento per eseguire il backup e il ripristino del database di scala cronologica. Timescaledb-backup è un programma per rendere il dump e il ripristino di un database TimescaleDB più semplice, meno soggetto a errori e prestazioni più elevate.
A tale scopo, eseguire le operazioni seguenti

  1. Installare gli strumenti come descritto qui
  2. Creare un database e un'istanza del server flessibile Database di Azure per PostgreSQL di destinazione
  3. Abilitare l'estensione Scala cronologica come illustrato in precedenza
  4. Concedere azure_pg_admin ruolo all'utente che verrà usato da ts-restore
  5. Eseguire ts-restore per ripristinare il database

Altre informazioni su queste utilità sono disponibili qui.

Nota

Quando si usano timescale-backup le utilità per eseguire il ripristino in Azure, poiché i nomi utente del database per Database di Azure per PostgreSQL server singolo devono usare il formato , è necessario sostituire @ con %40 la <user@db-name> codifica dei caratteri.

pg_hint_plan

pg_hint_plan consente di modificare i piani di esecuzione di PostgreSQL usando i cosiddetti "hint" nei commenti SQL, ad esempio

/*+ SeqScan(a) */

pg_hint_plan legge frasi di hint in un commento di forma speciale specificata con l'istruzione SQL di destinazione. La forma speciale inizia dalla sequenza di caratteri "/*+" e termina con "*/". Le frasi hint sono costituite dal nome dell'hint e dai parametri seguenti racchiusi tra parentesi e delimitati da spazi. Le nuove righe per la leggibilità possono delimitare ogni frase di hint.

Esempio:

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

L'esempio precedente fa in modo che l'utilità di pianificazione usi i risultati di un seq scan oggetto nella tabella a da combinare con la tabella b come .hash join

Per installare pg_hint_plan, inoltre, per consentire l'inserimento nell'elenco, come illustrato in precedenza, è necessario includerlo nelle librerie di precaricamento condiviso del server. Per rendere effettiva una modifica al parametro di shared_preload_libraries Postgres, è necessario riavviare il server. È possibile modificare i parametri usando il portale di Azure o l'interfaccia della riga di comando di Azure. Tramite il portale di Azure:

  1. Selezionare l'istanza del server flessibile Database di Azure per PostgreSQL.

  2. Nella barra laterale selezionare Parametri del server.

  3. Cercare il shared_preload_libraries parametro.

  4. Selezionare pg_hint_plan.

  5. Selezionare Salva per mantenere le modifiche. Una volta salvata la modifica, si riceve una notifica.

  6. Dopo la notifica, riavviare il server per applicare queste modifiche.

È ora possibile abilitare pg_hint_plan database del server flessibile Database di Azure per PostgreSQL. Connessione al database ed eseguire il comando seguente:

CREATE EXTENSION  pg_hint_plan ;

pg_buffercache

Pg_buffercache può essere utilizzato per studiare il contenuto di shared_buffers. Usando questa estensione è possibile stabilire se una determinata relazione viene memorizzata nella cache o meno (in shared_buffers). Questa estensione consente di risolvere i problemi di prestazioni (problemi di prestazioni correlati alla memorizzazione nella cache)

Questo fa parte di contrib ed è facile installare questa estensione.

CREATE EXTENSION pg_buffercache;

Estensioni e aggiornamento della versione principale

Database di Azure per PostgreSQL server flessibile ha introdotto una funzionalità di aggiornamento della versione principale sul posto che esegue un aggiornamento sul posto dell'istanza del server flessibile Database di Azure per PostgreSQL con un semplice clic. L'aggiornamento della versione principale sul posto semplifica il processo di aggiornamento flessibile del server Database di Azure per PostgreSQL, riducendo al minimo l'interruzione per utenti e applicazioni che accedono al server. L'aggiornamento della versione principale sul posto non supporta estensioni specifiche e esistono alcune limitazioni per l'aggiornamento di determinate estensioni. Le estensioni Timescaledb, pgaudit, dblink, orafce e postgres_fdw non sono supportate per tutte le versioni server flessibili Database di Azure per PostgreSQL quando si usa la funzionalità di aggiornamento della versione principale sul posto.