Računala Windows Internet

Osnovne PostgreSQL naredbe. Osnovne PostgreSQL naredbe Pronalaženje i promjena lokacije instance klastera

Pozdrav, danas želim napraviti malu bilješku o osnovnim PostgreSQL naredbama. S PosgreSQL-om možete raditi interaktivno i iz naredbenog retka. Program je psql. Siguran sam da će vam ovaj popis biti vrlo koristan i da će vam uštedjeti vrijeme traženja raznih izvora. Podsjetim da je ovo projekt otvorenog koda, baziran na Postgres DBMS-u, objavljen 1986. godine, razvija ga svjetska grupa PGDG programera, u biti to je 5-8 ljudi, ali unatoč tome je razvija se vrlo intenzivno, uvodeći sve nove funkcije i ispravljajući stare bugove i greške.

Osnovne naredbe PostgreSQL u interaktivnom načinu rada:

  • \ connect db_name - povezivanje s bazom podataka pod nazivom db_name
  • \ du - popis korisnika
  • \ dp (ili \ z) - popis tablica, pogleda, sekvenci, prava pristupa njima
  • \ di - indeksi
  • \ ds - sekvence
  • \ dt - popis tablica
  • \ dt + - popis svih tablica s opisom
  • \ dt * s * - popis svih tablica koje sadrže s u imenu
  • \ dv - pogledi
  • \ dS - tablice sustava
  • \ d + - opis tablice
  • \ o - poslati rezultate upita u datoteku
  • \ l - popis baza podataka
  • \ i - čitanje dolaznih podataka iz datoteke
  • \ e - otvara trenutni sadržaj međuspremnika zahtjeva u uređivaču (osim ako nije drugačije navedeno u okruženju varijable EDITOR, vi će se koristiti prema zadanim postavkama)
  • \ d “table_name” - opis tablice
  • \ izvodim naredbu iz vanjske datoteke kao što je \ i /my/directory/my.sql
  • \ pset - naredba za postavljanje parametara formatiranja
  • \ echo - prikazuje poruku
  • \ set - postavlja vrijednost varijable okruženja. Bez parametara, prikazuje popis trenutnih varijabli (\ unset - uklanja).
  • \? - psql referenca
  • \ pomoć - SQL referenca
  • \ q (ili Ctrl + D) - izađite iz programa

Rad s PostgreSQL-om iz naredbenog retka:

  • -c (ili -command) - Pokrenite SQL naredbu bez ulaska u interaktivni način rada
  • -f file.sql - izvršava naredbe iz datoteke file.sql
  • -l (ili -list) - prikazuje dostupne baze podataka
  • -U (ili -username) - navedite korisničko ime (na primjer postgres)
  • -W (ili -password) - upit za lozinku
  • -d dbname - povezivanje s bazom podataka dbname
  • -h - ime hosta (poslužitelj)
  • -s - način rada korak po korak, odnosno morat ćete potvrditi sve naredbe
  • –S - način rada u jednom retku, to jest, novi red će izvršiti upit (riješi se; na kraju SQL naredbe)
  • -V - PostgreSQL verzija bez ulaska u interaktivni način rada

primjeri:

psql -U postgres -d dbname -c “STVORI TABLE my (some_id serijski PRIMARNI KLJUČ, some_text text);” - izvršenje naredbe u bazi podataka dbname.

psql -d dbname -H -c "SELECT * FROM my" -o my.html - izlaz rezultata upita u html datoteku.

