更好的实践:将负载放在SQL或Web服务器上?

Bra*_*rak 5 php sql-server optimization high-load

我是美国一所大学的网站管理员.我们网站上有很多要求,我已经建立并在过去7年左右负责.我一直在为我们的网站构建越来越复杂的功能,我的做法一直是尽可能多地将编程负担放在我们的多处理器Microsoft SQL服务器上 - 使用存储过程,视图等,并填写 - 从IIS Web服务器使用PHP,ASP或Perl无法完成的任务.两台服务器都是非常强大且功能强大的机 由于我一直独自完成这项工作已经很长时间没有其他任何人进行头脑风暴,我很好奇我的方法是否适合我们未来更高负荷的情况.

我的问题是:使用嵌套的SELECT语句,视图,存储过程和聚合函数将更多的负载负担放在SQL服务器上是否更好?或者我应该使用服务器端编译来提取多个更简单的查询并通过它们进行处理时间脚本像PHP?继续保持开启或提出更好的方法?

在我做了一些负载跟踪之后,我最近对性能更感兴趣,并且了解到我已经在SQL服务器的肩膀上放了多少.Web服务器和SQL服务器全天快速响应,几乎不考虑我对它们的影响,但我想做好准备并自己进行培训并升级现有代码优化的最佳实践.它变得重要的时间.

感谢您的建议和意见.

Kon*_*rak 9

您将堆栈中的每个图层放在最适合的域中使用.

如果WHERE子句或GROUP子句就足够了,那么让数据库服务器发送1000行并使用PHP过滤它们是没有用的.调用数据库添加两个整数并不是最佳的(SELECT 5+9工作正常,但php可以自己完成,并保存往返).

您可能希望研究可伸缩性:应用程序的哪些部分可以划分为多个进程?如果您仍然只使用2层(脚本和数据库),那么在那里有很大的扩展空间.但总是先从瓶颈开始.

一些例子:在CDN上托管静态内容,为你的页面使用缓存,阅读有关nginx和memcached,使用nosql(mongoDB),考虑分片,考虑复制.