2010-02-23 4 views
5

J'ai besoin d'optimiser notre service Web, mais je ne sais pas par où commencer. Nous exécutons GWT, PHP et PostgreSQL. Sans même avoir atteint un sommet sur les données de performances, je suppose que les optimisations majeures vont se produire dans la base de données.Trucs et astuces d'optimisation

Je ne connais rien à la restructuration de la BD, ni à l'indexation. (Je ne connais pas vraiment les DBs.) Tous les pointeurs sont très appréciés dans l'un des trois domaines!

Répondre

10

Toujours Commencez par la mesure. Jusqu'à ce que vous sachiez où sont les goulots d'étranglement, vous ne savez pas quoi améliorer. "Sans même avoir jeté un coup d'œil sur les données de performance", il est peu probable que vous fassiez le bon appel - ou du moins, je trouve souvent que I fait des suppositions incorrectes sur les endroits où les performances sont pénibles. Peut-être que vous êtes mieux à deviner que moi :) (Bien sûr, il peut bien être dans la base de données dans votre code ...)

Les outils de mesure peuvent être aussi simples que les déclarations de journal pour voir combien de temps différents types de demandes Du côté de la base de données, vous aurez presque certainement besoin d'utiliser EXPLAIN pour voir les plans d'exécution des requêtes ... mais avant cela, vous voudrez savoir quelles requêtes vous blessent dans la base de données. première place, et plus que cela, quelles demandes au service Web lui-même sont coûteux.

+1

Profil tôt et souvent. Commencez le profilage lors de la conception lors de la création de solutions de pointe. Inclure le profilage dans le cadre des tests de performance. Opérations de production de profil. On devrait avoir une liste de «points chauds» potentiels en tout temps dans le processus de développement. –

+0

Si vous connaissez des outils qui m'aident à faire les mesures, ce serait grandiose. –

+0

Une recherche rapide sous "profileur php" donne beaucoup de résultats. Il semble y avoir plusieurs solutions commerciales, et il devrait y avoir quelques options gratuites. – TMN

2

Regardez le best practices from yahoo avant de toucher le db (et avant cela identifiez votre goulot d'étranglement). Vous ne voulez pas passer beaucoup de temps pour une petite amélioration de la vitesse, généralement de grandes accélérations pourraient être réalisées en utilisant les conseils dans le lien.

Pour profiler votre frontend, vous pouvez utiliser page speed.

2

Comme les autres l'ont dit, assurez-vous d'identifier d'abord vos goulets d'étranglement.

En ce qui concerne vos préoccupations au sujet de la DB va je suggère la création de certains indices sur vos tables pour accélérer les requêtes lentes (uniquement identifié)

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 ] 

S'il vous plaît assurez-vous de faire quelques lire quand et quand ne pas utiliser un index

Questions connexes