PosgreSQL uslužni programi (programi):

  • createdb i dropdb - kreirajte i ispustite bazu podataka (odnosno)
  • createuser i dropuser - kreiranje i korisnika (odnosno)
  • pg_ctl - program dizajniran za rješavanje općih zadataka upravljanja (pokretanje, zaustavljanje, konfiguriranje parametara, itd.)
  • postmaster - PostgreSQL višekorisnički poslužiteljski modul (postavljanje razina za otklanjanje pogrešaka, portova, direktorija podataka)
  • initdb - kreiranje novih PostgreSQL klastera
  • initlocation - program za kreiranje direktorija za sekundarnu pohranu baza podataka
  • vacuumdb - fizičko i analitičko održavanje baze podataka
  • pg_dump - sigurnosna kopija i vraćanje podataka
  • pg_dumpall - sigurnosna kopija cijelog PostgreSQL klastera
  • pg_restore - vraćanje baze podataka iz arhiva (.tar, .tar.gz)

Primjeri izrade sigurnosnih kopija:

Izrada sigurnosne kopije mydb baze podataka, u komprimiranom obliku

Pg_dump -h localhost -p 5440 -U neki korisnik -F c -b -v -f mydb.backup mydb

Izrada sigurnosne kopije baze podataka mydb, u obliku obične tekstualne datoteke, uključujući naredbu za stvaranje baze podataka

Pg_dump -h localhost -p 5432 -U neki korisnik -C -F p -b -v -f mydb.backup mydb

Izrada sigurnosne kopije baze podataka mydb, u komprimiranom obliku, s tablicama koje sadrže plaćanja u nazivu

Pg_dump -h localhost -p 5432 -U neki korisnik -F c -b -v -t * plaćanja * -f plate_tables.backup mydb

Izbacite podatke samo iz jedne određene tablice. Ako trebate napraviti sigurnosnu kopiju nekoliko tablica, nazivi tih tablica su navedeni pomoću prekidača -t za svaku tablicu.

Pg_dump -a -t naziv_tablice -f naziv_datoteke ime_baze

Izrada sigurnosne kopije s gz kompresijom

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

Popis najčešće korištenih opcija:

  • -h host - host, ako nije navedeno, koristi se localhost ili vrijednost iz varijable okruženja PGHOST.
  • -p port - port, ako nije navedeno tada se koristi 5432 ili vrijednost iz varijable okoline PGPORT.
  • -u - korisnik, ako nije navedeno, koristi se trenutni korisnik, vrijednost se također može navesti u varijabli okruženja PGUSER.
  • -a, -data-only - ispis samo podataka, podaci i shema se spremaju prema zadanim postavkama.
  • -b - uključiti velike objekte (blogove) u deponiju.
  • -s, -schema-only - ispis samo sheme.
  • -C, -create - dodaje naredbu za stvaranje baze podataka.
  • -c - dodaje naredbe za ispuštanje (ispuštanje) objekata (tablica, pogleda itd.).
  • -O - ​​nemojte dodavati naredbe za postavljanje vlasnika objekta (tablice, pogledi itd.).
  • -F, -format (c | t | p) - format izlazne kopije, prilagođeni, tar ili običan tekst.
  • -t, -table = TABLE - specificirajte određenu tablicu za dump.
  • -v, -verbose - izlazne opširne informacije.
  • -D, -attribute-inserts - ispis pomoću naredbe INSERT s popisom imena svojstava.

Sigurnosno kopirajte sve baze podataka pomoću naredbe pg_dumpall.

Pg_dumpall> all.sql

Vraćanje tablica iz sigurnosnih kopija (sigurnosnih kopija):

psql - vraćanje sigurnosnih kopija pohranjenih u običnoj tekstualnoj datoteci;
pg_restore - vraćanje komprimiranih sigurnosnih kopija (tar);

Vraćanje cijele sigurnosne kopije, zanemarujući pogreške

Psql -h localhost -U neki korisnik -d dbname -f mydb.sql

Vraćanje cijele sigurnosne kopije, zaustavljanje na prvoj grešci

Psql -h localhost -U neki korisnik -set ON_ERROR_STOP = on -f mydb.sql

Za vraćanje iz tar arhive, prvo moramo stvoriti bazu podataka koristeći CREATE DATABASE mydb; (ako opcija -C nije navedena pri izradi sigurnosne kopije) i vratite

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

