Installatie en initiële configuratie van PostgreSQL. PostgreSQL installeren - Windows, Mac OS X, Linux

Er is nogal wat tijd verstreken sinds het laatste artikel over het installeren van PostgreSQL 8.3 op Windows XP werd gepubliceerd. Ik hoop dat het sommige mensen heeft geholpen deze eenvoudige handeling uit te voeren. Het artikel verspreidde zich naar andere sites, waarvan sommige op eenvoudige en pretentieloze wijze het auteursmerk ervan verwijderden. Het is echter tijd om weer over hetzelfde te schrijven, hoewel het installeren van PostgreSQL toen geen problemen opleverde, net zoals het dat nu ook niet doet.

Het probleem is dat je op zijn minst enige basiskennis van PostgreSQL-beheer nodig hebt om een ​​PostgreSQL-server te kunnen installeren. Op het forum stellen ze voortdurend vragen zonder zelfs maar de basis en de basis te kennen. Vooral pokerspelers en programma-eigenaren zijn wreed Hold'em-manager die niet alleen niets anders weten dan poker, maar het ook niet willen weten. Ik kom bijvoorbeeld niet naar een pokerforum zonder de pokerregels te hebben gelezen en ik eis niet dat iemand mij uitlegt hoe ik een miljoen kan winnen. Ik ben ook niet erg geïnteresseerd in het gratis ondersteunen van gebruikers van commerciële programma's, vooral omdat deze gebruikers nooit iets nuttigs zullen doen voor de PostgreSQL-gemeenschap, omdat ze uitsluitend als consumenten optreden.

Dus! Opgedragen aan de mensen die lijden aan Windows....

PostgreSQL 9.x-versies en brongegevens

Vanaf versie 9.0 voor Windows zijn er gecompileerde versies van zowel 32-bit als 64-bit beschikbaar. In dit artikel werd de installatie van de 64-bits versie van PostgreSQL 9.0.1 op een 64-bits versie van Windows 7 Home Basic besproken. De installatie is uitgevoerd door een gebruiker met beheerdersrechten. Ik zie geen enkele reden of obstakel waarom het installeren van de 32-bits versie anders zou zijn dan de 64-bits versie, en ook geen fundamentele verschillen tussen Windows 7 Home Basic en andere Windows-edities 7.

Laten we gaan

Neem het archief met de PostgreSQL-installatie. Ik heb versie 9.0.1 rechtstreeks van deze pagina overgenomen. Sla het bestand op in een tijdelijke map, bijvoorbeeld c:\tmp. Laten we lanceren. Na de standaard Windows-waarschuwing dat we een applicatie proberen uit te voeren externe ontwikkelaar, waarop we bevestigend antwoorden, begint het installatieproces:

Zoals u kunt zien, verschijnt er eerst een afbeelding die aangeeft dat Windows de Visual C++-bibliotheek aan het configureren is. Zonder de details te kennen, zou ik durven te veronderstellen dat deze bibliotheek wordt gedistribueerd met PostgreSQL voor Windows, omdat PostgreSQL aan staat Windows-platform gecompileerd in Visual C++. Er verschijnt echter het volgende beeld, dat relevanter is voor de installatie:


Dit is het eerste dialoogvenster waarin u wordt gevraagd de installatie te starten. Klik op Volgende en krijg het volgende venster:


In dit dialoogvenster wordt u gevraagd de map op te geven waar PostgreSQL zal worden geïnstalleerd. Persoonlijk was ik best tevreden met het standaardpad dat door het installatieprogramma werd voorgesteld, dus klikte ik op Volgende en kreeg het volgende venster:


In dit dialoogvenster wordt u gevraagd de map op te geven waarin de databasebestanden zullen worden opgeslagen. Dit is best handig en de ontwikkelaars gingen er logischerwijs van uit dat velen gegevens op andere schijven zouden willen opslaan, bijvoorbeeld snellere, om de databaseprestaties te verbeteren. Voorheen kon dit uiteraard ook via een configuratiebestand worden geconfigureerd, maar nu kan dit al in de installatiefase. Persoonlijk was ik best tevreden met het standaardpad dat door het installatieprogramma werd voorgesteld, dus klikte ik op Volgende en kreeg het volgende venster:


