Aan de slag met PostgreSQL. Aan de slag met PostgreSQL - Videotutorials

  • Handleiding

Ik wilde een prachtige, uitgebreide Getting Start-handleiding maken, zonder enige poespas, maar inclusief de basiskennis voor beginners op het PostgreSQL-systeem in Linux.

PostgreSQL is een object-relationeel databasebeheersysteem (ORDBMS) gebaseerd op POSTGRES, versie 4.2, ontwikkeld aan de University of California, Berkeley, Department of Computer Science.

PostgreSQL is open bron afstammeling van de originele Berkeley-code. Hij ondersteunt het grootste deel van SQL-standaard en biedt veel moderne functies:

  • Complexe zoekopdrachten
  • Gelijktijdigheid beheren met multi-versiebeheer
Bovendien kan PostgreSQL op vele manieren door de gebruiker worden uitgebreid, bijvoorbeeld door nieuwe toe te voegen
  • gegevenstypen
  • functies
  • exploitanten
  • geaggregeerde functies
  • methode-index
  • procedurele talen

Montage en installatie

Zoals alle fans van het reguliere PostgreSQL zullen we uiteraard kant-en-klare pakketten verzamelen en niet downloaden (de Debian-repository's hebben bijvoorbeeld niet de nieuwste versie). Er zijn veel versies, het is natuurlijk het beste om de nieuwste te downloaden. Op het moment dat dit bericht wordt geschreven, is dit versie 9.2.2

Wget http://ftp.postgresql.org/pub/source/v9.2.2/postgresql-9.2.2.tar.gz tar xzf postgresql-9.2.2.tar.gz
Nu hebben we een map met de bronnen van deze prachtige database.
Standaard worden de databasebestanden geïnstalleerd in de map /usr/local/pgsql, maar deze map kan worden gewijzigd door in te stellen

Voorvoegsel=/pad/naar/pgsql
vóór het commando ./configure
Voordat u gaat bouwen, kunt u de C++-compiler specificeren

CC=gcc exporteren
PostgeSQL kan de readline-bibliotheek gebruiken. Als u deze niet heeft en deze niet wilt installeren, geeft u gewoon de optie op

Zonder leesregel
Ik hoop dat iedereen Autotools heeft? Vervolgens doorsturen naar de vergadering:

Cd postgresql-9.2.2 ./configure --without-readline sudo make install clean
Allemaal heren! Gefeliciteerd!

Instellingen

We moeten de gegevensopslag van onze databases (cluster) specificeren en lanceren.

Er is één voorbehoud: de eigenaar van de gegevensdirectory en de gebruiker die de database kan starten, mogen geen root zijn. Dit wordt gedaan voor systeembeveiligingsdoeleinden. Laten we daarom een ​​speciale gebruiker aanmaken
sudo useradd postgres -p postgres -U -m
En dan is alles duidelijk

Sudo chown -R postgres:postgres /usr/local/pgsql
Een belangrijk proces. We moeten het databasecluster initialiseren. We moeten dit doen namens de postgres-gebruiker

Initdb -D /usr/local/pgsql/data
Nu moeten we toevoegen PostgreSQL lanceren automatisch starten. Hiervoor bestaat een kant-en-klaar script en dit bevindt zich in postgresql-9.2.2/contrib/start-scripts/linux
U kunt dit bestand openen en op de volgende variabelen letten:

  • voorvoegsel- dit is de plaats waar we PostgreSQL hebben geïnstalleerd en gespecificeerd in ./configure
  • PGDATA- dit is waar het databasecluster wordt opgeslagen en waar onze postgres-gebruiker toegang zou moeten hebben
  • PGUSER- dit is dezelfde gebruiker namens wie alles zal werken
Als alles correct is, voeg dan ons script toe aan init.d

Sudo cp ./postgresql-9.2.2/contrib/start-scripts/linux /etc/init.d/postgres sudo update-rc.d postgres standaardwaarden
We starten het systeem opnieuw op om te controleren of ons script werkt.
Binnenkomen

/usr/local/pgsql/bin/psql -U postgres
En als er een venster verschijnt voor het werken met de database, dan is de installatie geslaagd! Gefeliciteerd!
Standaard wordt er een database met de naam postgres gemaakt

# TYPE DATABASE GEBRUIKERSADRES METHODE lokaal alle alle trust host alle alle 127.0.0.1/32 trust host alle alle::1/128 trust
De eerste lijn is verantwoordelijk voor de lokale verbinding, de tweede voor de IPv4-verbinding en de derde voor het IPv6-protocol.
Meest laatste parameter- dit is precies de autorisatiemethode. Laten we ernaar kijken (alleen de belangrijkste)

  • vertrouwen- toegang tot de database kan worden verkregen door iedereen onder welke naam dan ook die daarmee verbonden is.
  • afwijzen- onvoorwaardelijk afwijzen! Dit is geschikt voor het filteren van specifieke IP-adressen
  • wachtwoord- vereist een verplicht wachtwoord. Niet geschikt voor lokale gebruikers, alleen gebruikers die zijn aangemaakt met de opdracht CREATE USER
  • identi- staat alleen de gebruiker toe die is geregistreerd in het bestand /usr/local/pgsql/data/pg_ident.conf om een ​​verbinding met de database tot stand te brengen.
Ik zal u kort vertellen over de belangrijkste hulpprogramma's die nuttig zullen zijn bij uw werk.

Hulpprogramma's voor het werken met de database

pg_config
Geeft informatie over de stroom terug geïnstalleerde versie PostgreSQL.
initdb
Initialiseert een nieuw gegevensarchief (databasecluster). Een cluster is een verzameling databases die wordt beheerd door één serverinstantie. initdb moet worden uitgevoerd als de toekomstige eigenaar van de server (zoals hierboven vermeld als postgres).
pg_ctl
Beheert het PostgreSQL-serverproces. Hiermee kunt u de server starten, opnieuw opstarten, stoppen, een logbestand opgeven en meer.
psql
Klant voor het werken met een database. Hiermee kunt u SQL-bewerkingen uitvoeren.
gemaaktb
Creëert een nieuwe database. Standaard wordt de database gemaakt namens de gebruiker die de opdracht uitvoert. Om echter een andere op te geven, moet u de optie -O gebruiken (als de gebruiker daartoe de benodigde rechten heeft). In wezen is het een SQL-wrapper voor de opdracht CREATE DATABASE.
dropdb
Verwijdert de database. Is een SQL-wrapper voor de DROP DATABASE-opdracht.
maakgebruiker
Voegt een nieuwe databasegebruiker toe. Is een SQL-wrapper voor de opdracht CREATE ROLE.
dropgebruiker
Verwijdert een databasegebruiker. Is een SQL-wrapper voor de DROP ROLE-opdracht.
maaklang
Voegt toe nieuwe taal programmeren in de PostgreSQL-database. Is een SQL-wrapper voor de opdracht CREATE LANGUAGE.
droplang
Verwijdert een programmeertaal. Is een SQL-wrapper voor de DROP LANGUAGE-opdracht.
pg_dump
Maakt een back-up (dump) van de database naar een bestand.
pg_herstel
Herstelt een databaseback-up (dump) vanuit een bestand.
pg_dumpall
Maakt een back-up (dump) van het gehele cluster naar een bestand.
herindexdb
Indexeert de database opnieuw. Is een SQL-wrapper voor de REINDEX-opdracht.
geclusterdb
Herclustert tabellen in de database. Is een SQL-wrapper voor de opdracht CLUSTER.
vacuümdb
Vuilnisverzamelaar en database-optimalisatie. Is een SQL-wrapper voor de VACUUM-opdracht.

Databasebeheerders

Wat betreft de databasemanager, dat wil zeggen php-beheerder- Dit

Nu zullen we kijken naar het proces van het installeren van een nieuwe versie van het DBMS PostgreSQL 9.5 per besturingssysteem Windows 7 en ontdek ook wat er nieuw is in deze versie en waar u deze kunt downloaden.

Uitgebracht op 01/07/2016 nieuwe versie PostgreSQL DBMS, namelijk PostgreSQL 9.5, maar voordat u nieuwe functies gaat overwegen, raad ik u aan te onthouden wat PostgreSQL in het algemeen is, en vervolgens door te gaan met het installeren en beoordelen van de nieuwe versie.

Wat is PostgreSQL?

PostgreSQL is een gratis en populair object-relationeel databasebeheersysteem (DBMS) over de hele wereld. PostgreSQL is geïmplementeerd voor veel besturingssystemen, bijvoorbeeld: Linux, Solaris, Windows. Er wordt gebruik gemaakt van een procedurele uitbreiding SQL-taal PL/pgSQL.

Wat is er nieuw in PostgreSQL 9.5?

Deze versie heeft heel wat nieuwe functies die erg handig zullen zijn voor ontwikkelaars, hier zijn er enkele:

  • INSERT, BIJ CONFLICT-UPDATE(UPSERT) – deze kans Hiermee kunt u omgaan met een situatie waarin het onmogelijk is om gegevens toe te voegen via INSERT, bijvoorbeeld vanwege een schending van de uniciteit of een ongeldige waarde in een van de velden. Met andere woorden, in plaats van een fout te genereren, kunt u eenvoudigweg de uitvoering van de instructie overslaan, d.w.z. niets doen of de gegevens wijzigen die aan het sleutelveld zijn gekoppeld, d.w.z. in het geval dat het record al bestaat, voert u UPDATE uit in plaats van INSERT;
  • ROLLUP-, KUBUS- en GROEPSETS– deze operators breiden de mogelijkheden van GROUP BY uit, namelijk dat u rapporten kunt genereren, d.w.z. schrijf query's waarin u rijen met een subtotaal en eindtotaal kunt toevoegen, en ook de resultaten van verschillende groeperingen kunt combineren in één gegevensset. Bij Microsoft SQL-server soortgelijke operators bestaan ​​al een hele tijd, en jij en ik hebben ze in dit materiaal gedetailleerd besproken;
  • Beveiliging op rijniveau(RLS) is de zogenaamde “ Beveiligingsbeleid op rijniveau"d.w.z. Nu kunt u de toegang tot gegevens in de tabel beperken;
  • BRIN-indexen- Dit nieuw soort indexen, die is ontworpen om zeer grote tafels, waarin bepaalde kolommen op natuurlijke wijze worden gesorteerd;
  • Snelheid sorteren– in PostgreSQL 9.5, bij het sorteren, het zogenaamde algoritme “ verkorte toetsen", waarmee u tekstgegevens en gegevens van het type NUMERIEK meerdere keren sneller kunt sorteren.

Meer details over alle innovaties in PostgreSQL 9.5 kunt u zien op de pagina in “ PostgreSQL-wiki"Hier is het: wat is er nieuw in PostgreSQL 9.5.

Waar kan ik PostgreSQL 9.5 voor Windows 7 downloaden?

Nadat u de pagina heeft bereikt, klikt u op “ Downloaden»

U wordt dan doorgestuurd naar de PostgreSQL-versieselectiepagina, in ons geval bevinden we ons in de “ Versie 9.5.0» selecteer « Win x86-32" voor 32-bits Windows of " Win x86-64» voor 64-bits. Ik heb 32-bit Windows 7, dus ik klik op de knop "Win x86-32".

Als gevolg hiervan wordt het bestand gedownload, dat we zullen gebruiken om PostgreSQL te installeren.

PostgreSQL 9.5 installeren op Windows 7

Laten we dus verder gaan met het installeren van PostgreSQL 9.5, trouwens, we hebben eerder gesproken over het installeren van PostgreSQL, voor beginners liet ik bijvoorbeeld zien hoe je PostgreSQL op Linux OpenSUSE 13.2 kunt installeren, en in het materiaal "PostgreSQL 9.4 installeren op CentOS 7.1 ” we bespraken hoe je een zogenaamde DBMS-server kunt implementeren met behulp van PostgreSQL en kunt bedienen Linux-systemen met de CentOS 7.1-distributie als voorbeeld. PostgreSQL op het besturingssysteem installeren Windows-systeem we hebben er niet over nagedacht, dus vandaag installeren we PostgreSQL 9.5 op Windows 7.

Stap 1

Voer het gedownloade bestand uit ( postgresql-9.5.0-1-windows.exe). Als gevolg hiervan zal het installatieprogramma starten en het eerste venster is het “ Groeten", klik op" Volgende».

Stap 2

In het volgende venster specificeren we de map waarin PostgreSQL geïnstalleerd moet worden, ik laat deze als standaard staan ​​( die. C rijden), klik op " Volgende».

Stap 3

Vervolgens geven we de map aan waarin de databasebestanden standaard worden geplaatst. Met andere woorden, hier kunt u tijdens de installatie de map voor het opslaan van databasebestanden wijzigen; dit kan nodig zijn in gevallen waarin het aantal databases groot is of de omvang ervan, d.w.z. Het volume zal aanzienlijk zijn, zoals u begrijpt, in deze gevallen is het beter om een ​​afzonderlijke schijf met voldoende capaciteit te specificeren. In mijn geval is dit een testinstallatie, dus ik laat het op de standaardinstelling, klik op " Volgende».

Stap 4

Vervolgens bedenken, voeren we een wachtwoord in en onthouden we het voor de postgres-gebruiker ( Ter bevestiging moet u in twee velden hetzelfde wachtwoord invoeren), is deze specifieke gebruiker een soort " Supergebruiker"d.w.z. hoofdbeheerder, klik op " Volgende».

Stap 5

Stap 6

Vervolgens specificeren we Locale ( deze parameter bepaalt de gegevenscodering in de database), als de standaardwaarde behouden blijft, zal de gegevenscodering in de databases UTF-8 zijn, maar als u een andere codering nodig heeft, bijvoorbeeld Windows-1251, dan moet u “ Rusland, Rusland", laat ik het als standaard, d.w.z. " Standaardlandinstelling", klik op" Volgende».

Stap 7

Alles is klaar voor installatie, klik op “ Volgende».

De installatie is begonnen, het proces duurt slechts een paar minuten.

Stap 8

De installatie wordt voltooid en in het laatste venster wordt ons gevraagd de tool uit te voeren ( Stapelbouwer) om extra PostgreSQL-componenten te installeren. Als u niets extra's wilt installeren, moet u het overeenkomstige vakje uitschakelen en op " klikken Finish».

Start pgAdmin en controleer de werking van PostgreSQL 9.5

Het PostgreSQL 9.5-installatieprogramma bevat pgAdmin 1.22.0, d.w.z. Bovendien is het niet nodig om pgAdmin afzonderlijk te installeren op de computer waarop u PostgreSQL 9.5 installeert.

Als iemand pgAdmin niet kent, is dit speciaal grafische omgeving programmeren en beheren voor PostgreSQL DBMS.

Om pgAdmin te starten, klikt u op " Start -> Alle programma's -> PostgreSQL 9.5 -> pgAdmin III»

We zullen het al hebben weergegeven lokale server we moeten er verbinding mee maken, klik dubbelklikken Door " PostgreSQL 9.5 (localhost:5432)».

Vervolgens moet u het wachtwoord invoeren dat we hebben bedacht toen we PostgreSQL 9.5 installeerden ( Om te voorkomen dat u elke keer uw wachtwoord moet invoeren, kunt u het selectievakje ‘Wachtwoord opslaan’ aanvinken). Klik op " OK».

Als de " Wachtwoord opslaan"Je hebt het ingesteld, dan verschijnt er een venster met de waarschuwing dat het opslaan van wachtwoorden onveilig is, omdat het wachtwoord in platte tekst wordt opgeslagen in het bestand pgpass.conf dat zich in de profielmap bevindt Windows-gebruiker. Klik op " OK».

Laten we, om naar de PostgreSQL-versie te kijken, een eenvoudig SQL-query in de database die standaard wordt aangemaakt, d.w.z. in postgres.

Dat is alles voor mij, veel succes!

Aan de slag met PostgreSQL

Duur 00:41:44

Aan de slag met PostgreSQL - Volledige lijst met lessen

Uitvouwen / Samenvouwen
  • Les 1. Maak een Postgres-tabel 00:01:45
  • Les 2. Gegevens invoegen in Postgres-tabellen 00:04:24
  • Les 3. Gegevens filteren in een Postgres-tabel met query-instructies 00:03:35
  • Les 4. Gegevens bijwerken in Postgres 00:01:55
  • Les 5. Postgres-records verwijderen 00:02:43
  • Les 6. Gegevens groeperen en aggregeren in Postgres 00:06:45
  • Les 7. Postgres-tabellen sorteren 00:01:20
  • Les 8. Zorg voor uniciteit in Postgres 00:03:53
  • Les 9. Gebruik externe sleutels om de gegevensintegriteit in Postgres te garanderen 00:02:18
  • Les 10. Maak externe sleutels voor meerdere velden in Postgres 00:03:08
  • Les 11. Aangepaste logica afdwingen met controlebeperkingen in Postgres 00:02:07
  • Les 12. Versnel Postgres-query's met indexen 00:02:33
  • Les 13. Vind kruisende gegevens met Postgres_Inner Join 00:04:26
  • Les 14. Selecteer Distinct Data in Postgres 00:00:52

De cursus 'Aan de slag met PostgreSQL' laat u zeggen dat u 'SQL kent': het maken van tabellen, invoegingen, selecties, updates, verwijderingen, aggregaties, indexen, joins en beperkingen. Onderweg zullen we problemen uit de echte wereld simuleren, zodat u kunt zien hoe krachtig PostgreSQL is!

24-04-2016 30-11--0001 ru 15 lessen

Als je SQL begint te beheersen, zul je tijdens het studeren veel vragen en onbegrijpelijke punten tegenkomen, waarvan de antwoorden in deze videocursus zijn voorbereid. Tijdens het trainingsproces komen onderwerpen aan bod zoals het maken van een database, het wijzigen en verwijderen ervan, de invoegoperator INSERT, het gebruik van de SELECT-query en WHERE-constructies, UPDATE- en DELETE-instructies, het maken diverse aansluitingen tussen tabellen met behulp van operatoren...

Duur 01:26:19

24-04-2016 30-11--0001 ru 9 lessen

Duur 08:50:57

17-06-2018 30-11--0001 ru 6 lessen

De PostgreSQL DBMS-cursus bestaat uit 6 lessen, bedoeld voor beginners die voor het eerst met het concept van een DBMS in aanraking komen. De cursus omvat zowel theoretische als praktische onderdelen. In deze cursus ontwerpen studenten een kleine database voor een supermarktketen en bepalen ze de benodigde structuur. Functionaliteit (indexen, views, triggers, functies). Na voltooiing van de cursus begrijpen studenten de principes van databaseontwerp...

Duur 03:05:26

28-11-2018 12-09-2018 nl 164 lessen

Creëer 9 projecten - beheers twee hoofd- en moderne technologieën in Python en PostgreSQL. Heb je ooit een van de populairste programmeertalen ter wereld willen leren? Waarom zou u niet tegelijkertijd twee van de meest populaire verkennen? Python en SQL worden door veel technologiebedrijven gebruikt, klein en groot. Dit komt omdat ze krachtig maar uiterst flexibel zijn.

Duur 21:53:10

27-12-2018 ru 10 lessen

Deze cursus is bedoeld om te studeren SQL-basisprincipes: theoretische grondslagen relationeel model, operaties relationele algebra, regels en doel van normalisatie, gebruik van ER-diagrammen voor modellering vakgebied, praktisch gebruik alle SQL-instructies (Data Definition Language (DDL) -instructies: CREATE, ALTER, DROP; Data Manipulation Language (DML):...

Duur 05:23:59

Laatst toegevoegd

ru 27-03-2019

In de masterclass ontwikkelen we een handige projectmanager waarmee u bedrijfsprojecten kunt beheren, taken kunt instellen, artiesten kunt toewijzen, werknemersrollen kunt beheren, de implementatie en planning kunt controleren. Wil je het Symfony Framework leren, kom dan naar ons voor een volledige meerdaagse...

nl 25-03-2019

In deze cursus gaan we kijken naar de bouwstenen van Angular Material. We beginnen met componenten die verband houden met navigatie, lay-out en structuur. Vervolgens bespreken we de hulpprogramma-, invoer- en gegevenscomponenten en laten we zien hoe elk ervan kan worden gebruikt om aan de behoeften van uw project te voldoen.

Hoe code correct in Java te schrijven, wat zijn de beste codeerpraktijken. Deze cursus is bedoeld voor volledige studie beste praktijken java, het is geschikt voor zowel mensen die net beginnen met het leren van Java, als voor degenen die al werkervaring hebben. Je zult deze praktijken volledig kunnen bestuderen...

Dit artikel pretendeert niet een volledige presentatie te zijn van alle PostgreSQL-configuratieopties, en bij vergelijkende tests behandel ik niet alle databasebedrijfsmodi. Ik raad geïnteresseerden aan om het boek via de link te bestuderen

Invoering

Ik heb veel met PostgreSQL gewerkt en vind het een uitstekend DBMS. Ik heb een werkende database van meerdere gigabytes (niet 1C) die onmiddellijk enorme hoeveelheden gegevens verwerkt. PostgreSQL maakt uitstekend gebruik van indexen, kan goed overweg met parallelle belastingen, de functionaliteit van opgeslagen procedures is uitstekend, die zijn er goede middelen administratie en productiviteit out-of-the-box, en de gemeenschap heeft dit gecreëerd nuttige hulpprogramma's. Maar ik was verrast om te horen dat veel 1C-beheerders een slechte mening hebben over PostgreSQL, dat het traag is en nauwelijks beter presteert dan de bestandsversie van de database, en dat alleen MSSQL de situatie kan redden.

Nadat ik de vraag had onderzocht, vond ik veel artikelen over het stap voor stap installeren van PostgreSQL voor dummies, zowel op Linux als op Windows. Maar de overgrote meerderheid van de artikelen beschrijft de installatie tot "geïnstalleerd - laten we een database maken", en gaat helemaal niet in op de kwestie van de configuratie. In de overige gevallen wordt de configuratie alleen vermeld op het niveau ‘specificeer dergelijke waarden’, met vrijwel geen verklaring waarom.

En hoewel de “installatie met één knop” van toepassing is op MSSQL en veel Windows-producten in het algemeen, is deze helaas niet van toepassing op PostgreSQL. De standaardinstellingen beperken het geheugengebruik aanzienlijk, zodat u het zelfs op een rekenmachine kunt installeren en de werking van de rest van de software niet hindert. PostgreSQL moet worden geconfigureerd voor een specifiek systeem, en alleen dan kan het zijn beste prestaties leveren. In bijzonder moeilijke gevallen kun je de instellingen van PostgreSQL, de database en het bestandssysteem op elkaar afstemmen, maar dit geldt in sterkere mate voor Linux-systemen, waar er meer mogelijkheden zijn om alles aan te passen.

Er moet aan worden herinnerd dat voor 1C de PostgreSQL-assembly van de DBMS-ontwikkelaars niet geschikt is, deze is alleen samengesteld uit gepatchte 1C-broncodes. Klaar compatibele constructies biedt 1C (via ITS-schijven en een account voor mensen met een ondersteuningsabonnement) en EterSoft

Er zijn testen uitgevoerd in Windows-omgeving, maar alle configuratieaanbevelingen zijn niet platformspecifiek en van toepassing op elk besturingssysteem.

Testen en vergelijken

Bij het testen was het niet mijn bedoeling om tests in alle bedrijfsmodi en scenario's uit te voeren, maar alleen een ruwe controle van een succesvolle configuratie.

Voor het testen heb ik de volgende configuratie gebruikt:
Hostmachine: Win7, Core i5-760 2,8 MHz, 4 cores, 12 GB RAM, VMWare 10
Virtueel: Win7 x64, 2 cores, 4 GB RAM, afzonderlijk fysiek harde schijf voor het hosten van een database (geen SSD)
MSSQL Express 2014
PostgreSQL EtherSoft 9.2.1
1C 8.3.5 1383

Er werd gebruik gemaakt van een database, dt-upload 780MB.
Na het herstellen van de database:
bestandsgrootte 1CD in bestandsversie - 10GB,
PostgreSQL-databasegrootte - 8 GB,
De MSSQL-databasegrootte is 6,7 GB.

Voor de test heb ik gebruik gemaakt van een verzoek om een ​​voorbeeld van tegenpartijovereenkomsten (21k) met een selectie van aanvullende gegevens uit verschillende registers. Voor elke overeenkomst is daadwerkelijk een afzonderlijk monster uit de registers gemaakt. Ik heb de configuratie overgenomen die voorhanden was - sterk aangepast op basis van Accounting 3.0.

Tijdens het testen heb ik het verzoek verschillende keren bij één en twee klanten uitgevoerd totdat stabiele resultaten werden verkregen. De eerste runs negeerde ik.

Testen met één klant:

Bemonstering op de host vanuit een bestandsversie met de database op SSD geplaatst - 31c
Selecteren uit een bestandsvariant in virtuele machine(Met harde schijf) - 46s
Bemonstering uit een MSSQL-database - eerste doorgang - 25s of 9s (blijkbaar afhankelijk van de relevantie van de DBMS-cache) (geheugenverbruik door het DBMS-proces was ongeveer 1,3 GB)
Bemonstering uit PostgreSQL met standaardinstellingen - 43s (geheugenverbruik bedroeg niet meer dan 80 MB per verbinding)
Bemonstering uit geoptimaliseerde PostgreSQL - 21s (geheugenverbruik was 120 MB per verbinding)

Testen met twee klanten:

Bemonstering op de host vanuit een bestandsversie waarbij de database op een SSD is geplaatst - elk 34 seconden
Bemonstering van een bestandsversie op een virtuele machine (vanaf een harde schijf) - elk 56 seconden
Bemonstering uit een MSSQL-database - jaren 50 of 20 (blijkbaar afhankelijk van de relevantie van de DBMS-cache)
Bemonstering uit PostgreSQL met standaardinstellingen - elk 60s
Bemonstering uit geoptimaliseerde PostgreSQL - elk 40s

Testopmerkingen:

  1. Na het toevoegen van de derde kern begonnen PostgreSQL- en MSSQL-varianten te werken in de “twee clients”-test, bijna met de prestaties van de “één client”-test, d.w.z. succesvol geparallelliseerd. Wat hen ervan weerhield parallel werk aan twee kernen te doen, bleef voor mij een mysterie.
  2. MSSQL nam in één keer veel geheugen in beslag, PostgreSQL had aanzienlijk minder geheugen nodig in alle modi en gaf bijna alles onmiddellijk vrij nadat de query was voltooid.
  3. MSSQL draait als één proces. PostgreSQL lanceert een apart proces per verbinding + serviceprocessen. Hierdoor kan zelfs de 32-bits variant het geheugen efficiënt gebruiken bij het verwerken van verzoeken van meerdere clients.
  4. Het vergroten van het geheugen voor PostgreSQL in instellingen boven de onderstaande waarden leidde niet tot een merkbare prestatieverbetering.
  5. De eerste tests duurden in alle gevallen langer dan bij daaropvolgende metingen; ik heb geen speciale metingen gedaan, maar MSSQL startte subjectief sneller.

PostgreSQL configureren

Er is een uitstekend boek in het Russisch over het configureren en optimaliseren van PostgreSQL: het is voor elke olifantenliefhebber zinvol om deze link te bookmarken. Het boek beschrijft vele technieken voor het optimaliseren van DBMS, het creëren van fouttolerante en gedistribueerde systemen. Maar nu zullen we kijken naar iets dat voor iedereen nuttig zal zijn: het configureren van geheugengebruik. PostgreSQL zal niet meer geheugen gebruiken dan toegestaan ​​door de instellingen, en met standaardinstellingen gebruikt PostgreSQL een minimum aan geheugen. Tegelijkertijd moet u niet meer geheugen opgeven dan beschikbaar is voor gebruik; het systeem zal het wisselbestand gaan gebruiken met alle ernstige gevolgen van dien voor de serverprestaties. Een aantal tips over PostgreSQL instellen worden op de ITS-schijf gegeven.

In Windows bevinden de PostgreSQL-configuratiebestanden zich in de installatiemap in de map Data:

  • postgresql.conf- hoofdbestand met DBMS-instellingen
  • pg_hba.conf- een bestand met toegangsinstellingen voor klanten. Hier kunt u met name opgeven welke gebruikers vanaf welke IP-adressen verbinding kunnen maken met bepaalde databases en of het nodig is om het wachtwoord van de gebruiker te controleren, en zo ja, op welke manier.
  • pg_ident.conf- een bestand met conversie van gebruikersnamen van systeem naar intern (de meeste gebruikers hebben dit waarschijnlijk niet nodig)

De bestanden zijn tekst, je kunt ze bewerken met Kladblok. Lijnen beginnend met # worden beschouwd als opmerkingen en worden genegeerd.

Parameters met betrekking tot geheugencapaciteit kunnen worden aangevuld met achtervoegsels kB, MB, GB - kilobytes, megabytes, gigabytes, bijvoorbeeld 128MB. Parameters die tijdsintervallen beschrijven, kunnen worden aangevuld met de achtervoegsels ms, s, min, h, d - milliseconden, seconden, minuten, uren, dagen, bijvoorbeeld 5min

Als u het wachtwoord voor Postgress bent vergeten, is dat geen probleem, u kunt het invoeren pg_hba.conf lijn:

Host alle alle 127.0.0.1/32 vertrouwensrelaties

En maak verbinding door elke gebruiker (bijvoorbeeld postgres) naar het DBMS op de lokale machine op 127.0.0.1 zonder het wachtwoord te controleren.

Optimalisatie geheugengebruik

Instellingen voor geheugengebruik bevinden zich in postgresql.conf

Optimale parameterwaarden zijn afhankelijk van het vrije volume RAM, de grootte van de database en individuele elementen van de database (tabellen en indexen), de complexiteit van queries (in principe moet je ervan uitgaan dat de queries behoorlijk complex zullen zijn - meerdere verbindingen in queries zijn een typisch scenario) en het aantal gelijktijdig actieve klanten. Trouwens, PostgreSQL slaat databasetabellen en indexen op aparte bestanden (<каталог установки PG>\gegevens\basis\<идентификатор БД>\), en de afmetingen van objecten kunnen worden geschat. U kunt ook het meegeleverde pgAdmin-hulpprogramma gebruiken om verbinding te maken met de database, "Schema's" - "public" uit te vouwen en een statistisch rapport te genereren voor het element "Tables".

Vervolgens zal ik geschatte waarden geven van waaruit u kunt beginnen met afstemmen. Na de eerste installatie wordt aanbevolen om de server in de bedrijfsmodus te laten draaien en het geheugenverbruik te controleren. Afhankelijk van de verkregen resultaten kan het nodig zijn de parameterwaarden aan te passen.

Bij het opzetten van de server voor testen, vertrouwde ik op de volgende berekeningen:
Slechts 4 GB RAM. Consumenten - Windows OS, 1C-server, PostgreSQL en systeemschijfcache. Ik ging ervan uit dat er maximaal 2,5 GB RAM kan worden toegewezen voor het DBMS

Waarden kunnen worden opgegeven met de achtervoegsels kB, MB, GB (waarden in kilobytes, megabytes of gigabytes). Nadat u de waarden hebt gewijzigd, moet u de PostgreSQL-service opnieuw starten.

shared_buffers - Gedeelde serverbuffer

De grootte van de PostgreSQL-lees- en schrijfcache die door alle verbindingen wordt gedeeld. Als de gegevens zich niet in de cache bevinden, worden deze vanaf schijf gelezen (mogelijk in de cache opgeslagen door het besturingssysteem)

Als de buffergrootte onvoldoende is om veelgebruikte werkgegevens op te slaan, worden deze voortdurend geschreven en gelezen vanuit de cache van het besturingssysteem of vanaf schijf, wat een extreem negatieve invloed zal hebben op de prestaties.

Maar dit is niet al het geheugen dat nodig is voor de werking, u moet niet te veel opgeven grote waarde, anders zal er geen geheugen meer over zijn voor het daadwerkelijk uitvoeren van clientverzoeken (en hoe meer er zijn, hoe hoger het geheugengebruik), en voor het besturingssysteem en andere applicaties, bijvoorbeeld het 1C-serverproces. De server vertrouwt ook op de cache van het besturingssysteem en probeert niet in de buffer te bewaren wat hoogstwaarschijnlijk door het systeem in de cache is opgeslagen.

De gebruikte proef

gedeelde_buffers = 512 MB

werk_mem- geheugen voor sorteren, gegevensaggregatie, enz.

Toegewezen voor elk verzoek, mogelijk meerdere keren voor complexe verzoeken. Als er niet genoeg geheugen is, gebruikt PostgreSQL tijdelijke bestanden. Als de waarde te groot is, kan het RAM-geheugen te veel worden gebruikt en zal het besturingssysteem het wisselbestand gaan gebruiken, met een overeenkomstige prestatiedaling tot gevolg.

Er is een aanbeveling om bij het berekenen de hoeveelheid beschikbaar geheugen minus te nemen gedeelde_buffers en gedeeld door het aantal gelijktijdig uitgevoerde verzoeken. Bij complexe zoekopdrachten moet de deler worden vergroot, d.w.z. het resultaat verminderen. Voor het onderhavige geval, op basis van 5 actieve gebruikers(2,5 GB-0,5 GB (gedeelde_buffers))/5=400 MB. Als het DBMS de query's als behoorlijk complex beschouwt, of extra gebruikers, moet u de waarde verlagen.

Voor eenvoudige vragen Kleine waarden zijn voldoende - tot een paar megabytes, maar voor complexe zoekopdrachten (en dit is een typisch scenario voor 1C) zal er meer nodig zijn. Aanbeveling - voor geheugen 1-4GB kunt u waarden van 32-128MB gebruiken. Ik heb het in de test gebruikt

werk_mem = 128 MB

onderhouds_werk_mem- geheugen voor commando's voor het verzamelen van afval, statistieken en het maken van indexen.

Het wordt aanbevolen om de waarde in te stellen op 50-75% van de grootte van de grootste tabel of index, maar wel zo dat er voldoende geheugen is om het systeem en de applicaties uit te voeren. Het wordt aanbevolen om waarden groter dan work_mem in te stellen. Ik heb het in de test gebruikt
onderhouds_werk_mem = 192 MB

temp_buffers- een buffer voor tijdelijke objecten, voornamelijk voor tijdelijke tabellen.

Je kunt ongeveer 16 MB installeren. Gebruikt in de test
temp_buffers = 32 MB

effectieve_cache_grootte- geschatte hoeveelheid schijfcache bestandssysteem.

De optimizer gebruikt deze waarde bij het samenstellen van een queryplan om de waarschijnlijkheid te schatten dat gegevens in de cache (met snelle willekeurige toegang) of op internet worden gevonden. langzame schijf. IN Windows actueel De hoeveelheid geheugen die aan de cache is toegewezen, kan worden bekeken in Taakbeheer.

Autovacuüm - "vuilnisinzameling"

PostgreSQL blokkeert, als een typische vertegenwoordiger van DBMS'en met 'versiebeheer' (in tegenstelling tot het blokkeren van DBMS'en), niet zelfstandig tabellen en records van het lezen van transacties bij het wijzigen van gegevens (in het geval van 1C doet de 1C-server dit zelf). In plaats daarvan wordt een kopie van het gewijzigde record gemaakt, die zichtbaar wordt voor volgende transacties, terwijl bestaande records de gegevens blijven zien die actueel waren aan het begin van hun transactie. Als gevolg hiervan stapelen verouderde gegevens zich op in tabellen - eerdere versies gewijzigde records. Om ervoor te zorgen dat het DBMS de vrijgekomen ruimte kan gebruiken, is het noodzakelijk om "garbage collection" uit te voeren - om te bepalen welke van de records niet langer worden gebruikt. Dit kan expliciet worden gedaan met een SQL-opdracht VACUÜM of wacht tot de tabel is verwerkt automatische incasso prullenbak - AUTOVACUUM. Hetzelfde voorheen specifieke versie garbage collection werd geassocieerd met het verzamelen van statistieken (de planner gebruikt gegevens over het aantal records in tabellen en de verdeling van geïndexeerde veldwaarden om te bouwen optimaal plan verzoek). Aan de ene kant moet het verzamelen van afval worden gedaan, zodat tabellen niet groeien en efficiënt schijfruimte gebruiken. Aan de andere kant geeft de plotselinge start van de afvalinzameling extra lading naar schijf en tabellen, wat leidt tot een langere uitvoeringstijd van query's. Een soortgelijk effect wordt gecreëerd door het automatisch verzamelen van statistieken (uiteraard kan dit worden gestart met het commando ANALYSEREN of samen met afvalinzameling VACUÜM ANALYSE). En hoewel PostgreSQL deze mechanismen van versie tot versie verbetert om te minimaliseren negatieve invloed op prestatie (bijvoorbeeld in eerdere versies Garbage collection blokkeerde de toegang tot de tafel volledig, sinds versie 9.0 werkte het VACUÜM versneld), moet u hier iets configureren.

U kunt autovacuüm volledig uitschakelen met de volgende parameter:

autovacuüm = uit

Om Autovacuum te laten werken, is de parameter track_counts = on vereist, anders werkt deze niet.

Standaard zijn beide opties ingeschakeld. In feite kan autovacuüm niet volledig worden uitgeschakeld - zelfs als autovacuüm = uit, zal autovacuüm soms (na een groot aantal transacties) starten.

Opmerking: VACUÜM meestal wordt de tabelbestandsgrootte niet verkleind, maar worden alleen vrije gebieden gemarkeerd die beschikbaar zijn voor hergebruik. Als u fysiek overtollige ruimte wilt vrijmaken en de bezette schijfruimte wilt minimaliseren, heeft u de opdracht nodig VACUÜM VOL. Deze optie blokkeert de toegang tot de tabel terwijl deze actief is en is doorgaans niet vereist. Meer informatie over het gebruik van het VACUUM-commando vindt u in de documentatie (in het Engels).

Als Autovacuum niet volledig is uitgeschakeld, kunt u de invloed ervan op de uitvoering van query's configureren met behulp van de volgende parameters:

autovacuum_max_workers - maximale hoeveelheid parallel lopende reinigingsprocessen.

autovacuum_naptime - het minimale interval waarna autovacuüm niet zal starten. Standaard is 1 minuut. Je kunt het dan verhogen met frequente veranderingen data-analyse zal minder frequent worden uitgevoerd.

autovacuüm_vacuüm_drempel, - aantal wijzigingen of verwijderde vermeldingen in de tabel die nodig is om het afvalinzamelingsproces te starten VACUÜM of het verzamelen van statistieken ANALYSEREN. Standaard is 50.

autovacuüm_vacuüm_schaalfactor , autovacuum_analyse_schaalfactor - coëfficiënt van tabelgrootte in toegevoegde records autovacuüm_vacuüm_drempel En autovacuum_analyse_drempel respectievelijk. De standaardwaarden zijn respectievelijk 0,2 (dus 20% van het aantal records) en 0,1 (10%).

Laten we een voorbeeld bekijken met een tabel met 10.000 records. Vervolgens wordt, met de standaardinstellingen, na 50+10000*0,1=1050 gewijzigde of verwijderde records het verzamelen van statistieken gestart ANALYSEREN, en na 2050 veranderingen - afvalinzameling VACUÜM.

Als u de drempelwaarde en de schaalfactor verhoogt, worden onderhoudsprocessen minder vaak uitgevoerd, maar kunnen kleine tabellen aanzienlijk groeien. Als de database voornamelijk uit kleine tabellen bestaat, neemt de totale voetafdruk toe schijfruimte kan aanzienlijk zijn, dus u kunt deze waarden verhogen, maar wel verstandig.

Het kan dus zinvol zijn om het autovacuum_naptime-interval te vergroten, en de drempel en de schaalfactor enigszins te verhogen. In geladen databases kan het een alternatief zijn om de scale_factor aanzienlijk te verhogen (een waarde van 1 zorgt ervoor dat de tabellen tweemaal "opzwellen") en de dagelijkse uitvoering in te stellen op de planner VACUÜM ANALYSE tijdens perioden van minimale databasebelasting.

default_statistics_target - wijst de hoeveelheid statistieken toe die door de opdracht zijn verzameld ANALYSEREN. De standaardwaarde is 100. Grotere waarden verlengen de uitvoeringstijd van de opdracht ANALYZE, maar stellen de planner in staat efficiëntere queryplannen op te stellen. Er zijn aanbevelingen om te verhogen tot 300.

Prestaties kunnen worden gecontroleerd AUTOVACUUM, waardoor het langer wordt, maar minder belastend voor het systeem.

vacuüm_kosten_pagina_hit- de grootte van de “boete” voor het verwerken van een blok dat zich in gedeelde_buffers bevindt. Geassocieerd met de noodzaak om de toegang tot de buffer te blokkeren. Standaardwaarde 1

vacuum_cost_page_miss - de grootte van de "boete" voor het verwerken van een blok op schijf. Geassocieerd met het blokkeren van een buffer, het zoeken naar gegevens in een buffer, het lezen van gegevens van schijf. Standaardwaarde 10

vacuüm_kosten_pagina_dirty- de hoogte van de “boete” voor blokwijziging. Geassocieerd met de noodzaak om gewijzigde gegevens naar de schijf te resetten. Standaardwaarde 20

vacuüm_kosten_limiet - maximale grootte"boetes", waarna het assemblageproces kan worden "bevroren" voor de duur van vacuum_cost_delay. Standaard 200

vacuüm_kosten_vertraging- tijd om het afvalinzamelingsproces te “bevriezen” bij het bereiken van vacuüm_cost_limit. Standaardwaarde 0ms

autovacuum_vacuum_cost_delay- tijd om het afvalinzamelingsproces voor autovacuüm te “bevriezen”. Standaard is 20 ms. Indien ingesteld op -1, wordt de waarde vacuum_cost_delay gebruikt

autovacuum_vacuum_cost_limit- de maximale grootte van de "boete" voor autovacuüm. Standaardwaarde -1 - waarde vacuüm_kosten_limiet wordt gebruikt

Gerapporteerd gebruik vacuüm_kosten_pagina_hit = 6, vacuüm_kosten_limiet = 100, autovacuum_vacuum_cost_delay = 200 ms vermindert de impact van AUTOVACUUM tot 80%, maar verdrievoudigt de uitvoeringstijd.

Schijfopname instellen

Wanneer een transactie is voltooid, schrijft PostgreSQL eerst gegevens naar een speciaal transactielogboek WAL (Write-ahead log) en vervolgens naar de database nadat gegarandeerd is dat de loggegevens naar schijf worden geschreven. Het standaardmechanisme is fsync, wanneer PostgreSQL gegevens (logboek) met kracht van de schijfcache van het besturingssysteem naar schijf leegt, en pas na een succesvolle schrijfactie (logboek) wordt de client geïnformeerd dat de transactie met succes is voltooid. Met behulp van een transactielogboek kunt u een transactie voltooien of de database herstellen als er een fout optreedt tijdens het schrijven van gegevens.

In drukke systemen met grote schrijfvolumes kan het zinvol zijn om het transactielogboek naar een aparte fysieke schijf te verplaatsen (maar niet naar een andere partitie van dezelfde schijf!). Om dit te doen, moet u het DBMS stoppen, de map pg_xlog naar een andere locatie verplaatsen en een bestand maken symbolische link bijvoorbeeld het knooppunthulpprogramma. Far Manager (Alt-F6) kan ook koppelingen maken. In dit geval moet u ervoor zorgen dat de nieuwe locatie toegangsrechten heeft voor de gebruiker die PostgreSQL gebruikt (meestal postgres).

Bij grote hoeveelheden Gegevenswijzigingsbewerkingen kunnen het verhogen van de waarde checkpoint_segments vereisen, die de hoeveelheid gegevens regelt die kunnen wachten om van het logboek naar de database zelf te worden overgebracht. De standaardwaarde is 3. Er moet rekening mee worden gehouden dat er ruimte wordt toegewezen voor het logboek, berekend met de formule (checkpoint_segments * 2 + 1) * 16 MB, wat bij een waarde van 32 al meer dan 1 GB schijfruimte vereist ruimte.

PostgreSQL wist gegevens uit de cache van het besturingssysteembestand naar schijf nadat elke schrijftransactie is voltooid. Enerzijds garandeert dit dat de gegevens op de schijf altijd up-to-date zijn, anderzijds neemt bij een groot aantal transacties de prestatie af. Volledig uitschakelen fsync mogelijk door op te geven

fsync=uit
full_page_writes = uit

Dit kan alleen als u de apparatuur en de UPS voor 100% vertrouwt (bron ononderbroken stroomvoorziening). Anders voor het geval dat neerstorten systemen bestaat het risico dat de database wordt vernietigd. En in ieder geval zou een RAID-controller met een batterij om het geheugen van ongeschreven gegevens van stroom te voorzien ook geen kwaad kunnen.

Een definitief alternatief zou het gebruik van de parameter kunnen zijn

synchrone_commit = uit

In dit geval kan het, na een succesvol antwoord om de transactie te voltooien, enige tijd duren voordat de transactie veilig naar schijf wordt geschreven. In het geval dat plotselinge afsluiting de database wordt niet vernietigd, maar de gegevens van de laatste transacties kunnen wel verloren gaan.

Als u fsync niet volledig uitschakelt, kunt u de synchronisatiemethode in de parameter opgeven. Het artikel van de ITS-schijf verwijst naar het hulpprogramma pg_test_fsync, maar het werd niet gevonden in mijn PostgreSQL-build. Volgens 1C bleek de methode in hun geval in Windows optimaal te zijn open_datasync(blijkbaar is dit de methode die standaard wordt gebruikt).

Als er veel kleine schrijftransacties worden gebruikt (in het geval van 1C kan dit een enorme update van de map buiten de transactie zijn), een combinatie van de parameters commit_delay (vertragingstijd voor voltooiing van de transactie in microseconden, standaard 0) en commit_siblings (standaard 5) kan helpen. Wanneer de opties zijn ingeschakeld, kan de voltooiing van de transactie worden uitgesteld door commit_delay if op dit moment Er worden minimaal commit_siblings-transacties uitgevoerd. In dit geval wordt het resultaat van alle voltooide transacties samen geschreven om het schrijven naar de schijf te optimaliseren.

Andere parameters die de prestaties beïnvloeden

wal_buffers- de hoeveelheid geheugen in gedeelde_buffers voor het bijhouden van transactielogboeken. Aanbeveling: gebruik bij 1-4GB beschikbaar geheugen waarden van 256KB-1MB. In de documentatie staat dat het gebruik van de waarde "-1" de waarde automatisch aanpast, afhankelijk van de waarde van shared_buffers.

willekeurige_paginakosten- "prijs" willekeurige lezing, gebruikt bij het zoeken naar gegevens via indexen. Standaard is 4,0. De eenheid is tijd sequentiële toegang naar de gegevens. Voor de snelle schijfarrays, vooral SSD, is het logisch om de waarde te verlagen, in dit geval zal PostgreSQL indexen actiever gebruiken.

Het boek op de link bevat nog enkele andere parameters die kunnen worden geconfigureerd. Het wordt ook sterk aanbevolen dat u de PostgreSQL-documentatie over de toewijzing van specifieke parameters leest.

Het wordt aanbevolen om de parameters uit de sectie QUERY TUNING te wijzigen, vooral de parameters die betrekking hebben op het verbieden van de planner om specifieke zoekmethoden te gebruiken, alleen als u volledig begrijpt wat u doet. Het is heel gemakkelijk om één type zoekopdracht te optimaliseren en de prestaties van alle andere te verpesten. De effectiviteit van het wijzigen van de meeste parameters in deze sectie hangt af van de gegevens in de database, zoekopdrachten naar deze gegevens (dat wil zeggen, onder andere de gebruikte versie van 1C) en de versie van het DBMS.

Conclusie

PostgreSQL is een krachtig DBMS in in capabele handen, maar vereist een zorgvuldige configuratie. Het kan worden gebruikt in combinatie met 1C en levert behoorlijke prestaties op, en het vrije karakter ervan zal een zeer aangename bonus zijn.

Kritiek en aanvullingen op dit artikel zijn welkom.

Nuttige links

http://postgresql.leopard.in.ua/ - boekwebsite " Werken met PostgreSQL-configuratie en schaling ", naar mijn mening de meest complete en begrijpelijke gids voor het configureren en beheren van PostgreSQL

http://etersoft.ru/products/postgre - hier kunt u een 1C-compatibele build van PostgreSQL voor Windows en verschillende distributies en versies van Linux downloaden. Voor degenen die geen abonnement op ITS hebben of er een versie voor nodig hebben Linux-versie, die niet wordt gepresenteerd op v8.1c.ru.

http://www.postgresql.org/docs/9.2/static/ - officiële documentatie over PostgreSQL (in het Engels)

Artikelen van de ITS-schijf over het instellen van PostgreSQL

Geschiedenis van artikelbewerking

  • 29-01-2015 - eerste versie gepubliceerd
  • 31-01-2015 - het artikel is aangevuld met een sectie over AUTOVACUUM, er is een link naar de originele documentatie toegevoegd.

In de toekomst ben ik van plan de werking van het DBMS te testen in de modus voor het toevoegen en wijzigen van gegevens.

Systeembeheer

Dit bericht is korte instructies voor beginners, voor degenen die PostgreSQL voor de eerste keer hebben geïnstalleerd. Alles is hier noodzakelijke informatie om aan de slag te gaan met PostgreSQL.

Verbinding maken met het DBMS

Het eerste dat u moet doen, is toegang krijgen tot PostgreSQL, toegang als superuser.
Authenticatie-instellingen bevinden zich in het bestand pg_hba.conf.
  1. lokaal alle postgres-peers
Deze regel geeft aan dat de postgres-gebruiker via een socket verbinding kan maken met elke lokale PostgreSQL-database. Het is niet nodig om een ​​wachtwoord in te voeren; het besturingssysteem verzendt de gebruikersnaam en deze wordt gebruikt voor authenticatie.
Laten we verbinding maken:
  1. $ sudo -u postgres psql postgres postgres
Om verbinding te kunnen maken via het netwerk, moet je de regel toevoegen aan pg_hdba.conf:
  1. # TYPE DATABASE GEBRUIKERSADRES METHODE
  2. hostssl allemaal allemaal 0.0.0.0/0 md5
Authenticatiemethode md5 betekent dat u een wachtwoord moet invoeren om verbinding te maken. Dit is niet erg handig als u vaak de psql-console gebruikt. Als u bepaalde acties wilt automatiseren, dan slecht nieuws Het probleem is dat psql geen wachtwoord als argument accepteert. Er zijn twee manieren om deze problemen op te lossen: het instellen van de juiste omgevingsvariabele en het opslaan van het wachtwoord in een speciaal .pgpass-bestand.

De omgevingsvariabele PGPASSWORD instellen

Ik zal meteen zeggen dat het beter is om deze methode niet te gebruiken, omdat sommige besturingssystemen laten zien gewone gebruikers omgevingsvariabelen met behulp van ps. Maar als je wilt, moet je in de terminal schrijven:
  1. export PGPASSWORD=mijnwachtwoord
De variabele zal beschikbaar zijn in de huidige sessie. Als u voor alle sessies een variabele moet instellen, moet u de regel uit het voorbeeld toevoegen aan het bestand .bashrc of .bash_profile

Het wachtwoord opslaan in het .pgpass-bestand

Als we het over Linux hebben, dan zou het bestand zich in $HOME (/home/gebruikersnaam) moeten bevinden. Alleen de eigenaar (0600) moet schrijf- en leesrechten hebben. U moet regels als deze naar het bestand schrijven:
  1. hostnaam:poort:database:gebruikersnaam:wachtwoord
U kunt in de eerste vier velden een “*” schrijven, wat betekent dat er niet gefilterd wordt (volledige selectie).

Hulpinformatie verkrijgen

\? - zal alles weggeven beschikbare commando's samen met hun korte beschrijving,
\h - toont een lijst met alle beschikbare zoekopdrachten,
\h CREATE - biedt hulp bij een specifiek verzoek.

DBMS-gebruikersbeheer

Hoe krijg ik een lijst met PostgreSQL-gebruikers?
  1. Of u kunt de tabel pg_user opvragen.

SELECTEER * VAN pg_user;

Een nieuwe PostgreSQL-gebruiker maken
  1. Vanuit de psql-shell kan dit worden gedaan met behulp van de opdracht CREATE.
CREËER GEBRUIKERSgebruikersnaam MET wachtwoord "wachtwoord" ;
  1. Of u kunt de terminal gebruiken.
createuser -S -D -R -P gebruikersnaam

U wordt gevraagd een wachtwoord in te voeren.

  1. Het gebruikerswachtwoord wijzigen

ALTER GEBRUIKER gebruikersnaam MET WACHTWOORD "wachtwoord" ;

Gebruikersrollen wijzigen
  1. Voer de volgende query uit om de gebruiker toestemming te geven om databases te maken:

ALTER ROLE gebruikersnaam WITH CREATEDB ;

Databasebeheer
  1. Een lijst met databases weergeven in de psql-terminal: Hetzelfde vanaf de Linux-terminal:
psql-l
  1. Een database maken vanuit psql (PostgreSQL Terminal)
CREËER DATABASE dbnaam EIGENAAR dbadmin ;
  1. Een nieuwe database aanmaken met behulp van de terminal:

createb -O gebruikersnaam dbnaam;

Toegangsrechten tot de database instellen Als de gebruiker de eigenaar van de database is, heeft hij alle rechten. Maar als u toegang wilt geven aan een andere gebruiker, kunt u dit doen met het GRANT-commando. Met de onderstaande zoekopdracht kan de gebruiker verbinding maken met de database. Maar vergeet het niet configuratiebestand
  1. pg_hba.conf, moet het ook over de juiste verbindingsrechten beschikken.



Key" - een applicatie om zonder wachtwoord in te loggen op een Yandex-account