Vraćanje gz-komprimirane sigurnosne kopije baze podataka

psql -U postgres -d mydb -f mydb

Mislim da će vam postgresql baza podataka sada biti jasnija. Nadam se da vam je ovaj popis PostgreSQL naredbi bio od pomoći.

Posljednje ažuriranje: 17.03.2018

Za kreiranje tablica koristite naredbu CREATE TABLE nakon koje slijedi naziv tablice. Također postoji niz operatora koji se mogu koristiti s ovom naredbom koji definiraju stupce tablice i njihove atribute. Opća sintaksa za izradu tablice je sljedeća:

CREATE TABLE naziv_tablice (ime_stupca1 tip podataka atributi_stupca1, naziv_stupca2 tip podataka_atributi_stupca2, ................................... .. .......... column_nameN datatype column_ attributesN, table_ attributes);

Specifikacija za sve stupce je navedena u zagradama iza naziva tablice. Štoviše, za svaki stupac mora se navesti naziv i vrsta podataka koje će predstavljati. Tip podataka određuje koje podatke (brojeve, nizove, itd.) stupac može sadržavati.

Na primjer, napravimo tablicu u bazi podataka putem pgAdmin-a. Da biste to učinili, prvo odaberite ciljnu bazu podataka u pgAdminu, kliknite je desnom tipkom miša i odaberite stavku Alat za upite ... u kontekstnom izborniku:

Nakon toga će se otvoriti polje za unos SQL koda. Štoviše, tablica će biti kreirana posebno za bazu podataka za koju ćemo otvoriti ovo polje za unos SQL-a.

CREATE TABLE kupaca (ID SERIJSKI PRIMARNI KLJUČ, ZNAK IME VARIJA (30), Prezime ZNAK Varijabilno (30), E-pošta ZNAK VARING (30), DOBNA CIJELI);

U ovom slučaju, tablica Kupci definira pet stupaca: Id, Ime, Prezime, Dob, E-pošta. Prvi stupac, Id, predstavlja ID korisnika, služi kao primarni ključ i stoga je tipa SERIAL. Zapravo, ovaj stupac će pohraniti brojčanu vrijednost 1, 2, 3, itd., koja će se automatski povećati za jedan za svaki novi redak.

Sljedeća tri stupca predstavljaju ime, prezime i adresu e-pošte kupca i tipa su CHARACTER VARYING (30), odnosno predstavljaju niz od najviše 30 znakova.

Posljednji stupac, Dob, predstavlja dob korisnika i tipa je INTEGER, odnosno pohranjuje brojeve.

I nakon izvršenja ove naredbe, tablica kupaca bit će dodana odabranoj bazi podataka.

Spuštanje stolova

Za ispuštanje tablica koristite naredbu DROP TABLE koja ima sljedeću sintaksu:

DROP TABLE tablica1 [, tablica2, ...];

Na primjer, ispuštanje tablice kupaca.

Alternativa radu s bazom podataka putem konzole je intuitivnije okruženje za svakog klijenta s grafičkim sučeljem. Na primjer, pgAdmin... Instalacija je vrlo jednostavna, pokrećemo ga s pravima superkorisnika:

sudo apt-get install pgadmin3
Sada možete trčati pgAdmin putem grafičkog sučelja. Odaberite lokalni poslužitelj baze podataka s popisa (ima zadani port 5432) i dodajte bazu podataka koju smo već kreirali s parametrima koje smo naveli.
pgAdmin

U ovom lokalnom poslužitelju osim čvora Baze podataka također možete pronaći čvor tzv Uloge za prijavu- sve dostupne uloge.

Odaberimo iz svih dostupnih baza podataka onu s kojom smo kreirali. Baza podataka sadrži mnogo različitih vrsta objekata. Posebnu pažnju treba obratiti na tablice i sekvence ( sekvence).