Welnu, we hebben de eerste en talrijke bron van vragen op het forum bereikt. Gewoon een heleboel mensen die vragen welk wachtwoord ze moeten invoeren? Is het werkelijk zo moeilijk om te lezen wat er geschreven staat? Nou ja, ik begrijp dat iemand dom heeft geslapen tijdens de Engelse lessen op school, en iemand Duits heeft gestudeerd, maar er zijn Google-taalhulpmiddelen, waar je in de meeste gevallen snel een volledig betekenisvolle vertaling van een onbegrijpelijke Engelse zin kunt krijgen! Gaat het weer kapot? Oké, ik zal het specifiek voor deze mensen vertalen: " Geef het wachtwoord op voor de database-superuser (postgres) en rekening diensten (postgres). Als er al een serviceaccount bestaat op Windows, moet u dit invoeren Huidig ​​wachtwoord deze rekening. Als dit account niet bestaat, wordt het aangemaakt wanneer u op Volgende klikt "

Nog steeds niet duidelijk? Vervolgens zal ik het, voor degenen die de documentatie niet hebben gelezen, in lekentermen uitleggen. Er zijn gebruikersaccounts in Windows. Je werkt momenteel zeker onder een van hen, omdat het account altijd een gebruikersnaam heeft. PostgreSQL op Windows draait dus niet als beheerder, maar ook namens een gebruikersaccount met de naam postgres. Dit werd voornamelijk gedaan om veiligheidsredenen, zodat ongedierte geen beheerdersrechten kon krijgen, zelfs als ze op de een of andere manier een beveiligingslek in PostgreSQL zelf vonden. Volgende. In het PostgreSQL DBMS zelf is er zo'n speciale gebruiker: een superuser die dat wel heeft maximale rechten binnen het DBMS, d.w.z. kan alle databases en alle gebruikers aanmaken of verwijderen. Het wordt ook wel postgres genoemd. Ondanks het feit dat de gebruikersnamen van het PostgreSQL-account en de superuser hetzelfde zijn, zijn het op geen enkele manier verschillende gebruikers verwante vriend met een vriend. Maar zodat je later niet in de war raakt verschillende wachtwoorden, wordt u gevraagd voor beide hetzelfde wachtwoord in te stellen.

Veel mensen vragen: wat moeten we doen als we PostgreSQL opnieuw installeren, en Oud wachtwoord vergeten? Ik vraag me af of ze thuis hun hoofd niet vergeten als ze naar hun werk of een wandeling gaan? Iets anders dan onzorgvuldigheid kun je dit niet noemen. Lees echter aandachtig de speciale FAQ, daar staat een antwoord op de vraag wat er in dit geval gedaan kan worden.


In dit venster wordt u gevraagd een andere TCP/IP-poort voor PostgreSQL op te geven. Ik zie geen reden om degene die standaard wordt aangeboden te wijzigen. Klik op Volgende:


In dit venster wordt u gevraagd de landinstelling te selecteren waarmee het databasecluster zal worden geïnitialiseerd en die vervolgens standaard zal worden gebruikt bij het maken van andere databases. Het is mooi belangrijke stap, omdat de landinstelling dit definieert belangrijke parameter als gegevenscodering in databases. Op de foto kun je zien dat ik "Rusland, Rusland" heb geselecteerd. In dit geval is uw databasecodering Windows-1251. Dit is misschien precies wat je nodig hebt, maar de meeste mensen werken nog steeds het liefst met UTF-8-codering. Deze codering wordt ingesteld als u in dit venster de standaardlandinstelling selecteert: "standaard". Denk goed na voordat u een locatie kiest. Als u PostgreSQL installeert om een ​​applicatie van stroom te voorzien, lees dan de documentatie ervan om te zien of die applicatie een specifieke codering vereist. Nadat u de landinstelling hebt geselecteerd, klikt u op Volgende:


De installateur vertelt het u graag. dat hij klaar is om eindelijk met de installatie te beginnen. Klik op Volgende. Het proces van het kopiëren van bestanden naar de eerder opgegeven map begint. Vervolgens ziet u in hetzelfde venster:


