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:
- Selezionare l'istanza del server flessibile Database di Azure per PostgreSQL.
- Nella barra laterale selezionare Parametri del server.
- Cercare il
azure.extensions
parametro. - Selezionare le estensioni da consentire.
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:
- Selezionare l'istanza del server flessibile Database di Azure per PostgreSQL.
- Nella barra laterale selezionare Parametri del server.
- Cercare il
shared_preload_libraries
parametro. - Selezionare le estensioni da aggiungere.
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 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 |
azure_ai | Integrazione di Machine Learning Services e intelligenza artificiale di Azure per PostgreSQL | 1.0.0 | 1.1.0 | 1.0.0 | 1.0.0 | 1.0.0 | 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 | 2.13.0 ✔️ | 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 |
Aggiornamento delle estensioni PostgreSQL
Gli aggiornamenti sul posto delle estensioni di database sono consentiti tramite un semplice comando. Questa funzionalità consente ai clienti di aggiornare automaticamente le estensioni di terze parti alle versioni più recenti, mantenendo sistemi correnti e sicuri senza sforzo manuale.
Aggiornamento delle estensioni
Per aggiornare un'estensione installata alla versione più recente disponibile supportata da Azure, usare il comando SQL seguente:
ALTER EXTENSION <extension-name> UPDATE;
Questo comando semplifica la gestione delle estensioni di database consentendo agli utenti di eseguire manualmente l'aggiornamento alla versione più recente approvata da Azure, migliorando sia la compatibilità che la sicurezza.
Limiti
Durante l'aggiornamento delle estensioni è semplice, esistono alcune limitazioni:
- Selezione della versione specifica: il comando non supporta l'aggiornamento alle versioni intermedie di un'estensione. Verrà sempre aggiornato alla versione più recente disponibile.
- Downgrade: non supporta il downgrade di un'estensione a una versione precedente. Se è necessario un downgrade, potrebbe richiedere assistenza di supporto e dipende dalla disponibilità della versione precedente.
Visualizzazione delle estensioni installate
Per elencare le estensioni attualmente installate nel database, usare il comando SQL seguente:
SELECT * FROM pg_extension;
Versioni dell'estensione disponibili
Per verificare quali versioni di un'estensione sono disponibili per l'installazione corrente del database, eseguire:
SELECT * FROM pg_available_extensions WHERE name = 'azure_ai';
Questi comandi forniscono informazioni dettagliate necessarie sulle configurazioni delle estensioni del database, consentendo di mantenere i sistemi in modo efficiente e sicuro. Abilitando semplici aggiornamenti alle versioni più recenti dell'estensione, Database di Azure per PostgreSQL continua a supportare la gestione affidabile, sicura ed efficiente delle applicazioni di database.
dblink e postgres_fdw
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 pianificata 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 postgres
predefinito.
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'estensione dell'elencopg_cron
e installarla usando il comando CREATE EXTENSION.
pg_cron
A partire dalla versione 1.4, è possibile usare le cron.schedule_in_database
funzioni e cron.alter_job
per pianificare il processo in un database specifico e aggiornare rispettivamente una pianificazione esistente.
Alcuni esempi:
Per eliminare i vecchi dati 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
la 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 11 a 16.
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:
- Aggiungere
pg_failover_slots
alle librerie di precaricamento condiviso del server aggiornando ilshared_preload_libraries
parametro . - Modificare il parametro
hot_standby_feedback
del server inon
.
Per rendere effettive le modifiche apportate al shared_preload_libraries
parametro, è necessario riavviare il server.
Seguire questa procedura nel portale di Azure:
- Accedere al portale di Azure e passare alla pagina dell'istanza del server flessibile Database di Azure per PostgreSQL.
- Nel menu a sinistra selezionare Parametri del server.
- Trovare il parametro nell'elenco e modificarne il
shared_preload_libraries
valore in modo da includerepg_failover_slots
. - Cercare il parametro e impostarne il
hot_standby_feedback
valore suon
. - 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
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.
È necessario trovare un compromesso tra le informazioni sull'esecuzione di query fornite da pg_stat_statements
e l'impatto della registrazione di ogni istruzione SQL sulle prestazioni del server. Se non si usa attivamente l'estensione pg_stat_statements
, è consigliabile impostare su pg_stat_statements.track
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:
Selezionare l'istanza del server flessibile Database di Azure per PostgreSQL.
Nella barra laterale selezionare Parametri del server.
Cercare il
shared_preload_libraries
parametro.Selezionare TimescaleDB.
Selezionare Salva per mantenere le modifiche. Una volta salvata la modifica, si riceve una notifica.
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 altri dettagli sul metodo di ripristino con il database abilitato per La scalabilità cronologica, vedere la documentazione relativa alla 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
- Installare gli strumenti come descritto qui
- Creare un database e un'istanza del server flessibile Database di Azure per PostgreSQL di destinazione
- Abilitare l'estensione Scala cronologica come illustrato in precedenza
- Concedere
azure_pg_admin
il ruolo all'utente che verrà usato da ts-restore - 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:
Selezionare l'istanza del server flessibile Database di Azure per PostgreSQL.
Nella barra laterale selezionare Parametri del server.
Cercare il
shared_preload_libraries
parametro.Selezionare pg_hint_plan.
Selezionare Salva per mantenere le modifiche. Una volta salvata la modifica, si riceve una notifica.
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.