PHP和MySQL高流量解决方案

时间:2011-10-10 02:22:38

标签: php mysql database scalability

考虑创建具有许多并行用户的高流量PHP网站。哪个是有效性方面最好的MySQL抽象(ORM或OODBMS)(15-20个数据库表,总计约100000个项目,JOIN查询不超过4个表)?

我听说Doctrine库是合适的,或者我应该使用像Zend这样的框架?哪些数据库解决方案是基于PDO构建的,并且不需要太多学习(此时我使用的是纯PHP)?

3 个答案:

答案 0 :(得分:4)

无论数据库解决方案如何,您都应该考虑使用MemCached之类的系统。通过适当的缓存策略,您将显着减少数据库在服务器上的负载。

memcached here

有一个PHP API

答案 1 :(得分:3)

ORM或任何数据建模层永远不会让您获得更好的性能。它们的唯一目的是使您的开发时间更快,更容易维护。当涉及到实际使用关系并最终查询所有表以便找到正确的数据时,他们在决策方面是出了名的不好。在那种复杂的查询级别,您无法在不牺牲性能的情况下抽象出这些关系。

MySQL至少可以达到几百万条记录(我已经在一张表中使用了超过1亿条记录)。出于性能考虑,您通常希望至少具有主/从设置和一些在它们之间分配读取的方法。数据库几乎总是性能的限制因素。您可以随时添加更多Web服务器并在它们前面获得负载平衡以解决问题的另一面,但数据库设置总是难以维护。

您必须考虑为什么要使用ORM。如果出于发展原因,这很好,但是你的表现会受到影响。否则坚持查询。 ORM添加了第三层代码来处理和学习。如果您了解PHP和MySQL,您是否需要学习第三语言才能有效地使用它们?通常答案是否定的。

你有很多选择可供选择,但请注意,在某些时候你选择的框架/ ORM将不会按照你想要的方式运行,并且让它按照你的愿望行事,你将不得不做很多搜索并挖掘代码。这是一个经典的问题 - 预先节省时间并在以后支付,或者预先花费时间,以后不会有可能的回报。

答案 2 :(得分:1)

如果您以有计划和有意的方式缓存查询数据并使用对象API,ORM解决方案将能够优化某些方面。

列/文档[nosql:hbase,mongo]数据库将提高性能,如果您有大量(数百万+)的记录,并且仍在增长。

如果你有大量的备用内存,Memcached会有所帮助,特别是如果有大量重复的查询被运行的话。