waarbij ik u adviseer om te letten op de woorden: “Initializing database cluster”, wat betekent dat het kopiëren van bestanden is voltooid en de eerste database wordt aangemaakt, die vervolgens als sjabloon voor alle andere databases zal worden gebruikt. Na enige tijd verandert deze inscriptie in "databaseserver starten" (ik start de databaseserver), wat betekent dat de PostgreSQL-serverservice wordt gestart. Vervolgens verschijnt het venster voor voltooiing van de installatie:


Hier worden we ook gevraagd om de installatietool uit te voeren extra componenten PostgreSQL, maar daar ben ik niet in geïnteresseerd, dus ik schakel het uit en klik op Voltooien

Dit is alles! Installatie voltooid! Vooral paranoïde kameraden kunnen Taakbeheer starten, op het tabblad Services klikken en ervoor zorgen dat PostgreSQL actief is:


Vragen over pgAdminIII

Veel mensen stellen de vraag. Dus startte ik pgAdminIII, de snelkoppeling die onmiddellijk na de installatie in het Start-menu verschijnt, en daar zie ik een afbeelding waarop de PostgreSQL-server is doorgestreept met een rood kruis, zoals deze:


"Alsjeblieft, beste mensen, wat moeten we doen?"

Nou ja, breng in ieder geval eerst een verbinding met de server tot stand, waarvoor je domweg dubbelklikt op dit serverpictogram, doorgestreept met een rood kruis. Er verschijnt een venster waarin u wordt gevraagd een wachtwoord in te voeren voor de postgres-gebruiker, hetzelfde wachtwoord dat u eerder tijdens de installatie hebt ingevoerd. Als u het correct invoert, verdwijnt het rode kruis en ziet het pgAdminIII-venster er als volgt uit:


Verbinding maken met een PostgreSQL-server met behulp van het psql-opdrachtregelhulpprogramma

Ik laat het zien op de foto:


Houd er rekening mee dat het hulpprogramma EXPLICIET moet aangeven met welke gebruiker verbinding moet worden gemaakt met de server en opnieuw hetzelfde wachtwoord moet invoeren waarover hierboven zoveel is geschreven.

Let ook op het waarschuwingsbericht over een mismatch tussen de huidige codering in de console en de servercodering. Het feit is dat we volgens onze installatie eerder de landinstelling Rusland, Rusland hebben geselecteerd, wat leidde tot de keuze voor de Windows-1251-codering, maar de Windows-console (opdrachtregel) werkt in de cp866-codering en dit moet worden begrepen en bij verdere werkzaamheden rekening mee gehouden

Nu zullen we kijken naar het proces van het installeren van een nieuwe versie van het DBMS PostgreSQL 9.5 op 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. Het maakt gebruik van een procedurele uitbreiding van de SQL-taal PL/pgSQL.

Wat is er nieuw in PostgreSQL 9.5?

Deze versie heeft veel 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. In Microsoft SQL Server bestaan ​​soortgelijke operators al geruime tijd, en we 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 is een nieuw type index dat 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 ben 32 beetje Windows 7, daarom klik ik 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 hebben besproken 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. We hebben niet overwogen om PostgreSQL op het Windows-besturingssysteem te installeren, 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 geven we de map aan waarin PostgreSQL geïnstalleerd moet worden, ik laat deze als standaard staan ​​( die. C rijden), klik op " Volgende».

Stap 3

Vervolgens specificeren we de map 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 deze standaard staan, 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 laatste venster we zullen worden gevraagd om het hulpprogramma 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, dubbelklik op “ 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 waarin je wordt gewaarschuwd dat het opslaan van wachtwoorden niet veilig is, omdat het wachtwoord in platte tekst wordt opgeslagen in het bestand pgpass.conf, dat zich in de map met gebruikersprofielen van Windows bevindt. Klik op " OK».

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

Dat is alles voor mij, veel succes!

PostgreSQL kan niet direct uit de doos worden gebruikt voor gebruik met 1C Enterprise. Wat nodig is, is een aangepaste versie van 1C, die PostgreSQL in een locker verandert, en je moet begrijpen dat locks in één keer op de hele tabel worden toegepast. Als u sloten op recordniveau nodig heeft, schakelen we de gecontroleerde vergrendelingsmodus in 1C in en registreren we deze handmatig in de configuratie. Conclusie: u moet een speciale distributiekit downloaden van de 1C-website of deze op de ITS-schijf zetten.