Najčešće, obična tablica sadrži primarni ključ u obliku pozitivne numeričke vrijednosti. Ova vrijednost mora biti jedinstvena za svaki red, tako da je ne biste svaki put postavljali izravno u zahtjevu, slijed možete postaviti kao zadanu vrijednost.

Prvo, napravimo slijed. Mi biramo Sekvence - Nova sekvenca... Na prvoj kartici unesite naziv i navedite ga kao Vlasnik ulogu koju smo stvorili. Ovaj slijed neće biti dostupan za druge uloge. Na drugoj kartici u polja Povećanje i Početak unosimo jedan po jedan (osim ako ne zahtijevate drugačije). Na posljednjoj kartici dijaloškog okvira možete vidjeti rezultirajući SQL upit koji će se izvršiti prema bazi podataka.

Nakon što je slijed kreiran, krenimo stvarati tablicu. Navodimo i njezino ime i vlasnika (vlasnicu). Na četvrtoj kartici Kolumne dodajemo prije svega primarni ključ. Dugme Dodati, u prozoru koji se pojavi naznačite naziv stupca, na primjer, iskaznica... Odabiremo kao tip podataka bigint... Na drugoj kartici Definicija u polju Zadana vrijednost označavamo naš slijed. Polje mora sadržavati vrijednost obrasca nextval ("message_id_seq" :: regclass)... To jest, svaki put kada se doda novi redak, sljedeća vrijednost će se uzeti iz niza. Po potrebi su dodani i drugi stupci. Konačno, u kartici Ograničenja dodajte ograničenje na primarni ključ ( Glavni ključ). Na posljednjoj kartici možemo se diviti rezultirajućem SQL kodu koji je pgAdmin generirao. Nakon klika na OK, tablica će biti kreirana.

Umjesto bigint-a kao primarnog ključa, možete ga navesti kao vrstu stupca bigserial... Ovaj tip se automatski povećava sa svakim novim redom koji se dodaje, tako da nema potrebe za stvaranjem slijeda za njega. Odnosno, u najjednostavnijem slučaju, ako nemate nikakva posebna pravila za generiranje ID-a zapisa, možete preporučiti korištenje bigseriala.

Pogledajmo sadržaj naše tablice. Da biste to učinili, kliknite ga desnom tipkom miša i odaberite iz kontekstnog izbornika Pregledajte podatke - Pregledajte 100 redaka.

U istom prozoru možete brzo urediti vrijednost bilo koje ćelije u tablici. Ako vaša tablica ima više od 100 zapisa, promijenite broj zapisa koji se prikazuje na padajućem popisu pri vrhu prozora. Možete prikazati 100, 500, 1000 ili sve zapise. Ali ovo nije ništa drugo nego način da brzo pogledate sadržaj tablice i na to se ne biste trebali navikavati. Ako imate desetke tisuća zapisa u svojoj tablici, ne bih preporučio prikazivanje svih zapisa odjednom - u ovom slučaju je bolje napisati upit pomoću parametara ograničiti i offset.

15 korisnih PostgreSQL naredbi

Na mreži postoji mnogo PostgreSQL vodiča koji opisuju osnovne naredbe. No kako dublje zaronite u posao, pojavljuju se praktična pitanja koja zahtijevaju napredne timove.

Takve su naredbe ili isječci rijetko dokumentirani. Pogledajmo nekoliko primjera, korisnih i za programere i za administratore baza podataka.

Dobivanje informacija o bazi podataka

Veličina baze podataka

Da bismo dobili fizičku veličinu datoteka (pohrane) baze podataka, koristimo sljedeći upit:

SELECT pg_database_size (trenutna_baza_podataka ());

Rezultat će biti predstavljen kao broj poput 41809016.

current_database () je funkcija koja vraća naziv trenutne baze podataka. Umjesto toga, možete unijeti ime u tekst:

SELECT pg_database_size ("moja_baza podataka");

