我需要优化我们的Web服务,但不知从何开始。我们正在运行GWT、PHP和PostgreSQL。即使没有查看任何性能数据,我猜最主要的优化将发生在数据库中。
我对重构DB或索引一无所知。(实际上,我对DB一无所知。)所有三个领域的任何指针都非常感谢!
我需要优化我们的Web服务,但不知从何开始。我们正在运行GWT、PHP和PostgreSQL。即使没有查看任何性能数据,我猜最主要的优化将发生在数据库中。
我对重构DB或索引一无所知。(实际上,我对DB一无所知。)所有三个领域的任何指针都非常感谢!
始终要从度量开始。如果不知道瓶颈在哪里,就不知道该改进什么。 "甚至没有偷看任何性能数据",你很可能会做出错误的决定 - 或者至少,我经常发现我对于性能受到影响的位置猜测错误。也许你比我更擅长猜测:) (当然,它很可能在代码中的数据库中...)
度量工具可以简单到查看不同类型请求花费时间的日志语句,也可以复杂到完整的分析器、查询分析等等。在数据库方面,您几乎肯定需要使用EXPLAIN来查看查询执行计划...但在此之前,您需要知道首先哪些查询会影响性能,以及更重要的是,哪些针对 Web 服务本身的请求会很耗时。
正如其他人所说,首先要确定瓶颈所在。
关于数据库的问题,我建议在表上创建一些索引以加速缓慢的查询(仅在确定需要时)。
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 ]
请确保在使用索引时仔细阅读何时以及何时不使用索引的相关内容。
在操作数据库之前(并在此之前确定瓶颈),请查看yahoo的最佳实践。您不希望为了微小的速度提升而花费大量时间,通常可以使用链接中的提示来获得大幅度的速度提升。
要对前端进行分析,您可以使用页面速度。