Computer finestre Internet

Comandi PostgreSQL di base. Comandi PostgreSQL di base Trovare e modificare la posizione di un'istanza cluster

Ciao, oggi voglio fare un piccolo promemoria sui comandi di base di PostgreSQL. Puoi lavorare con PosgreSQL sia in modo interattivo che dalla riga di comando. Il programma è psql. Sono sicuro che questo elenco ti sarà molto utile e ti farà risparmiare tempo nella ricerca tra varie risorse. Permettetemi di ricordarvi che questo è un progetto open-source, basato sul DBMS Postgres, è stato rilasciato nel 1986, viene sviluppato da un gruppo mondiale di sviluppatori PGDG, in sostanza si tratta di 5-8 persone, ma nonostante questo, si sta sviluppando molto intensamente, introducendo tutte le nuove funzioni e correggendo vecchi bug ed errori.

Comandi PostgreSQL di base in modalità interattiva:

  • \ connect db_name - connettersi a un database chiamato db_name
  • \ du - elenco di utenti
  • \ dp (o \ z) - elenco di tabelle, viste, sequenze, diritti di accesso ad esse
  • \ di - indici
  • \ ds - sequenze
  • \ dt - elenco delle tabelle
  • \ dt + - elenco di tutte le tabelle con descrizione
  • \ dt * s * - elenco di tutte le tabelle che contengono s nel nome
  • \ dv - visualizzazioni
  • \ dS - tabelle di sistema
  • \ d + - descrizione della tabella
  • \ o - invia i risultati della query a un file
  • \ l - elenco dei database
  • \ i - legge i dati in arrivo da un file
  • \ e - apre il contenuto corrente del buffer di richiesta nell'editor (se non diversamente specificato nell'ambiente della variabile EDITOR, verrà utilizzato vi per impostazione predefinita)
  • \ d “nome_tabella” - descrizione della tabella
  • \ eseguo il comando da un file esterno come \ i /my/directory/my.sql
  • \ pset - comando per impostare i parametri di formattazione
  • \ echo - visualizza un messaggio
  • \ set - imposta il valore di una variabile d'ambiente. Senza parametri, visualizza un elenco di variabili correnti (\ unset - rimuove).
  • \? - riferimento psql
  • \ aiuto - Riferimento SQL
  • \ q (o Ctrl + D) - esci dal programma