Kako bismo dobili informacije u ljudskom čitljivom obliku, koristimo funkciju pg_size_pretty:

ODABIR pg_size_pretty (pg_database_size (trenutna_baza podataka ()));

Kao rezultat, dobivamo informacije u obliku 40 Mb.

Popis tablica

Ponekad želite dobiti popis tablica baze podataka. Da biste to učinili, koristite sljedeći upit:

SELECT table_name FROM information_schema.tables WHERE table_schema NOT IN ("information_schema", "pg_catalog");

information_schema je standardna shema baze podataka koja sadrži zbirke pogleda kao što su tablice, polja itd. Tablični prikazi sadrže informacije o svim tablicama u bazi podataka.

Dolje opisan upit će odabrati sve tablice iz navedene sheme trenutne baze podataka:

SELECT table_name FROM information_schema.tables GDJE table_schema NIJE IN ("information_schema", "pg_catalog") AND table_schema IN ("javna", "myschema");

U posljednjoj IN klauzuli možete odrediti naziv određene sheme.

Veličina stola

Analogno dobivanju veličine baze podataka, veličina podataka tablice može se izračunati pomoću odgovarajuće funkcije:

SELECT pg_relation_size ("računi");

Funkcija pg_relation_size vraća količinu prostora koju navedeni sloj navedene tablice ili indeksa zauzima na disku.

Naziv najvećeg stola

Da biste prikazali popis tablica u trenutnoj bazi podataka, razvrstanih po veličini tablice, izvršite sljedeći upit:

SELECT relname, relpages FROM pg_class ORDER BY relpages DESC;

Kako bismo prikazali informacije o najvećoj tablici, ograničavamo upit pomoću LIMIT:

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

relname je naziv tablice, indeksa, pogleda itd.
relpages - veličina prikaza na disku ove tablice u broju stranica (prema zadanim postavkama, jedna stranica je 8 KB).
pg_class je tablica sustava koja sadrži informacije o odnosima između tablica baze podataka.

Popis povezanih korisnika

Da biste saznali naziv, IP i korišteni port povezanih korisnika, pokrenite sljedeći upit:

SELECT dataname, usename, client_addr, client_port FROM pg_stat_activity;

Aktivnost korisnika

Da bismo saznali aktivnost povezivanja određenog korisnika, koristimo sljedeći upit:

SELECT dataname FROM pg_stat_activity WHERE usename = "devuser";

Rad s poljima podataka i tablica

Uklanjanje duplih linija

Ako se dogodi da tablica nema primarni ključ, vjerojatno će među zapisima biti duplikati. Ako je za takvu tablicu, posebno veliku, potrebno postaviti ograničenja za provjeru integriteta, tada ćemo ukloniti sljedeće elemente:

  • duple linije,
  • situacije kada se jedan ili više stupaca duplicira (ako se ti stupci trebaju koristiti kao primarni ključ).

Razmislite o tablici s podacima o kupcima, gdje je cijeli red dupliciran (drugi u nizu).

Sljedeći upit pomoći će ukloniti sve duplikate:

IZBRIŠI IZ kupaca GDJE ctid NIJE IN (ODABIR max (ctid) IZ kupaca GRUPA PO kupcima. *);

Polje ctid, koje je jedinstveno za svaki zapis, skriveno je prema zadanim postavkama, ali je prisutno u svakoj tablici.

Posljednji zahtjev zahtijeva puno resursa, stoga budite oprezni kada ga izvršavate na proizvodnom projektu.

Sada razmotrite slučaj kada se vrijednosti polja ponavljaju.

Ako je moguće izbrisati duplikate bez spremanja svih podataka, izvršit ćemo sljedeći upit:

IZBRIŠI IZ kupaca GDJE ctid NIJE IN (ODABIR max (ctid) FROM kupaca GROUP BY customer_id);