Installatie

De installatie zelf veroorzaakt geen bijzondere problemen; u moet letten op de juiste initialisatie van de database, namelijk het instellen van de landinstelling; dit kan alleen worden gewijzigd door de initiële initialisatie te herhalen. Een 1C-database met Oekraïense regionale instellingen wordt bijvoorbeeld niet geladen in een DBMS waarop de Russische landinstelling is geïnstalleerd. En er zijn geen problemen met het later sorteren. Daarom doen wij init conform de gewenste taal.

Voor de Russische taal

initdb --locale=ru_RU.UTF-8 --lc-collate=ru_RU.UTF-8 --lc-ctype=ru_RU.UTF-8 --encoding=UTF8 -D /db/postgresql

Voor Oekraïense taal

initdb --locale=uk_UA.UTF-8 --lc-collate=uk_UA.UTF-8 --lc-ctype=uk_UA.UTF-8 --encoding=UTF8 -D /db/postgresql

waarbij /db/postgresql uw map is PostgreSQL-gegevens. De codering is uiteraard UTF-8.

Gedetailleerde optie voor het opnieuw opbouwen van een cluster

1. Het is noodzakelijk om volledige rechten te geven aan de map waarin we PostgreSQL hebben geïnstalleerd, meestal C:\Program Files\PostgreSQL

2. Start cmd als beheerder. Als je dit in win7 doet, voer het dan uit als Administrator.

3. Maak een map waarin het cluster wordt opgeslagen. Bijvoorbeeld d:\postgredata.

md d:\postgredata

4. We initialiseren het cluster handmatig, waarbij we het pad aangeven waar het zich zal bevinden.

“C:\Program Files\PostgreSQL\9.1.2-1.1C\bin\initdb.exe” -D d:\postgredata --locale=Russisch_Rusland --encoding=UTF8 -U postgres

5.Verwijder de PostgreSQL-service die tijdens de installatie is geïnstalleerd.

sc verwijder pgsql-9.1.2-1.1C-x64

Waar pgsql-9.1.2-1.1C-x64 de naam van de service is. Als u de exacte naam niet weet, kunt u kijken naar de eigenschappen van de service "PostgreSQL Database Server..." (Start - Configuratiescherm - Systeembeheer - Services)

6.Maak een nieuwe service die ons cluster aangeeft

“C:\Program Files\PostgreSQL\9.1.2-1.1C\bin\pg_ctl” register -N pgsql -U postgresql -P wachtwoord -D d:/postgredata

7.Ga nu naar diensten. Start – Configuratiescherm – Beheer – Services en start onze service.

DBMS-fout: FOUT: nieuwe codering (UTF8) is incompatibel met de codering van de sjabloondatabase (WIN1251).

TIP: Gebruik dezelfde codering als in de sjabloondatabase, of gebruik template0 als sjabloon.

U hebt de verkeerde landinstelling geselecteerd bij het installeren van het DBMS (WIN1251) voor de server en client. U moet in de configuratie wijzigen naar UTF-8 of het DBMS opnieuw installeren met de volgende parameters:

Aandacht Selecteer tijdens het installeren NIET de landinstelling van de OS-instellingen, maar selecteer uit de lijst Russisch, Rusland

PostgreSQL instellen

U moet de aanbeveling van 1C onthouden om geen FULL OUTER JOIN te gebruiken in constructquery's en deze te vervangen door bijvoorbeeld een combinatie van verschillende left joins. Er is ook een bekend probleem met prestatieverlies bij query's die een verbinding met de virtuele SliceLast-tabel gebruiken; het wordt aanbevolen om er afzonderlijke query's op te maken en de resultaten in tijdelijke tabellen op te slaan.

De configuratie wordt geconfigureerd door het bestand postgresql.conf te bewerken.

De belangrijkste parameters

effectieve_cache_size = 0,5 RAM-capaciteit