Lavorare con PostgreSQL dalla riga di comando:

  • -c (o -comando) - Esegue il comando SQL senza entrare in modalità interattiva
  • -f file.sql - esegue i comandi dal file file.sql
  • -l (o -list) - elenca i database disponibili
  • -U (o -username) - specifica il nome utente (ad esempio postgres)
  • -W (o -password) - richiesta password
  • -d nomedb - connettersi al database nomedb
  • -h - nome host (server)
  • -s - modalità passo passo, cioè dovrai confermare tutti i comandi
  • –S - modalità a riga singola, ovvero una nuova riga eseguirà la query (eliminare; alla fine dell'istruzione SQL)
  • -V - Versione PostgreSQL senza entrare in modalità interattiva

Esempi:

psql -U postgres -d dbname -c “CREATE TABLE my (some_id serial PRIMARY KEY, some_text text);” - esecuzione del comando nel database dbname.

psql -d dbname -H -c "SELECT * FROM my" -o my.html - restituisce il risultato della query in un file html.

Utilità PosgreSQL (programmi):

  • createdb e dropdb - crea e rilascia un database (rispettivamente)
  • createuser e dropuser - create e user (rispettivamente)
  • pg_ctl - un programma progettato per risolvere compiti di gestione generali (avvio, arresto, configurazione dei parametri, ecc.)
  • postmaster - Modulo server multiutente PostgreSQL (impostazione livelli di debug, porte, directory dati)
  • initdb - crea nuovi cluster PostgreSQL
  • initlocation - un programma per la creazione di directory per l'archiviazione secondaria di database
  • vacuumdb - manutenzione di database fisici e analitici
  • pg_dump - backup e ripristino dei dati
  • pg_dumpall - esegue il backup dell'intero cluster PostgreSQL
  • pg_restore - ripristino di un database dagli archivi (.tar, .tar.gz)

Esempi di creazione di backup:

Creazione di un backup del database mydb, in formato compresso

Pg_dump -h localhost -p 5440 -U someuser -F c -b -v -f miodb.backup miodb

Creazione di un backup del database mydb, sotto forma di file di testo semplice, incluso un comando per creare un database

Pg_dump -h localhost -p 5432 -U someuser -C -F p -b -v -f miodb.backup miodb

Creazione di un backup del database mydb, in forma compressa, con tabelle che contengono pagamenti nel nome

Pg_dump -h localhost -p 5432 -U someuser -F c -b -v -t * payments * -f payment_tables.backup mydb

Scarica i dati da una sola tabella specifica. Se è necessario eseguire il backup di più tabelle, i nomi di queste tabelle vengono elencati utilizzando l'opzione -t per ciascuna tabella.

Pg_dump -a -t nome_tabella -f nome_file nome_database

Fare un backup con la compressione gz

Pg_dump -h localhost -O -F p -c -U postgres miodb | gzip -c> miodb.gz

Un elenco delle opzioni più comunemente utilizzate:

  • -h host - host, se non specificato viene utilizzato localhost o il valore della variabile di ambiente PGHOST.
  • -p port - port, se non specificato, viene utilizzato 5432 o il valore della variabile di ambiente PGPORT.
  • -u - utente, se non specificato, viene utilizzato l'utente corrente, il valore può essere specificato anche nella variabile di ambiente PGUSER.
  • -a, -data-only - solo i dati, i dati e lo schema vengono salvati per impostazione predefinita.
  • -b - include oggetti di grandi dimensioni (blog) nel dump.
  • -s, -schema-only - dump solo dello schema.
  • -C, -crea - aggiunge un comando per creare un database.
  • -c - aggiunge comandi per eliminare (rilasciare) oggetti (tabelle, viste, ecc.).
  • -O - ​​non aggiungere comandi per impostare il proprietario di un oggetto (tabelle, viste, ecc.).
  • -F, -format (c | t | p) - formato dump di output, personalizzato, tar o testo normale.
  • -t, -table = TABLE - specifica una tabella specifica per il dump.
  • -v, -verbose - fornisce informazioni dettagliate.
  • -D, -attribute-inserts - dump utilizzando il comando INSERT con un elenco di nomi di proprietà.

Eseguire il backup di tutti i database utilizzando il comando pg_dumpall.

Pg_dumpall> all.sql

Ripristino delle tabelle dai backup (backup):

psql - ripristina i backup archiviati in un file di testo normale;
pg_restore - ripristina i backup compressi (tar);

Ripristino dell'intero backup, ignorando gli errori

Psql -h localhost -U someuser -d dbname -f mydb.sql

Ripristino dell'intero backup, fermandosi al primo errore

Psql -h localhost -U someuser -set ON_ERROR_STOP = on -f miodb.sql

Per ripristinare da un archivio tar, dobbiamo prima creare un database utilizzando CREATE DATABASE mydb; (se l'opzione -C non è stata specificata durante la creazione di un backup) e ripristinare

Pg_restore -dbname = miodb -jobs = 4 -verbose miodb.backup

Ripristino di un backup del database compresso con gz

psql -U postgres -d miodb -f miodb

Penso che il database postgresql ora ti sarà più chiaro. Spero che questo elenco di comandi PostgreSQL ti sia stato utile.

Ultimo aggiornamento: 17.03.2018

Per creare tabelle, utilizzare il comando CREATE TABLE seguito dal nome della tabella. Esistono anche numerosi operatori che possono essere utilizzati con questo comando che definiscono le colonne della tabella e i loro attributi. La sintassi generale per la creazione di una tabella è la seguente:

CREATE TABLE nome_tabella (nome_colonna1 tipo di dati colonna_ attributi1, nome_colonna2 tipo di dati colonna_ attributi2, ................................... .. .......... nome_colonnaN tipo di dati colonna_ attributiN, tabella_ attributi);

La specifica per tutte le colonne è elencata tra parentesi dopo il nome della tabella. Inoltre, per ogni colonna, deve essere indicato il nome e il tipo di dati che rappresenterà. Il tipo di dati determina quali dati (numeri, stringhe e così via) può contenere una colonna.

Ad esempio, creiamo una tabella nel database tramite pgAdmin. Per fare ciò, seleziona prima il database di destinazione in pgAdmin, fai clic con il pulsante destro del mouse su di esso e seleziona la voce Strumento di query ... nel menu di scelta rapida:

Successivamente, si aprirà un campo per l'inserimento del codice SQL. Inoltre, la tabella verrà creata appositamente per il database per il quale apriremo questo campo per l'immissione di SQL.

CREATE TABLE clienti (Id SERIAL PRIMARY KEY, Nome CARATTERE VARIABILE (30), Cognome CARATTERE VARIABILE (30), Email CARATTERE VARIABILE (30), Età INTEGER);

In questo caso, la tabella Clienti definisce cinque colonne: Id, FirstName, LastName, Age, Email. La prima colonna, Id, rappresenta l'ID cliente, funge da chiave primaria ed è quindi di tipo SERIAL. Infatti, questa colonna memorizzerà il valore numerico 1, 2, 3, ecc., che aumenterà automaticamente di uno per ogni nuova riga.

Le tre colonne successive rappresentano il nome, cognome e indirizzo email del cliente e sono di tipo CHARACTER VARYING (30), ovvero rappresentano una stringa di non più di 30 caratteri.

L'ultima colonna, Age, rappresenta l'età dell'utente ed è di tipo INTEGER, ovvero memorizza i numeri.

E dopo aver eseguito questo comando, la tabella dei clienti verrà aggiunta al database selezionato.

Dropping tabelle

Per eliminare le tabelle, utilizzare il comando DROP TABLE, che ha la seguente sintassi:

DROP TABLE table1 [, table2, ...];

Ad esempio, eliminando la tabella dei clienti.

Un'alternativa al lavoro con il database tramite la console è un ambiente più intuitivo per qualsiasi client con un'interfaccia grafica. Per esempio, pgAdmin... Installarlo è molto semplice, lo eseguiamo con i diritti di superutente:

sudo apt-get install pgadmin3
Ora puoi correre pgAdmin attraverso un'interfaccia grafica. Seleziona il server del database locale dall'elenco (ha una porta predefinita di 5432) e aggiungi il database che abbiamo già creato con i parametri che abbiamo specificato.
pgAdmin

In questo server locale oltre al nodo Banche dati puoi anche trovare un nodo chiamato Ruoli di accesso- tutti i ruoli disponibili.

Scegliamo tra tutti i database disponibili quello con cui abbiamo creato. Il database contiene molti tipi diversi di oggetti. Tra le particolari attenzioni vanno poste le tabelle e le sequenze ( sequenze).

Molto spesso, una tabella ordinaria contiene una chiave primaria sotto forma di un valore numerico positivo. Per ogni riga, questo valore deve essere univoco, quindi per non impostarlo ogni volta direttamente nella richiesta, è possibile impostare la sequenza come valore predefinito.

Per prima cosa, creiamo una sequenza. Noi scegliamo sequenze - Nuova sequenza... Nella prima scheda, inserisci il nome e specificalo come Proprietario il ruolo che abbiamo creato. Questa sequenza non sarà disponibile per altri ruoli. Nella seconda scheda nei campi Incremento e Cominciare entriamo uno per uno (a meno che tu non richieda diversamente). Nell'ultima scheda della finestra di dialogo è possibile visualizzare la query SQL risultante che verrà eseguita sul database.

Dopo aver creato la sequenza, iniziamo a creare la tabella. Indichiamo anche il suo nome e il proprietario (proprietario). Nella quarta scheda colonne aggiungiamo prima di tutto la chiave primaria. Pulsante Aggiungere, nella finestra che compare, indicare il nome della colonna, ad esempio, ID... Selezioniamo come tipo di dati bigint... Nella seconda scheda Definizione in campo Valore predefinito indichiamo la nostra sequenza. Il campo deve contenere un valore del modulo nextval ("message_id_seq" :: regclass)... Cioè, ogni volta che viene aggiunta una nuova riga, il valore successivo verrà preso dalla sequenza. Aggiunte altre colonne secondo necessità. Infine, nella scheda vincoli aggiungere un vincolo sulla chiave primaria ( Chiave primaria). Nell'ultima scheda, possiamo ammirare il codice SQL risultante generato da pgAdmin. Dopo aver fatto clic su OK, verrà creata la tabella.

Invece di bigint come chiave primaria, puoi specificarlo come tipo di colonna bigserial... Questo tipo viene incrementato automaticamente con ogni nuova riga aggiunta, quindi non è necessario creare una sequenza per esso. Cioè, nel caso più semplice, se non si dispone di regole speciali per la generazione dell'ID record, è possibile consigliare l'utilizzo di bigserial.

Vediamo il contenuto della nostra tabella. Per fare ciò, fai clic destro su di esso e seleziona dal menu di scelta rapida Visualizza dati - Visualizza 100 righe.

Nella stessa finestra, puoi modificare rapidamente il valore di qualsiasi cella nella tabella. Se la tua tabella ha più di 100 record, modifica il numero di record visualizzati nell'elenco a discesa nella parte superiore della finestra. È possibile visualizzare 100, 500, 1000 o tutti i record. Ma questo non è altro che un modo per guardare rapidamente il contenuto della tabella e non dovresti abituarti. Se hai decine di migliaia di record nella tua tabella, non consiglierei di visualizzare tutti i record contemporaneamente - in questo caso, è meglio scrivere una query usando i parametri limite e compensare.

15 utili comandi PostgreSQL

Ci sono molti tutorial PostgreSQL in rete che descrivono i comandi di base. Ma mentre ti immergi più a fondo nel lavoro, sorgono problemi pratici che richiedono team avanzati.

Tali comandi, o frammenti, sono raramente documentati. Diamo un'occhiata ad alcuni esempi, utili sia per gli sviluppatori che per gli amministratori di database.

Ottenere informazioni su un database

Dimensione del database

Per ottenere la dimensione fisica dei file (storage) del database, utilizziamo la seguente query:

SELECT pg_database_size (current_database ());

Il risultato sarà presentato come un numero come 41809016.

current_database() è una funzione che restituisce il nome del database corrente. Invece, puoi inserire un nome nel testo:

SELECT pg_database_size ("mio_database");

Per ottenere informazioni in forma leggibile dall'uomo, usiamo la funzione pg_size_pretty:

SELECT pg_size_pretty (pg_database_size (current_database ()));

Di conseguenza, otteniamo informazioni del modulo 40 Mb.

Elenco delle tabelle

A volte vuoi ottenere un elenco di tabelle di database. Per fare ciò, utilizzare la seguente query:

SELECT nome_tabella FROM schema_informazione.tables WHERE schema_tabella NOT IN ("schema_informazione", "catalogo_pg");

information_schema è uno schema di database standard che contiene raccolte di viste come tabelle, campi, ecc. Le viste tabella contengono informazioni su tutte le tabelle in un database.

La query descritta di seguito selezionerà tutte le tabelle dallo schema specificato del database corrente:

SELECT nome_tabella FROM schema_informazioni.tables WHERE schema_tabella NOT IN ("schema_informazione", "catalogo_pg") AND schema_tabella IN ("pubblico", "schema");

Nell'ultima clausola IN, è possibile specificare il nome di uno schema specifico.

Dimensioni della tavola

Analogamente all'ottenimento della dimensione del database, la dimensione dei dati della tabella può essere calcolata utilizzando la funzione corrispondente:

SELECT pg_relation_size ("conti");

La funzione pg_relation_size restituisce la quantità di spazio che il livello specificato della tabella o dell'indice specificato occupa su disco.

Il nome del tavolo più grande

Per visualizzare un elenco di tabelle nel database corrente, ordinato per dimensione della tabella, eseguire la seguente query:

SELECT nomerel, relpages FROM pg_class ORDER BY relpages DESC;

Per visualizzare le informazioni sulla tabella più grande, limitiamo la query utilizzando LIMIT:

SELECT nomerel, relpages FROM pg_class ORDER BY relpages DESC LIMIT 1;

relname è il nome della tabella, indice, vista, ecc.
relpages - la dimensione della visualizzazione su disco di questa tabella in numero di pagine (per impostazione predefinita, una pagina è 8 KB).
pg_class è una tabella di sistema che contiene informazioni sulle relazioni tra le tabelle del database.

Elenco degli utenti connessi

Per conoscere il nome, l'IP e la porta utilizzata degli utenti connessi, eseguire la seguente query:

SELECT datname, usename, client_addr, client_port FROM pg_stat_activity;

Attività dell'utente

Per scoprire l'attività di connessione di un utente specifico, utilizziamo la seguente query:

SELECT datname FROM pg_stat_activity WHERE usename = "devuser";

Lavorare con dati e campi tabella

Rimozione di linee duplicate

Se succede che la tabella non ha una chiave primaria, è probabile che ci siano duplicati tra i record. Se per una tabella di questo tipo, in particolare di grandi dimensioni, è necessario impostare dei vincoli per verificarne l'integrità, rimuoveremo i seguenti elementi:

  • linee doppie,
  • situazioni in cui una o più colonne sono duplicate (se si suppone che queste colonne debbano essere utilizzate come chiave primaria).

Considera una tabella con i dati del cliente, in cui viene duplicata un'intera riga (la seconda di fila).

La seguente query aiuterà a rimuovere tutti i duplicati:

ELIMINA DA clienti WHERE ctid NON IN (SELEZIONARE max (ctid) FROM clienti GRUPPO PER clienti. *);

Il campo ctid, univoco per ogni record, è nascosto per impostazione predefinita, ma è presente in ogni tabella.

L'ultima richiesta richiede molte risorse, quindi fai attenzione quando la esegui su un progetto di produzione.

Consideriamo ora il caso in cui i valori dei campi vengono ripetuti.

Se è possibile eliminare i duplicati senza salvare tutti i dati, eseguiremo la seguente query:

ELIMINA DA clienti WHERE ctid NON IN (SELEZIONARE max (ctid) FROM clienti GROUP BY customer_id);

Se i dati sono importanti, prima devi trovare i record con duplicati:

SELECT * FROM clienti WHERE ctid NOT IN (SELECT max (ctid) FROM clienti GROUP BY customer_id);

Prima di eliminare tali record, puoi passare a una tabella temporanea o sostituire il valore customer_id in esse contenuto con un'altra.

La forma generale di richiesta di cancellazione dei record sopra descritti è la seguente:

DELETE FROM nome_tabella WHERE ctid NOT IN (SELECT max (ctid) FROM nome_tabella GROUP BY colonna1);

Modifica il tipo di campo in modo sicuro

Potrebbe sorgere la domanda sull'inclusione di un tale compito in questo elenco. Infatti, in PostgreSQL è molto facile cambiare il tipo di un campo usando il comando ALTER. Diamo un'occhiata di nuovo alla tabella dei clienti come esempio.

Il campo customer_id utilizza il tipo di dati stringa varchar. Questo è un errore perché questo campo dovrebbe memorizzare gli ID cliente, che sono in formato intero. L'uso di varchar non è giustificato. Proviamo a correggere questo malinteso utilizzando il comando ALTER:

ALTER TABLE clienti ALTER COLUMN customer_id TYPE intero;

Ma come risultato dell'esecuzione otteniamo un errore:

ERRORE: la colonna "customer_id" non può essere convertita automaticamente per digitare intero
Stato SQL: 42804
Suggerimento: specificare un'espressione USING per eseguire la conversione.

Ciò significa che non puoi semplicemente prendere e modificare il tipo di un campo se ci sono dati nella tabella. Poiché è stato utilizzato il tipo varchar, il DBMS non è in grado di determinare se il valore è un numero intero. Sebbene i dati corrispondano esattamente a questo tipo. Per chiarire questo punto, il messaggio di errore suggerisce di utilizzare l'espressione USING per convertire correttamente i nostri dati in un numero intero:

ALTER TABLE clienti ALTER COLUMN customer_id TYPE intero USING (customer_id :: intero);

Di conseguenza, tutto è andato senza errori:

Si noti che quando si utilizza USING, oltre a un'espressione specifica, è possibile utilizzare funzioni, altri campi e operatori.

Ad esempio, riconvertiamo il campo customer_id in varchar, ma con la conversione del formato dati:

ALTER TABLE clienti ALTER COLUMN customer_id TYPE varchar USING (customer_id || "-" || first_name);

Di conseguenza, la tabella sarà simile a questa:

Trovare valori "persi"

Prestare attenzione quando si utilizzano le sequenze come chiave primaria: durante l'assegnazione, alcuni elementi della sequenza vengono saltati accidentalmente e, come risultato dell'utilizzo della tabella, alcuni record vengono eliminati. Questi valori possono essere riutilizzati, ma sono difficili da trovare in tabelle di grandi dimensioni.

Consideriamo due opzioni di ricerca.

Il primo modo
Eseguiamo la seguente query per trovare l'inizio dell'intervallo con il valore "perso":

SELECT customer_id + 1 FROM clienti mo DOVE NON ESISTE (SELECT NULL FROM clienti mi WHERE mi.customer_id = mo.customer_id + 1) ORDER BY customer_id;

Di conseguenza, otteniamo i valori: 5, 9 e 11.

Se hai bisogno di trovare non solo la prima occorrenza, ma tutti i valori mancanti, utilizziamo la seguente query (ad uso intensivo di risorse!):

WITH seq_max AS (SELECT max (customer_id) FROM clienti), seq_min AS (SELECT min (customer_id) FROM clienti) SELECT * FROM generate_series ((SELECT min FROM seq_min), (SELECT max FROM seq_max)) EXCEPT SELECT customer_id FROM clienti;

Di conseguenza, vediamo il seguente risultato: 5, 9 e 6.

Secondo modo
Otteniamo il nome della sequenza associata al customer_id:

SELECT pg_get_serial_sequence ("clienti", "ID_cliente");

E troviamo tutti gli identificatori mancanti:

WITH sequence_info AS (SELECT start_value, last_value FROM "SchemaName". "SequenceName") SELECT generate_series ((sequence_info.start_value), (sequence_info.last_value)) FROM sequence_info EXCEPT SELECT customer_id FROM clienti;

Contare il numero di righe in una tabella

Il numero di righe viene calcolato dalla funzione di conteggio standard, ma può essere utilizzato con condizioni aggiuntive.

Il numero totale di righe nella tabella:

SELECT conteggio (*) FROM tabella;

Numero di righe purché il campo specificato non contenga NULL:

SELECT conteggio (col_name) FROM tabella;

Il numero di righe univoche per il campo specificato:

SELECT conteggio (distinto col_name) FROM tabella;

Utilizzo delle transazioni

Una transazione combina una sequenza di azioni in un'unica operazione. La sua particolarità è che se si verifica un errore nell'esecuzione di una transazione, nessuno dei risultati delle azioni verrà salvato nel database.

Avviamo una transazione utilizzando il comando BEGIN.

Per eseguire il rollback di tutte le operazioni dopo BEGIN, utilizzare il comando ROLLBACK.

E per applicare - il comando COMMIT.

Visualizzazione e completamento delle richieste eseguibili

Per ottenere informazioni sulle richieste, eseguire il seguente comando:

SELECT pid, età (query_start, clock_timestamp ()), usename, query FROM pg_stat_activity WHERE query! = " "AND query NOT IIKE"% pg_stat_activity% "ORDER BY query_start desc;

Per interrompere una richiesta specifica, eseguire il seguente comando, specificando l'id del processo (pid):

SELECT pg_cancel_backend (procpid);

Per terminare la richiesta eseguire:

SELECT pg_terminate_backend (procpid);

Lavorare con la configurazione

Ricerca e modifica della posizione di un'istanza del cluster

Una situazione è possibile quando diverse istanze di PostgreSQL sono configurate su un sistema operativo, che "siedono" su porte diverse. In questo caso, trovare un percorso per la posizione fisica di ogni istanza è un compito piuttosto snervante. Per ottenere queste informazioni, eseguiremo la seguente query per qualsiasi database del cluster di interesse:

MOSTRA directory_dati;

Cambiamo la posizione in qualcos'altro usando il comando:

SET data_directory a nuova_directory_path;

Ma è necessario un riavvio per rendere effettive le modifiche.

Ottenere un elenco dei tipi di dati disponibili

Otteniamo un elenco dei tipi di dati disponibili utilizzando il comando:

SELECT typname, typlen from pg_type dove typtype = "b";

nometipo è il nome del tipo di dati.
typlen è la dimensione del tipo di dati.

Modifica delle impostazioni DBMS senza riavviare

Le impostazioni di PostgreSQL si trovano in file speciali come postgresql.conf e pg_hba.conf. Dopo aver modificato questi file, il DBMS deve recuperare nuovamente le impostazioni. Per fare ciò, il server del database viene riavviato. È chiaro che devi farlo, ma nella versione di produzione del progetto, che viene utilizzata da migliaia di utenti, questo è molto indesiderabile. Pertanto, PostgreSQL ha una funzione con la quale è possibile applicare le modifiche senza riavviare il server:

SELECT pg_reload_conf ();

Ma, sfortunatamente, non si applica a tutti i parametri. In alcuni casi, è necessario un riavvio per applicare le impostazioni.

Abbiamo trattato i comandi per semplificare le cose per sviluppatori e DBA che utilizzano PostgreSQL. Ma queste non sono tutte tecniche possibili. Se ti sei imbattuto in problemi interessanti, scrivine nei commenti. Condividiamo un'esperienza utile!