Ako su podaci važni, prvo morate pronaći zapise s duplikatima:

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

Prije brisanja takvih zapisa, možete prijeći na privremenu tablicu ili zamijeniti vrijednost customer_id u njima drugom.

Opći oblik zahtjeva za brisanje gore opisanih zapisa je sljedeći:

DELETE FROM table_name WHERE ctid NOT IN (SELECT max (ctid) FROM table_name GROUP BY column1,);

Sigurno promijenite vrstu polja

Može se postaviti pitanje o uključivanju takvog zadatka na ovaj popis. Doista, u PostgreSQL-u je vrlo lako promijeniti vrstu polja pomoću naredbe ALTER. Pogledajmo ponovno tablicu kupaca kao primjer.

Polje customer_id koristi tip podataka niza varchar. Ovo je pogreška jer bi ovo polje trebalo pohranjivati ​​ID-ove korisnika koji su u cjelobrojnom formatu. Korištenje varchara nije opravdano. Pokušajmo ispraviti ovaj nesporazum pomoću naredbe ALTER:

ALTER TABLE kupci ALTER COLUMN customer_id TYPE cijeli broj;

Ali kao rezultat izvršenja dobivamo pogrešku:

GREŠKA: stupac "customer_id" ne može se automatski pretvoriti u cijeli broj
SQL stanje: 42804
Savjet: Navedite izraz USING za izvođenje konverzije.

To znači da ne možete samo uzeti i promijeniti vrstu polja ako postoje podaci u tablici. Budući da je korišten tip varchar, DBMS ne može odrediti je li vrijednost cijeli broj. Iako podaci točno odgovaraju ovoj vrsti. Kako bismo pojasnili ovu točku, poruka o pogrešci predlaže korištenje izraza USING za ispravnu konverziju naših podataka u cijeli broj:

ALTER TABLE kupci ALTER COLUMN customer_id TYPE integer USING (customer_id :: integer);

Kao rezultat, sve je prošlo bez grešaka:

Napominjemo da je prilikom korištenja USING, osim određenog izraza, moguće koristiti funkcije, druga polja i operatore.

Na primjer, pretvorimo polje customer_id natrag u varchar, ali s pretvorbom formata podataka:

ALTER TABLE kupci ALTER COLUMN customer_id TYPE varchar USING (korisnički_id || "-" || first_name);

Kao rezultat, tablica će izgledati ovako:

Pronalaženje "izgubljenih" vrijednosti

Budite oprezni kada koristite sekvence kao primarni ključ: prilikom dodjele neki elementi niza se slučajno preskaču, a kao rezultat rada s tablicom, neki zapisi se brišu. Ove vrijednosti se mogu ponovno koristiti, ali ih je teško pronaći u velikim tablicama.

Razmotrimo dvije opcije pretraživanja.

Prvi način
Izvršimo sljedeći upit da pronađemo početak intervala s "izgubljenom" vrijednošću:

SELECT customer_id + 1 FROM kupaca mo WHERE NE EXISTS (ODABIR NULL FROM kupaca mi WHERE mi.customer_id = mo.customer_id + 1) ORDER BY customer_id;

Kao rezultat, dobivamo vrijednosti: 5, 9 i 11.

Ako trebate pronaći ne samo prvo pojavljivanje, već i sve vrijednosti koje nedostaju, koristimo sljedeći (resursno intenzivan!) upit:

WITH seq_max AS (SELECT max (customer_id) FROM kupaca), seq_min AS (SELECT min (customer_id) FROM kupaca) SELECT * FROM generate_series ((SELECT min FROM seq_min), (SELECT max FROM seq_max)) OSIM SELECT customer_id FROM kupaca;

Kao rezultat, vidimo sljedeći rezultat: 5, 9 i 6.

Drugi način
Dobivamo naziv sekvence povezane s customer_id:

SELECT pg_get_serial_sequence ("customers", "customer_id");

