我需要优化我们的网络服务,但不知道从哪里开始。我们正在运行GWT,PHP和PostgreSQL。即使没有达到任何性能数据的峰值,我猜测主要优化将在数据库中发生。
我对重组数据库和索引都一无所知。 (真的不知道任何关于DB的事情。)所有指针都非常赞赏这三个领域中的任何一个!
答案 0 :(得分:10)
始终从测量开始。在你知道瓶颈在哪里之前,你不知道要改进什么。 “甚至没有查看任何性能数据”你不太可能做出正确的调用 - 或者至少,我经常发现我对性能受损的地方做出了错误的猜测。也许你比我更擅长猜测:)(当然,它可能在你的代码中的数据库中......)
测量工具可以像日志语句一样简单,以查看不同类型的请求所需的时间,完整的分析器,查询分析器等。在数据库方面,您几乎肯定希望使用EXPLAIN来查看在查询执行计划中...但在此之前,您将首先想知道哪些查询对您造成了伤害,而且更多的是,对Web服务本身的请求成本很高。
答案 1 :(得分:2)
在触摸数据库之前查看best practices from yahoo(在此之前确定您的瓶颈)。您不希望花费大量时间来提高速度,通常可以使用链接中的提示实现大幅提升。
要对您的前端进行分析,您可以使用page speed。
答案 2 :(得分:2)
正如其他人所说,请务必先确定您的瓶颈。
至于你对数据库的担忧,我会建议在你的表上创建一些索引来加速慢查询(仅在识别时)
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 ]
请务必阅读何时以及何时不使用索引