Skip to forum
SQL Tuning - so geh...
 
Benachrichtigungen
Alles löschen

[Geschlossen] SQL Tuning - so geht's!!!

11 Beiträge
7 Benutzer
0 Reactions
2,388 Ansichten
TBone98
Joined: 25.07.2006

Keine Ahnung, ob das schon mal gepostet wurde hier. Ich hab's im Pockertracker Forum gefunden und mal übersetzt.

Standardmäßig sind die PostgreSQL Settings so eingestellt, dass die Datenbank auch auf älteren Systemen problemlos läuft. Durch Anpassen einiger Memory-Parameter kann ein Performancesprung erzielt werden.

Dazu öffnet man die "postgresql.conf" Datei, die sich im SQL-Verzeichnis im "Data"-Ordner befindet. Wahlweise kann man sie auch über Start->Programs->PostgreSQL->Configuration Files->Edit postgresql.conf öffnen!!!

Dort such man:

1) "shared_buffers = xMB" und setzt den Wert auf 1/4 des vorhandenen Arbeitsspeichers. Bei 2GB sind das 512MB.

2) "work_mem = xMB" und setzt diesen Wert auf 1/64 des vorhandenen Atrbeitsspeichers (also 32MB bei 2GB)

3) "maintenance_work_mem = xMB" und setzt diesen Wert auf 1/16 des vorhandenen Arbeitsspeichers (128MB bei 2GB)

Achtung!!!!: Bei den Punkten 2) und 3) ist darauf zu achten, dass das "'#"-Zeichen am Anfang der Zeile entfernt werden MUSS, damit die Änderung auch wirksam wird.

Danach die Datei abspeichern und die SQL-Konfiguration per

Start->Programs->PostgreSQL->Reload Configurations

neu starten.

Für Vista-User:
Wenn ihr ne Fehlermeldung beim Versuch die Datei zu speichern bekommt, müsst ihr die "postgresql.conf" als Admin öffnen. Dazu rechtsclickt ihr die Start->Programs->PostgreSQL->Configuration Files->Edit postgresql.conf und wählt "Run as administrator".

Linux-User:
Wenn ihr PostgreSQL auf Linux laufen habt, kann folgende Fehlermeldung erscheinen:

"
EDT DETAIL: Will not verify client certificates.
EDT FATAL: could not create shared memory segment: Invalid argument
EDT DETAIL: Failed system call was shmget(key=5432001, size=549330944, 03600)."

In diesem Fall müsst ihr in "/etc/sysctl.conf" die folgende Zeile editieren:

"kernel.shmmax = N"

Hier muss "N" so verändert werden, dass der Wert größer ist als der Wert, den ihr gerade bei "shared_buffers" in der "postgresql.conf" eingetragen habt. Dabei ist darauf zu achten, dass hier die Größe nicht in MEGAbytes sondern in Bytes angegeben werden muss. Habt ihr in der "postgresql.conf" also 512MB eingetragen, solltet ihr hier "kernel.shmmax = 550000000" setzen. Den Mindestwert hierfür könnt ihr auch aus der Fehlermeldung aus dem Wert "size=X" entnehmen.

Ich selber habe diese Änderung nur unter XP durchgeführt und getestet. Es hat auf jeden Fall einiges gebracht. Über Vista und Linux kann ich nichts sagen. Aber vielleicht probiert es einfach mal jemand aus und postet dann seine Erfahrungen.


10 replies
netsrak
Joined: 11.03.2006

TBone, was hältst du davon diesen Post nochmal in meinen Thread Postgresql Einführung reinzukopieren?

Ich find das sehr hilfreich.


TBone98
Joined: 25.07.2006

Ja, klar. Am Besten du übernimmst ihn direkt in deinen Post, so dass alles zusammen am Anfang des Threads steht. Wäre doch am sinnvollsten.


netsrak
Joined: 11.03.2006
DerBiBabutzeMann
Joined: 09.05.2007

Also ich habs ausprobiert und dann gabs keinen connect mehr zur DB.
Hab wieder das alte rein, top......


netsrak
Joined: 11.03.2006

Dann hast du dich irgendwo vertippt oder vergessen den Dienst wieder zu starten. Bei mir funktioniert es.


Frage dazu:

Im Conffile werden größere Werte als Minimum gefordert:

#work_mem = 1024 # min 64, size in KB
#maintenance_work_mem = 16384 # min 1024, size in KB
#max_stack_depth = 2048 # min 100, size in KB

32 wäre also z.B. bei work_mem nach den Anweisungen im Conf-File gar nicht möglich? Oder muss ich da jetzt erst von KB wieder in MB umrechnen?


Original von TBone98
Dort such man:

1) "shared_buffers = xMB" und setzt den Wert auf 1/4 des vorhandenen Arbeitsspeichers. Bei 2GB sind das 512MB.

2) "work_mem = xMB" und setzt diesen Wert auf 1/64 des vorhandenen Atrbeitsspeichers (also 32MB bei 2GB)

3) "maintenance_work_mem = xMB" und setzt diesen Wert auf 1/16 des vorhandenen Arbeitsspeichers (128MB bei 2GB)

Du sollst den Mist in MB angeben :rolleyes:


skatemaza
Joined: 26.10.2006

und spührt jemand ne erhebliche verbesserung oder so?


6Wishmaster6
Joined: 16.01.2005

closed

Weiteres Tuning Feedback bitte in diesen Thread, der auch alle Inhalte von diesem Thread hier beinhaltet:

PostgreSQL Einführung