社交网络性能-PHP

社交网络性能-PHP,php,mysql,Php,Mysql,我制作了一个社交网络,在WAMP中进行测试,在大约30分钟和50次页面浏览的会话中,一个人可以使用1500个SQL [我没有使用ZEND、APC或MEMCACHED,最重的页面在0.25秒配置512 MB内存内加载,AMD 1.81GHz] Q->可以吗,还是我需要减少SQL的数量? 有两个表:父表和子表 父表的结构 PID[主键] ... 子表的结构 ID[主键] PID ... 我没有使用外键,但在父项上删除也会从子项中删除 这是我用PHP/SQL做的 Q->可以吗?还是我应该选择外键以

我制作了一个社交网络,在WAMP中进行测试,在大约30分钟和50次页面浏览的会话中,一个人可以使用1500个SQL

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

Q->可以吗,还是我需要减少SQL的数量? 有两个表:父表和子表 父表的结构 PID[主键] ...

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

我没有使用外键,但在父项上删除也会从子项中删除 这是我用PHP/SQL做的

Q->可以吗?还是我应该选择外键以获得更好的性能? 在PHP中,我可以配置PHP将占用多少内存 Q->我也可以用MySQL做吗?
[我正在使用WAMP,需要在瓶颈条件下监控社交网络的性能!]

30个SQL查询/页面总体上是合理的(考虑到一些CMS的功能,实际上这是相当低的)。另一方面,根据所提供的信息,无法确定在您的情况下是否合理

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


有关配置MySQL内存使用的信息可以在手册部分找到。

没有人可以说任意数量的SQL查询是否可以:

  • 这取决于这些查询的复杂性
  • 这取决于数据库的结构(例如,索引起着重要作用)
  • 这取决于您拥有的数据量
  • 这取决于您计划拥有多少并发用户(一次只有一个用户,您的应用程序可能比在给定时刻拥有100个用户要快得多)
基本上:使用//等工具进行一些基准测试;看看你的服务器是否能处理你在未来几周内所期望的负载


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


但是使用外键有助于数据的完整性——而且拥有正常的数据可能比几毫秒更重要,尤其是在您刚刚启动应用程序的情况下(这意味着可能会有相当多的bug).

我同意Pascal和Oswald的观点,尤其是使用JMeter或类似工具进行测试,以确定您是否确实存在问题

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

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


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

解析您的问题:1)我是否需要减少查询数量[以避免数据库命中并提高应用程序性能];2) 使用外键处理跨多个表的删除是否会提高性能;3) 如何配置数据库的内存余量。我认为这篇文章真的应该分成三篇独立的文章。“社交网站最佳实践的数据库处理”太宽泛了。由于我是一名新会员,每次发布新帖子都要等20分钟,所以我选择了快捷方式:)@Sourav我可以知道你网络的URL吗?@Sourav我会选一个look@Sourav:嗯?没有OpenID登录?:p只是开玩笑。我来看看。但是看起来不错!考虑到一些主机测量连接和查询的数量,thnx到@Oswald和@Pascal MARTIN30似乎有点高。而且,如果数据库不在本地主机上,则特别高。你有引用吗?@bob the destroyer没有,但我记得Robert Douglass的一次演讲,谈到Drupal中的各种缓存策略如何将每页的查询数从>300减少到少于10。也似乎暗示了数百种情况。“不可能确定它在你的情况下是否合理”是准确的。OP的情况实际上取决于太多的变量。我可以在MySQL.ini或my.cnf[或类似的东西]中为MySQL设置内存吗?