fsync = uit schakel het flushen naar schijf na elke transactie uit (Let op! Gebruik dit alleen bij gebruik van een betrouwbare UPS, er bestaat gevaar voor gegevensverlies bij een onverwachte uitschakeling)

synchronous_commit = off schakel synchrone loggen uit (risico's zijn hetzelfde als fsync)

wal_buffers = 0,25 RAM-capaciteit

Vergeet na de configuratie niet de service opnieuw te starten:

service postgresql opnieuw opstarten

Netwerk instellen

Om 1C-clients van buitenaf met de server te verbinden en de databaseserver op de firewall te laten werken, moeten de volgende poorten open zijn:

Serveragent (ragent) & tcp:1540 Hoofdclustermanager (rmngr) & tcp:1541 Bereik van netwerkpoorten voor dynamische distributie van werkprocessen & tcp:1560&1591, tcp:5432 & Postgresql. Laten we een regel maken met behulp van standaardinterface, of gebruik het commando:

netsh advfirewall firewall regelnaam toevoegen = "1Cv8-Server" dir=in actie=toestaan ​​protocol=TCP localport=1540,1541,5432,1560-1590 enable=ja profiel=ELKE remoteip=ELKE interfacetype=LAN

Nu kunnen we de 1C:Enterprise-client eenvoudig vanaf een andere computer starten en de bestaande newdb-informatiebasis toevoegen. Vergeet licenties en software-/hardwarebescherming niet.

Back-up

We maken een databasedump met behulp van de opdracht

su postgres -c "pg_dump -U postgres -Fc -Z9 -f baza1.sql baza1"

Herstellen van een dump

su postgres -c "pg_restore -U postgres -c -d baza1 -v baza1.sql"

Periodiek onderhoud

su postgres -c "/usr/bin/vacuumdb --dbname=$i --analyze --full --quiet"

Bekijk PostgreSQL-activiteit

Soms is het handig om te kijken wat de server momenteel doet. Dit ontwerp zal helpen:

bekijk -n 1 "ps auxww | grep ^postgres"

PostgreSQL is een object-relationeel databasesysteem dat de kenmerken heeft van een traditionele commerciële database, met uitbreidingen die beschikbaar zullen zijn voor de volgende generatie DBMS (databasebeheersystemen).

Installatie

Om PostgreSQL te installeren, voert u de volgende opdracht uit in een terminal:

Sudo apt-get install postgresql

Direct na de installatie kunt u de PostgreSQL-server echter naar uw wensen configureren standaard instelling behoorlijk levensvatbaar.

Instellingen

Standaard worden verbindingen via TCP/IP geblokkeerd. PostgreSQL ondersteunt veel authenticatiemethoden. Authenticatiemethode IDENT gebruikt voor postgres en lokale gebruikers hebben nog niets anders geconfigureerd. Raadpleeg of u een alternatief zoals Kerberos gaat gebruiken.

In de volgende discussie wordt ervan uitgegaan dat u verbindingen via TCP/IP wilt toestaan ​​en op MD5 gebaseerde clientverificatie wilt gebruiken. PostgreSQL-configuratiebestanden worden opgeslagen in de map /etc/postgresql/ /voornaamst. Als u bijvoorbeeld PostgreSQL 8.4 hebt geïnstalleerd, worden de configuratiebestanden opgeslagen in de map /etc/postgresql/8.4/main.

Om authenticatie in te stellen identi voeg vermeldingen toe aan het bestand /etc/postgresql/8.4/main/pg_ident.conf. Het bestand bevat gedetailleerd commentaar om u te begeleiden.

Om TCP/IP-verbindingen toe te staan, bewerkt u het bestand /etc/postgresql/8.4/main/postgresql.conf. Zoek de lijn

#listen_addresses = "localhost"

en vervang het door:

Luister_adressen = "localhost"

Om andere computers verbinding te laten maken met uw PostgreSQL-server, vervangt u "localhost" door het IP-adres van uw server, of alternatief door 0.0.0.0 om alle interfaces in te schakelen.

Je kunt ook andere parameters bewerken als je weet wat je doet! Zie de opmerkingen bij het configuratiebestand of de PostgreSQL-documentatie voor meer informatie.

Omdat we nu verbinding kunnen maken met onze PostgreSQL-server, is de volgende stap het instellen van een wachtwoord voor de gebruiker postgres. Voer de volgende opdracht uit in een terminal om verbinding te maken met de standaard PostgreSQL-sjabloondatabase:

Sudo -u postgres psql-sjabloon1

Met deze opdracht wordt als postgres-gebruiker verbinding gemaakt met de PostgreSQL-databasesjabloon1. Nadat u verbinding heeft gemaakt met de PostgreSQL-server, bevindt u zich in de SQL-console. U kunt de volgende SQL-opdracht in de console uitvoeren psql om het postgres-gebruikerswachtwoord te configureren:

ALTER GEBRUIKER postgres met gecodeerd wachtwoord "uw_wachtwoord";

Nadat u het wachtwoord hebt ingesteld, wijzigt u het bestand /etc/postgresql/8.4/main/pg_hba.conf om MD5-authenticatie voor de postgres-gebruiker te gebruiken:

Lokaal alle postgres md5

Ten slotte moet u de PostgreSQL-service opnieuw opstarten om de nieuwe instellingen toe te passen. Voer vanaf een terminal het volgende uit om PostgreSQL opnieuw te starten:

Sudo /etc/init.d/postgresql-8.4 opnieuw opstarten

De bovenstaande opstelling is sowieso onvolledig. Raadpleeg de PostgreSQL Beheerdershandleiding om andere instellingen te configureren.

Een beetje over het configureren van PostgreSQL

*Is er een alternatief voor MSSQL?
*PostgreSQL - een vertraging of een uitstekend DBMS?
*Hoe zorg ik ervoor dat PostgreSQL op volle snelheid draait?

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 werklasten, de functionaliteit van opgeslagen procedures is uitstekend, er zijn kant-en-klare goede beheer- en prestatietools en de gemeenschap heeft nuttige hulpprogramma's gemaakt. 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 zulke 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

Het testen is uitgevoerd in een Windows-omgeving, maar alle configuratie-aanbevelingen zijn niet platformspecifiek en gelden voor 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, 4GB RAM, aparte fysieke harde schijf voor opslag van de 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 - 31c
Bemonstering van een bestandsversie op een virtuele machine (vanaf een 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
Selecteren uit een bestandsvariant in virtuele machine(Met harde schijf) - 56s elk
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 logisch dat elke olifantenfokker deze link als bladwijzer gebruikt. 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. Op de ITS-schijf staan ​​een aantal tips voor het inrichten van PostgreSQL.

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 (het is onwaarschijnlijk dat de meeste gebruikers dit nodig zullen hebben)

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 de 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 de hoeveelheid vrij RAM, de grootte van de database en individuele elementen databases (tabellen en indexen), de complexiteit van query's (in principe moet u ervan uitgaan dat de query's behoorlijk complex zullen zijn - meerdere verbindingen in query's zijn een typisch scenario) en het aantal gelijktijdig actieve clients. PostgreSQL slaat databasetabellen en indexen trouwens op in aparte bestanden (\data\base\\), en de grootte van objecten kan 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 is er geen geheugen meer over voor het daadwerkelijk uitvoeren van clientverzoeken (en hoe meer onderwerpen hoger geheugengebruik), en voor het besturingssysteem en andere toepassingen, 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 elke aanvraag, mogelijk meerdere keren voor complexe vragen. Als er niet genoeg geheugen is, gebruikt PostgreSQL tijdelijke bestanden. Als de waarde te groot is, kan er sprake zijn van overbesteding RAM en het besturingssysteem zal het wisselbestand gaan gebruiken met een overeenkomstige prestatiedaling.

Er is een aanbeveling bij het berekenen om het volume te nemen beschikbaar geheugen minus 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 als er extra gebruikers verschijnen, moet de waarde worden verlaagd.

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. Ik heb het in de test gebruikt
temp_buffers = 32 MB

effectieve_cache_grootte- geschatte schijfcachegrootte 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 verzamelen tabellen verouderde gegevens: eerdere versies van 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 door de automatische garbage collector - AUTOVACUUM. Tot een bepaalde versie werd garbage collection ook geassocieerd met het verzamelen van statistieken (de planner gebruikt gegevens over het aantal records in tabellen en de verdeling van waarden van geïndexeerde velden 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 zorgt een plotseling gestarte garbagecollection voor extra belasting van de schijf en tabellen, wat leidt tot een toename van de 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 impact 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 processen schoonmaak

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 iets 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_kostenlimiet - 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 de transactie is voltooid PostgreSQL is gestart schrijft gegevens naar een speciaal transactielogboek WAL (Write-ahead log) en vervolgens naar de database nadat de loggegevens gegarandeerd naar schijf zijn 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 het transactielogboek kunt u tijdens de opname een transactie voltooien of de database herstellen gegevens zullen gebeuren mislukking.

In geladen systemen met grote volumes records, kan het zinvol zijn om het transactielogboek naar een apart logbestand te verplaatsen fysieke schijf(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. Het kan ook koppelingen creëren Verre manager(Alt-F6). 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 vereisen mogelijk een verhoging van de waarde checkpoint_segments, 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 bestandscache van het besturingssysteem 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 bestaat er bij een systeemcrash 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_pagina_kosten- "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 snelle schijfarrays, vooral SSD's, is het zinvol om de waarde te verlagen; in dit geval zal PostgreSQL actiever gebruik maken van indexen.

Het wordt aanbevolen om de parameters uit de sectie QUERY TUNING te wijzigen, vooral de parameters die betrekking hebben op het verbieden dat de planner specifieke zoekmethoden gebruikt, 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 goede 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 erg leuke 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 een versie voor de Linux-versie nodig hebben, 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.

  • 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 de meeste 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 het lanceren van PostgreSQL automatisch starten. Er is hiervoor een kant-en-klaar script en deze 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.
De allerlaatste parameter is slechts 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
Retourneert informatie over de momenteel geïnstalleerde versie van 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 omhulsel SQL-opdrachten DATABANK MAKEN.
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.
dropuser
Verwijdert een databasegebruiker. Is een SQL-wrapper voor de DROP ROLE-opdracht.
maaklang
Voegt een nieuwe programmeertaal toe aan 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
  • 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 een open source-afstammeling van de originele Berkeley-code. Het ondersteunt het grootste deel van de 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 de mainstream PostgreSQL zullen we uiteraard kant-en-klare pakketten verzamelen en niet downloaden (in de Debian-repository's zijn er bijvoorbeeld geen 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 moet u PostgreSQL-start toevoegen aan automatisch starten. Er is hiervoor een kant-en-klaar script en deze 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.
De allerlaatste parameter is slechts 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.
dropuser
Verwijdert een databasegebruiker. Is een SQL-wrapper voor de DROP ROLE-opdracht.
maaklang
Voegt een nieuwe programmeertaal toe aan 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 manager voor het werken met de database, dat wil zeggen de php-manager

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 werklasten, de functionaliteit van opgeslagen procedures is uitstekend, er zijn kant-en-klare goede beheer- en prestatietools en de gemeenschap heeft 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 zulke 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. Kant-en-klare compatibele assemblages worden aangeboden door 1C (via ITS-schijven en een account voor mensen met een ondersteuningsabonnement) en EterSoft

Het testen is uitgevoerd in een Windows-omgeving, maar alle configuratie-aanbevelingen zijn niet platformspecifiek en gelden voor 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 - 31c
Bemonstering van een bestandsversie op een virtuele machine (vanaf een 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 logisch dat elke olifantenfokker deze link als bladwijzer gebruikt. Het boek beschrijft veel technieken voor het optimaliseren van DBMS en 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. Op de ITS-schijf staan ​​een aantal tips voor het inrichten van PostgreSQL.

Op Windows configuratiebestanden PostgreSQL bevindt 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 (het is onwaarschijnlijk dat de meeste gebruikers dit nodig zullen hebben)

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 de 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

De optimale parameterwaarden zijn afhankelijk van de hoeveelheid vrij RAM, de grootte van de database en individuele database-elementen (tabellen en indexen), de complexiteit van queries (in principe moet je ervan uitgaan dat de queries behoorlijk complex zullen zijn - meerdere verbindingen in queries is een typisch scenario) en het aantal gelijktijdig actieve clients. Overigens slaat PostgreSQL databasetabellen en indexen op in afzonderlijke 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 geen te grote waarde opgeven, anders zal er geen geheugen meer over zijn voor het daadwerkelijk uitvoeren van clientverzoeken (en hoe meer daarvan, hoe hoger het geheugengebruik) en voor de geheugenconsumptie. OS en andere toepassingen, bijvoorbeeld het serverproces 1C. 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, gebaseerd op 5 actieve gebruikers (2,5GB-0,5GB (shared_buffers))/5=400MB. Als het DBMS de query's als behoorlijk complex beschouwt, of extra gebruikers, moet u de waarde verlagen.

Voor eenvoudige zoekopdrachten zijn kleine waarden voldoende - tot een paar megabytes, maar voor complexe zoekopdrachten (en dit is een typisch scenario voor 1C) zijn er meer nodig. 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. Ik heb het in de test gebruikt
temp_buffers = 32 MB

effectieve_cache_grootte- geschatte grootte van de schijfcache van het bestandssysteem.

De optimalisatie gebruikt deze waarde bij het bouwen van een queryplan om de waarschijnlijkheid in te schatten dat gegevens in een cache (met snelle willekeurige toegang) of op een langzame schijf worden gevonden. In Windows kan de huidige hoeveelheid geheugen die aan de cache is toegewezen, 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 door de automatische garbage collector - AUTOVACUUM. Tot een bepaalde versie werd het verzamelen van afval ook geassocieerd met het verzamelen van statistieken (de planner gebruikt gegevens over het aantal records in tabellen en de verdeling van waarden van geïndexeerde velden om een ​​optimaal queryplan op te stellen). Aan de ene kant moet het verzamelen van afval worden gedaan, zodat tabellen niet groeien en efficiënt schijfruimte gebruiken. Aan de andere kant zorgt een plotseling gestarte garbagecollection voor extra belasting van de schijf en tabellen, wat leidt tot een toename van de 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 de negatieve impact op de prestaties te minimaliseren (in eerdere versies blokkeerde de garbage collection bijvoorbeeld de toegang tot de tabel volledig, sinds versie 9.0 werkt 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- het maximale aantal parallel lopende reinigingsprocessen.

autovacuum_naptime - het minimale interval waarna autovacuüm niet zal starten. Standaard is 1 minuut. U kunt dit verhogen. Als de gegevens vaak veranderen, wordt de analyse dan minder vaak uitgevoerd.

autovacuüm_vacuüm_drempel, - het aantal gewijzigde of verwijderde records in de tabel dat nodig is om het garbagecollection-proces te activeren 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, kan de algehele toename van het schijfruimteverbruik aanzienlijk zijn. U kunt deze waarden dus verstandig verhogen.

Het kan dus zinvol zijn om het autovacuum_naptime-interval te vergroten, en de drempel en de schaalfactor iets 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_kostenlimiet- het maximale bedrag aan “boetes” waarna het assemblageproces kan worden “bevroren” voor de duur van vacuüm_kosten_vertraging. 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 symbolische link op de oude locatie maken, bijvoorbeeld met behulp van 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).

Als er een groot aantal gegevenswijzigingsbewerkingen plaatsvindt, moet u mogelijk de waarde checkpoint_segments verhogen, 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 bestandscache van het besturingssysteem 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 100% vertrouwen heeft in de apparatuur en de UPS (uninterruptible power supply). Anders bestaat er bij een systeemcrash 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. Bij een plotselinge afsluiting wordt de database niet vernietigd, maar kunnen gegevens van recente transacties 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 met commit_delay als er momenteel ten minste commit_siblings-transacties worden 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_pagina_kosten- de “kosten” van willekeurig lezen, gebruikt bij het zoeken naar gegevens met behulp van indexen. Standaard is 4,0. De eenheid is de tijd van sequentiële gegevenstoegang. Voor snelle schijfarrays, vooral SSD's, is het zinvol om de waarde te verlagen; in dit geval zal PostgreSQL actiever gebruik maken van indexen.

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 dat de planner specifieke zoekmethoden gebruikt, 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 goede 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 erg leuke 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.