Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive alcune considerazioni speciali da tenere presenti quando si usano determinate estensioni o moduli in un server flessibile Database di Azure per PostgreSQL.
Considerazioni generiche con le estensioni
Per usare un'estensione nel server flessibile Database di Azure per PostgreSQL, è necessario:
-
Consenti estensione. Se l'estensione non è consentita, qualsiasi tentativo di eseguire
CREATE EXTENSION
,ALTER EXTENSION
DROP EXTENSION
, oCOMMENT ON EXTENSION
non riesce con un errore che indica che l'estensione di riferimento non è consentita. - Se l'estensione distribuisce una libreria binaria condivisa che richiede l'allocazione e l'accesso alla memoria condivisa e deve essere caricata all'avvio del server, è necessario seguire anche le istruzioni fornite nelle librerie di caricamento.
- Creare l'estensione nei database in cui si vuole che l'estensione distribuisca gli oggetti SQL distribuiti con tale estensione.
- Eliminare l'estensione. Quando si desidera rimuovere dal database in cui si esegue il comando tutti gli oggetti SQL distribuiti da tale estensione.
- Aggiornare le estensioni per eseguire l'aggiornamento alla versione più recente di tutti gli artefatti SQL distribuiti da un'estensione già installata.
- Visualizzare le estensioni installate e le versioni corrispondenti.
Se si verifica un errore durante l'esecuzione dei CREATE EXTENSION
comandi , ALTER EXTENSION
DROP EXTENSION
o COMMENT ON EXTENSION
nel server flessibile Database di Azure per PostgreSQL, vedere l'elenco dei possibili errori e quali potrebbero essere le cause di ognuno di questi errori.
Considerazioni generiche con i moduli
Per usare un modulo nel server flessibile Database di Azure per PostgreSQL, è necessario aggiungerlo solo al parametro servershared_preload_libraries
, come descritto in Librerie di caricamento.
Non è necessario consentire l'elenco dei moduli. Si tratta di un requisito esclusivo per le estensioni.
Estensioni con considerazioni specifiche
Nell'elenco seguente vengono enumerate tutte le estensioni supportate che richiedono considerazioni specifiche quando vengono usate in un server flessibile Database di Azure per PostgreSQL:
AGE
dblink
pg_buffercache
pg_cron
pg_hint_plan
pg_prewarm
pg_repack
pg_stat_statements
postgres_fdw
pgstattuple
ETÀ
L'estensione Apache AGE è un'estensione del grafo per PostgreSQL supportata dal server flessibile di Azure Database per PostgreSQL. Offre funzionalità di database a grafo, supporto di query a crittografia aperta e possibilità di eseguire query complesse sui dati del grafo archiviati in PostgreSQL. 'Apache AGE' è un progetto open source rilasciato con la licenza Apache 2.0.
Installare AGE
Per utilizzare AGE, è necessario assicurarsi di "inserire nella lista consentita" l'estensione, "caricare la sua libreria", e "installare l'estensione" nel database in cui si prevede di utilizzare la relativa funzionalità.
dblink
L'estensione dblink
consente di connettersi da un'istanza del server flessibile Database di Azure per PostgreSQL a un altro o a un altro database nello stesso server. Il server flessibile di Database di Azure per PostgreSQL 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.
Se si prevede di usare questa estensione, è consigliabile distribuire i server con l'integrazione della rete virtuale. 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_buffercache
L'estensione pg_buffercache
può essere usata per studiare il contenuto di shared_buffers. Usando questa estensione, è possibile stabilire se una determinata relazione viene memorizzata nella cache (in shared_buffers
). Questa estensione consente di risolvere i problemi di prestazioni (problemi di prestazioni correlati alla memorizzazione nella cache).
Questa estensione è integrata con l'installazione principale di PostgreSQL ed è facile da installare.
CREATE EXTENSION pg_buffercache;
pg_cron
L'estensione 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ò 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.
L'estensione 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, garantisce che i processi vengano eseguiti esattamente tutte le volte che sono pianificati e non vengano eseguiti simultaneamente con se stessi.
Assicurarsi che il valore su cui shared_preload_libraries
è impostato, includa pg_cron
. Questa estensione non supporta il caricamento della libreria come effetto dell'esecuzione di CREATE EXTENSION. Qualsiasi tentativo di eseguire CREATE EXTENSION se l'estensione non è stata aggiunta a shared_preload_libraries
o se il server non è stato riavviato dopo l'aggiunta, genera un errore il cui testo indica pg_cron can only be loaded via shared_preload_libraries
e il cui hint è Add pg_cron to the shared_preload_libraries configuration variable in postgresql.conf
.
Per usare pg_cron
, assicurarsi di caricare la libreria condivisa all'avvio del server, che sia consentita e installata in qualsiasi database da cui si vuole interagire con le relative funzionalità, usando gli artefatti SQL creati.
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 il 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 il vuoto ogni giorno alle 10:00 (GMT) nel database
test cron
con l'account delazure_pg_admin
ruolo.SELECT cron.schedule_in_database('VACUUM',' 0 10 * * * ', 'VACUUM', 'testcron',null,TRUE);
Altri esempi
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.
La 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 di PostgreSQL e non è supportata in Database di Azure per PostgreSQL server flessibile. Gli esempi precedenti mostrano l'esecuzione di questa funzione con un parametro facoltativo di nome utente omesso 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 eliminare i vecchi dati il sabato alle 3:30 (GMT) sul database DBName.
SELECT cron.schedule_in_database('JobName', '30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$,'DBName');
Per aggiornare o modificare il nome del database per la pianificazione esistente
SELECT cron.alter_job(job_id:=MyJobID,database:='NewDBName');
pg_hint_plan
L'estensione pg_hint_plan
consente di modificare i piani di esecuzione di PostgreSQL usando i cosiddetti "hint" nei commenti SQL, ad esempio:
/*+ SeqScan(a) */
L'estensione pg_hint_plan
legge frasi di hint in un commento del modulo speciale specificato con l'istruzione SQL di destinazione. La forma specifica inizia con la sequenza di caratteri "/*+" e termina con "*/". Le frasi hint sono costituite da nomi di 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 lo strumento di pianificazione usi i risultati di una seqscan
tabella a
da combinare con la tabella b
come .hashjoin
Per usare l'estensione pg_hint_plan
, assicurarsi di consentire l'elenco di estensioni, caricarne la libreria e installare l'estensione nel database in cui si prevede di usare la relativa funzionalità.
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 preparazione automatica per il server flessibile PostgreSQL non è attualmente disponibile nel Database di Azure.
pg_repack
La prima volta che gli utenti dell'estensione pg_repack
pongono in genere la domanda seguente: è pg_repack
un'estensione o un eseguibile lato client come psql
o pg_dump
?
pg_repack in realtà è entrambi. pg_repack/lib include il codice per l'estensione, inclusi gli elementi dello schema e SQL creati e la libreria C che implementa il codice di diverse di queste funzioni.
D'altra parte, pg_repack/bin ha il codice per l'applicazione client, che sa come interagire con gli elementi programmabilità implementati nell'estensione. Questa applicazione client mira a semplificare la complessità dell'interazione con le diverse interfacce rilevate dall'estensione lato server. Offre all'utente alcune opzioni della riga di comando che sono più facili da comprendere. L'applicazione client è inutile senza l'estensione creata nel database a cui punta. L'estensione lato server autonomamente sarebbe completamente funzionale, ma richiederebbe all'utente di comprendere un modello di interazione complicato. Tale modello consiste nell'esecuzione di query per recuperare i dati usati come input per le funzioni implementate dall'estensione e così via.
Autorizzazione negata per la ricompressione dello schema
Attualmente, poiché si concedono autorizzazioni allo schema di repack creato da questa estensione, è supportata solo la funzionalità in esecuzione pg_repack
dal contesto di azure_pg_admin
.
È possibile notare che se il proprietario di una tabella, che non azure_pg_admin
è , tenta di eseguire pg_repack
, viene visualizzato l'errore seguente:
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()
Per evitare questo errore, eseguire pg_repack dal contesto di azure_pg_admin
.
pg_stat_statements
L'estensione pg_stat_statements offre una visualizzazione di tutte le query eseguite nel database. Queste informazioni sono utili per comprendere le 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.
Per motivi di sicurezza, è necessario consentire l'elenco di pg_stat_statements estensione e installarla usando il comando CREATE EXTENSION .
L'impostazione pg_stat_statements.track
, che controlla quali istruzioni vengono rilevate dalle tracce dell'estensione, ovvero top
tutte le istruzioni rilasciate 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 fornite dall'estensione pg_stat_statements
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 si tratta del caso.
postgres_fdw
L'estensione postgres_fdw
consente di connettersi da un'istanza del server flessibile Database di Azure per PostgreSQL a un altro o a un altro database nello stesso server. Il server flessibile di Database di Azure per PostgreSQL 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.
Se si prevede di usare questa estensione, è consigliabile distribuire i server con l'integrazione della rete virtuale. 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.
pgstattuple
Quando si usa l'estensione pgstattuple
per provare a ottenere statistiche di tupla da oggetti mantenuti nello pg_toast
schema nelle versioni da Postgres 11 a 13, viene visualizzato un errore "autorizzazione negata per lo schema pg_toast".
Autorizzazione negata per la pg_toast dello schema
I clienti che usano PostgreSQL versioni da 11 a 13 su Azure Database per server flessibili | non possono usare l'estensione pgstattuple
sugli oggetti all'interno dello schema pg_toast
.
In PostgreSQL 16 e 17 il pg_read_all_data
ruolo viene concesso automaticamente a azure_pg_admin
, consentendo pgstattuple
di funzionare correttamente. In PostgreSQL 14 e 15 i clienti possono concedere manualmente il pg_read_all_data
ruolo a per azure_pg_admin
ottenere lo stesso risultato. Tuttavia, in PostgreSQL da 11 a 13 il pg_read_all_data
ruolo non esiste.
I clienti non possono concedere direttamente le autorizzazioni necessarie. Se è necessario essere in grado di eseguire pgstattuple
per accedere agli oggetti nello pg_toast
schema, procedere con la creazione di una richiesta di supporto tecnico di Azure.
timescaleDB
L'estensione timescaleDB
è un database time series in pacchetto come estensione per PostgreSQL. Fornisce funzioni analitiche orientate al tempo e ottimizzazioni e ridimensiona Postgres per i carichi di lavoro delle serie temporali.
Altre informazioni su TimescaleDB, un marchio registrato di Timescale, Inc. Il server flessibile di Database di Azure per PostgreSQL fornisce TimescaleDB edizione Apache-2.
Installare TimescaleDB
Per usare timescaleDB
, assicurarsi di consentire l'elenco di estensioni, caricarne la libreria e installare l'estensione nel database in cui si prevede di usare la relativa funzionalità.
È ora possibile creare un hypertable TimescaleDB da zero o eseguire la migrazione dei dati delle serie temporali esistenti in PostgreSQL.
Per altre informazioni sul ripristino di un database di scala cronologica con pg_dump
e pg_restore
, vedere la documentazione relativa alla scalabilità cronologica.
Ripristino di un database di scalabilità temporale usando timescaledb-backup
Durante l'esecuzione della SELECT timescaledb_post_restore()
procedura, è possibile che vengano negate le autorizzazioni durante l'aggiornamento del flag timescaledb.restore. Il motivo per cui viene visualizzato questo errore è dovuto all'autorizzazione ALTER DATABASE limitata nei servizi di database PaaS cloud. In questo caso, è possibile eseguire un metodo alternativo usando lo timescaledb-backup
strumento per eseguire il backup e il ripristino del database di scala cronologica. Timescaledb-backup è un programma che rende il dump e il ripristino di un database TimescaleDB più semplice, meno soggetto a errori e prestazioni più elevate.
A tale scopo, effettuare i passaggi seguenti:
Creare una destinazione Database di Azure per PostgreSQL database e un'istanza del server flessibile.
Abilitare l'estensione Scala cronologica.
Concedere il
azure_pg_admin
ruolo all'utente usato da ts-restore.Eseguire ts-restore per ripristinare il database.
Altre informazioni su queste utilità sono disponibili qui.
Estensioni e aggiornamento della versione principale
Database di Azure per PostgreSQL server flessibile offre 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 una semplice interazione dell'utente. L'aggiornamento della versione principale sul posto semplifica il processo di aggiornamento flessibile del server di Database di Azure per PostgreSQL, riducendo al minimo le interruzioni per utenti e applicazioni che accedono al server. Gli aggiornamenti delle versioni principali sul posto non supportano estensioni specifiche e esistono alcune limitazioni per l'aggiornamento di determinate estensioni.
Le estensioni anon
, Apache AGE
, dblink
orafce
, pgaudit
, , postgres_fdw
e timescaledb
non sono supportate per tutte le versioni del server flessibili Database di Azure per PostgreSQL quando si usa la funzionalità di aggiornamento della versione principale sul posto.
Moduli con considerazioni specifiche
Nell'elenco seguente vengono enumerati tutti i moduli supportati che richiedono considerazioni specifiche quando vengono usati in un server flessibile Database di Azure per PostgreSQL:
pg_failover_slots
pg_failover_slots
Il modulo pg_failover_slots
migliora il database di Azure per server flessibili di PostgreSQL quando si utilizzano sia la replica logica sia i server con alta disponibilità. 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.
Altre informazioni e istruzioni sull'uso del modulo sono disponibili nella pg_failover_slots
relativa pagina GitHub.
Per usare il pg_failover_slots
modulo, assicurarsi che la relativa libreria sia stata caricata all'avvio del server.