社交网络性能 - PHP

时间:2011-03-30 05:28:31

标签: php mysql

我建立了一个社交网络,在WAMP中测试它可以为一个人显示近1500个SQL,大约30分钟和50个页面浏览的会话!

[我没有使用ZEND或APC或MEMCACHED最重的页面在0.25秒内配置512 MB RAM,AMD 1.81GHz]

Q->是的还是我需要减少SQL的数量?

有两张桌子PARENT和CHILD PARENT表的结构 PID [主键] ... ...

CHILD表的结构 ID [主键] PID ... ...

我没有使用外键,但在PARENT上删除也会从CHILD中删除 我用PHP / SQL

制作了这个

Q->是的还是我应该去FOREIGN KEY以获得更好的性能?

在PHP中,我可以配置PHP要吃多少内存 的 Q->我可以用MySQL吗? [我正在使用WAMP,需要监控社交网络在瓶颈状态下的表现! ]

3 个答案:

答案 0 :(得分:1)

没有人可以说任意数量的SQL查询 OK

  • 这取决于这些查询的复杂性
  • 这取决于您的数据库的结构(例如索引,发挥重要作用)
  • 这取决于您拥有的数据量
  • 这取决于您计划拥有多少并发用户(一次只有一个用户,您的应用程序可能比给定时刻的100个用户更快)
  • ...

基本上:使用ab / siege / Jmeter等工具做一些基准测试;并查看您的服务器是否能够处理您在未来几周内所需的负载。


使用外键通常对性能没有帮助(除非它们强制您设置您需要但不会自己创建的索引):它们在数据库端添加了一些额外的工作。

但是使用外键有助于数据的完整性 - 并且拥有可靠的数据可能比几毫秒更重要,特别是如果您只是启动应用程序(这意味着可能存在相当多的错误)< / em>的

答案 1 :(得分:0)

每页30个SQL查询一般是合理的(考虑到某些CMS的作用,实际上它很低)。另一方面,根据给出的信息,无法确定是否合理

外键不会提高性能。外键约束可能。但他们也将业务逻辑放入持久层。这是一个优化。

有关配置MySQL内存使用情况的信息,请参阅手册部分7.11.4.1. How MySQL Uses Memory

答案 2 :(得分:0)

我同意Pascal和Oswald - 尤其是。在使用JMeter或类似测试时,看看你是否确实遇到了问题。

我还会使用几百万个测试配置文件加载数据库,以查看您的查询是否会随着时间的推移而减慢。这应该有助于优化查询性能。

如果你调整MySQL的目标是引入一个人为的瓶颈来测试应用程序,我会小心从这些测试中推​​断出来。你所看到的瓶颈是它们往往是非线性的 - 一切都很好,直到你遇到瓶颈时刻,然后一切都变得高度不可预测。您不能简单地通过减少数据库服务器的内存来重新创建它。

如果有任何悬而未决的成果,我会减少SQL查询的数量,但每页30个查询不会过多。如果你想准备扩展到Facebook级别,我不认为将每页查询从30减少到28将有很大帮助 - 你需要准备好跨多个数据库划分应用程序,引入缓存,并购买更强大的硬件。