habe soeben PostgreSQL 8.4 installiert und musste mit erschrecken feststellen, dass unser altes PostgreSQL mit den Standard config einstellungen lief.
Ich wollte jetzt bevor ich die Datenbank rüberzerre die Configs anpassen. Jedoch weiß ich nicht so genau wo ich anfangen soll.
In der postgresql.conf stehen ja viele Sachen drin. Nur was davon macht spätere Datenbank zugriffe schneller?
08:16 < akretschmer> ??performance
08:16 < rtfm_please> For information about performance
08:16 < rtfm_please> see http://revsys.com/writings/postgresql-performance.html
08:16 < rtfm_please> or http://wiki.postgresql.org/wiki/Performance_Optimization
08:16 < rtfm_please> or http://www.depesz.com/index.php/2007/07/05/how-to-insert-data-to-database-as-fast-as-possible/
08:16 < akretschmer> ??tuning
08:16 < rtfm_please> For information about tuning
08:16 < rtfm_please> see http://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server
08:16 < rtfm_please> or http://www.edoceo.com/liber/db-postgresql-performance.php
08:16 < rtfm_please> or http://www.powerpostgresql.com/PerfList
gehen wir mal davon aus, dass du es wirklich wissen willst …
ich arbeite u.A. auch an Software, die wie Standard-SW vertrieben wird. da ist es ein nicht unerheblicher Vorteil, wenn die Anwendung auch mit einer Default-Konfiguration des DBMS zurecht kommt, … die Gründe dafür liegen auf der Hand … oder offenbaren sich spätestens dann, wenn man am telefon sagen darf: “Da downloaden - installieren - fertig” …
Außerdem fragte er nach Erfahrungen … man kann mit den Speichereinstellungen ein bisschen was “allgemeines” drehen - aber letztendlich sollte ja das was man da verstellt zu den Bedürfnissen der Anwendung passen. Eine OLTP Anwendung stellt andere Ansprueche als OLAP … oder nehmen wir ein noch junges problem was zu loesen war, als der generische optimizer etwas tuning brauchte - weil die anzahl der joins in einer abfrage einen grenzwert ueberschritten …
Wie heißt deine Firma? Damit ich nie in die Verlegenheit komme, mit dir zusammenzuarbeiten. Die von dir vorgeschlagene Vorgehensweise ist grob fahrlässig.
Kunde kauft einen Server und will von dir entwickelte Datenbankanwendungen da drauf laufen lassen und du empfiehlst ihm, das Teil mit der Defaultkonfiguration laufen zu lassen - die nutzt aber nur ungefähr 0.23% der Systemressourcen.
Die Standardkonfiguration von PostgreSQL ist auf geringen Ressourcenverbrauch ausgelegt, um andere Dienste auf dem gleichen System nicht zu beeinträchtigen. Wenn man da mehr Leistung als ein kleines Adressbuch abruft, braucht man auf jeden Fall Konfigurationsänderungen.
Ich weiss gerade nicht mehr genau, welche Optionen genau fuer bessere Performance angepasst werden muessen, aber ich hab das mit Hilfe von einem Buch geloest. PostgreSQL-Administration: Amazon.de: Peter Eisentraut, Bernd Helmle: Bücher
Da ist so ziemlich alles drin erklaert, was du veraendern kannst und wo dir die Beschreibung in der config und im Handbuch nicht mehr weiterhelfen.
Ich habe jetzt in den letzten paar stunden nur mit den Einstellungen rum gespielt… aber irgendwie kaum bis keinen Unterschied gemerkt
Bei Explain Analyze sagt der mir immer um die 40ms, was prinzipiell eigentlich auch ganz jut is, da ich früher über 10s hatte. Aber das liegt fast nur am neuen Server
Nun, wenn Du nur 0815-Abfragen hast, spielt das in der Tat keine so große Rolle. Interessant wird es bei großen Datenmengen, vielen gleichzeitigen Abfragen.
Bei Explain Analyze sagt der mir immer um die 40ms, was prinzipiell eigentlich auch ganz jut is, da ich früher über 10s hatte. Aber das liegt fast nur am neuen Server
Explain Analyse ist eher ein Tool, um Informationen über den Abfrageplan zu erhalten, also ob Indexe genutzt werden und so. Allerdings zeigt es auch an, wie z.B. Sortieroperationen erfolgen, also ob im RAM oder extern auf Disk. Und das ist wiederum eine Frage der Konfiguration.
Zusammenfassend kann man nur Dir helfen, wenn mehr Details bekannt wären. Wie z.B. ob das ein Only-PG-Server ist oder ob da auch noch ein Indianer z.B. mit wohnt, wieviel RAM, wieviel Platten und deren Anordnung, wieviel User und so weiter. Ferndiagnose ist da eh schwer, ein Buch dazu, was das alles beschreibt, wurde aber schon genannt.
Ach ja: mit vernünftiger Konfiguration kannst Du in der Tat einiges bewirken.
mehr infos, ok:
es läuft eine mysql DB drauf, dann noch ndo2db und halt meine Postgres DB.
sonst wurde alles weitest gehend deaktiviert.
der server verfügt über dual cores mit 2,8GHZ, 4GB RAM, 2 serial scsi mit 10k umdrehungen und je 146GB und (leider) einem RAID5.
Unser Nagios schmeißt in die DB alle paar Sekunden (manchmal auch minuten) neue Daten rein.
Aus diesen Daten werden alle 60min Durchschnittswerte berechnet (per cron)
Auf diese berechneten Werte werden je nach Bedarf paar mal am Tag drauf zu gegriffen werden und mittels jpgraph grafisch aufbereitet.
Sprich soviel wird auf der DB nicht gemacht. Aber die Darstellung der Bilder braucht halt recht lange wenn die Selects lange brauchen. aber mit 40ms kann man denk ich mal zufrieden sein.
Fals ihr noch einen heißen Tipp habt, immer raus damit
SELECT fsmap.fsid, fsmap.fssize FROM nagios.hostfsmap fsmap, nagios.hosts hosts
where fsmap.fsname = '$fsname'
and fsmap.hostid = hosts.hostid
and hosts.hostname = '$hostname'
SELECT fsused, fsfree from filesysdata
where fsid = $fsid order by fstime desc limit 1
SELECT mean_used, datum from fs_hourly
where fsid = $fsid
and (datum <= date('$heute'))
and (datum >= date('$datumvor7tagen')) order by datum asc
im Großen und Ganzen sind die Abfragen dieser Natur.
Nur da die Tabellen teilweise ne Menge Datensätze haben, dauerts manchmal bissle. Habe aber bereits Partitionierungen und Indizes drinne.
Die große Frage ist: werden die auch verwendet?
Kannst du bitte von den Tabellen einmmal die Ausgabe von \dt (in psql) posten und zusätzlich ein EXPLAIN von den Anfragen?