每个Web服务器都有一个SQL服务器是否明智?

时间:2009-08-17 10:58:43

标签: sql-server performance web-applications hardware-infrastructure

我想知道在这种情况下是否

  1. 您获得的阅读次数远多于写作次数
  2. 您选择的SQL服务器便宜/免费,并提供快速镜像/复制服务
  3. 您的数据库并不是非常庞大
  4. 而不是拥有单独的SQL服务器,最好在每台计算机上获得一个SQL实例,从主服务器获取即时更新。这样,在执行所有读取查询时不会出现网络延迟,但是由于SQL实例必须执行,因此每个盒子的性能都会受到影响。这对性能总体上会更好吗?是否还有其他优点/缺点?

4 个答案:

答案 0 :(得分:5)

您的SQL Server应该始终位于与Web服务器不同的框中,毫无疑问。

您拥有多少个数据库服务器和网络服务器,以及它们如何镜像(或以其他方式)取决于您扩展应用程序的方式。

您在不同的计算机上安装SQL Server,因为它需要(并且值得)大量的RAM。

答案 1 :(得分:1)

拥有数据库的只读副本是一种非常常见的架构模式。我们接受它们的某种程度的稳定性,也许它们甚至每天只更新一次。

一般规则是,多个副本会在操作和管理方面引入复杂性,并倾向于引入数据不一致的可能性 - 几乎不可避免地,副本将不是完美的步骤(或者使它们成为so的成本)太高了。)

一个例子:如果你的复制处理有点破坏会发生什么。所以一些但不是所有的副本都变得陈旧。现在,您的用户开始看到截然不同的世界观。你有多重要?如果它是一个低价值数据的网站(例如,在伦敦suberbs的名人目击),那么也许那很好。如果现有库存,并且过时意味着您的客户无法下订单,那么您可能会更关心。

我的建议:当你在凌晨3点坐在手术室时,那些在纸盒装水平上听起来很简单的东西并不总是这样。确保您可以轻松操作解决方案。

答案 2 :(得分:1)

您的SQL Server如何便宜/免费?我应该说这种设置的许可成本会很惨淡。以零售价格,您可以查看每台服务器的$6000 。另请参阅Jeff's comments有关费用的信息。通过各种方式扩展Web服务器,但不要扩展到SQL Server,直到它完全处于“膝盖”状态。

您可能想要考虑像VelocityNCache这样的分布式缓存。

无论哪种方式,首先使用一台SQL服务器运行您的站点并查看它如何处理负载,然后考虑跨服务器进行镜像/复制,否则您只是过早地进行优化。先测量一下!

答案 3 :(得分:0)

立即意味着SQL Server中没有分布式锁协调器,因此您可以获得合并冲突,因为更新可以同时更改两个不同服务器上的同一行。

根据数据库的大小和Web服务器中的磁盘,您会发现您的网络延迟小于您将开始遭受的磁盘延迟,因为Web服务器磁盘通常不会像磁盘阵列那样具有高性能给数据库。如果你想要那种性能,你可以按网络服务器购买它。

复制性能也不是没有延迟,事务的分布不是“免费”的,并且必须仔细维护事务日志以确保您没有得到日志碎片(事务日志中的vlog太多了) )它会杀死复制性能。