2010-02-23 14 views
5

Ich muss unseren Web-Service optimieren, aber nicht wissen, wo ich anfangen soll. Wir betreiben GWT, PHP und PostgreSQL. Ohne jemals Leistungsdaten erreicht zu haben, vermute ich, dass die Hauptoptimierungen in der Datenbank passieren werden.Optimierung Tipps und Tricks

Ich weiß nichts über die Umstrukturierung der DB, noch Indexierung. (Ich weiß wirklich nichts über DBs.) Alle Hinweise in jedem der drei Bereiche sehr geschätzt!

Antwort

10

Immer mit Messung beginnen. Bis Sie wissen, wo Engpässe sind, wissen Sie nicht, was Sie verbessern sollen. "Ohne überhaupt irgendwelche Leistungsdaten gesehen zu haben", ist es unwahrscheinlich, dass Sie den richtigen Anruf tätigen - oder zumindest finde ich häufig, dass falsche Schätzungen darüber gemacht werden, wo die Leistung leidet. Vielleicht bist du besser raten als ich :) (Natürlich kann es auch in der Datenbank in Ihrem Code sein ...)

Messwerkzeuge können so einfach wie Log-Anweisungen zu sehen, wie lange verschiedene Arten von Anfragen Zum Beispiel auf der Datenbankseite wollen Sie mit Sicherheit EXPLAIN verwenden, um die Abfrageausführungspläne zu betrachten ... aber vorher wollen Sie wissen, welche Abfragen Sie in der an erster Stelle, und mehr als das, die Anfragen an den Web-Service selbst sind teuer.

+1

Profil früh und oft. Beginnen Sie beim Erstellen von Spike-Lösungen mit der Profilerstellung zur Entwurfszeit. Profiling als Teil des Leistungstests einbeziehen. Profil Produktion. Man sollte jederzeit eine Liste potentieller "Hot Spots" im Entwicklungsprozess haben. –

+0

Wenn Sie irgendwelche Werkzeuge kennen, die mir helfen, die Messungen zu machen, wäre das großartig. –

+0

Eine schnelle Suche unter "php profiler" bringt viele Treffer. Es scheint mehrere kommerzielle Lösungen zu geben, und es sollte auch ein paar freie Optionen geben. – TMN

2

Schauen Sie sich die best practices from yahoo an, bevor Sie die db berühren (und davor Ihren Engpass identifizieren). Sie möchten nicht viel Zeit für eine kleine Geschwindigkeitsverbesserung aufwenden, normalerweise können große Beschleunigungen erzielt werden, die die Tipps in der Verbindung verwenden.

Um Ihr Frontend zu profilieren, können Sie page speed verwenden.

2

Wie der Rest gesagt haben, stellen Sie sicher, dass Sie zuerst Ihre Engpässe identifizieren.

Soweit Ihre Bedenken über die DB i langsame Abfragen zu beschleunigen, einige Indizes auf Tabellen erstellen würde vorschlagen, geht (nur wenn identifiziert)

http://www.postgresql.org/docs/8.2/static/sql-createindex.html

CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] name ON table [ USING method ] 
    ({ column | (expression) } [ opclass ] [, ...]) 
    [ WITH (storage_parameter = value [, ... ]) ] 
    [ TABLESPACE tablespace ] 
    [ WHERE predicate ] 

Bitte stellen Sie sicher, einige zu tun Lesen, wann und wann kein Index zu verwenden ist

Verwandte Themen