I nalazimo sve identifikatore koji nedostaju:

WITH sekvence_info AS (SELECT start_value, last_value FROM "SchemaName". "SequenceName") SELECT generate_series ((sequence_info.start_value), (sequence_info.last_value)) FROM sekvence_info OSIM SELECT customer_id FROM kupaca;

Brojanje reda u tablici

Broj redaka izračunava se standardnom funkcijom brojanja, ali se može koristiti uz dodatne uvjete.

Ukupan broj redaka u tablici:

SELECT count (*) IZ tablice;

Broj redaka pod uvjetom da navedeno polje ne sadrži NULL:

SELECT count (col_name) FROM tablica;

Broj jedinstvenih redaka za navedeno polje:

SELECT count (različiti naziv_stupca) IZ tablice;

Korištenje transakcija

Transakcija kombinira slijed radnji u jednu operaciju. Njegova je posebnost da ako dođe do pogreške u izvršenju transakcije, nijedan rezultat radnji neće biti spremljen u bazu podataka.

Pokrenimo transakciju pomoću naredbe BEGIN.

Da biste vratili sve operacije nakon BEGIN, koristite naredbu ROLLBACK.

A primijeniti - naredbu COMMIT.

Pregledavanje i dovršavanje izvršnih zahtjeva

Da biste dobili informacije o zahtjevima, pokrenite sljedeću naredbu:

SELECT pid, age (query_start, clock_timestamp ()), usename, query FROM pg_stat_activity WHERE upit! = " "AND query NOT ILIKE"% pg_stat_activity% "ORDER BY query_start desc;

Da biste zaustavili određeni zahtjev, izvršite sljedeću naredbu, navodeći ID procesa (pid):

SELECT pg_cancel_backend (procpid);

Da biste prekinuli zahtjev, izvršite:

SELECT pg_terminate_backend (procpid);

Rad s konfiguracijom

Pronalaženje i promjena lokacije instance klastera

Moguća je situacija kada je na jednom operativnom sustavu konfigurirano nekoliko PostgreSQL instanci koje "sjede" na različitim portovima. U ovom slučaju, pronalaženje puta do fizičke lokacije svake instance prilično je naporan zadatak. Kako bismo dobili ove informacije, izvršit ćemo sljedeći upit za bilo koju bazu podataka klastera od interesa:

PRIKAŽI imenik_podataka;

Promijenimo lokaciju u nešto drugo pomoću naredbe:

SET data_directory na new_directory_path;

Ali potrebno je ponovno pokretanje kako bi promjene stupile na snagu.

Dobivanje popisa dostupnih vrsta podataka

Uzmimo popis dostupnih vrsta podataka pomoću naredbe:

SELECT typname, typlen iz pg_type gdje je typtype = "b";

typname je naziv tipa podataka.
typlen je veličina tipa podataka.

Promjena postavki DBMS-a bez ponovnog pokretanja

PostgreSQL postavke se nalaze u posebnim datotekama kao što su postgresql.conf i pg_hba.conf. Nakon promjene ovih datoteka, potrebno je da DBMS ponovno primi postavke. Da biste to učinili, poslužitelj baze podataka se ponovno pokreće. Jasno je da to morate učiniti, ali na produkcijskoj verziji projekta, koju koriste tisuće korisnika, to je vrlo nepoželjno. Stoga PostgreSQL ima funkciju s kojom možete primijeniti promjene bez ponovnog pokretanja poslužitelja:

SELECT pg_reload_conf ();

Ali, nažalost, to se ne odnosi na sve parametre. U nekim je slučajevima potrebno ponovno pokretanje za primjenu postavki.

Pokrili smo naredbe koje pomažu razvojnim programerima i DBA-ovima koji koriste PostgreSQL. Ali to nisu sve moguće tehnike. Ako ste naišli na zanimljive probleme, napišite o njima u komentarima. Podijelimo jedno korisno iskustvo!