![SQL Server 2008 R2 的多个活动节点](https://linux22.com/image/552920/SQL%20Server%202008%20R2%20%E7%9A%84%E5%A4%9A%E4%B8%AA%E6%B4%BB%E5%8A%A8%E8%8A%82%E7%82%B9.png)
这是否可以立即实现,或者使用额外的工具或框架来实现?
我希望设置至少两台同时活动的机器,以便更好地了解数据库的高可扩展性如何工作。像 Facebook 这样的网站必须使用多个节点来处理其大量的查询和更新,对吗?
如果我在谷歌搜索时错过了任何有用的资源,哪怕只是链接也会很感激。
答案1
SQL Server 仅支持主动-被动集群。它不提供任何与 Oracle RAC 或 IBM PureScale 相当的功能。因此,不可能有多个主动数据库实例。
对于查询类型的应用程序,可以多次克隆同一个数据库。对于更新类型的工作负载,可以对数据集进行分区,并只允许一个活动节点更新相应的数据“分区”。最后一句中描述的分区与它描述的数据节点所有权的分区功能无关。
但一般来说,如果需要支持这样的要求,最好切换到支持该功能的产品(如 Oracle RAC)。上述解决方案在开发时间和可管理性方面无法很好地扩展。
答案2
查看 MVP 和 Microsoft 认证大师 Brent Ozar 的这篇文章:
http://www.brentozar.com/archive/2011/06/scaling-sql-server-growing-out/
它归结为复制,但并不简单。
答案3
这可以通过特殊设计(分布式分区视图)和业务层来实现,业务层负责将查询发送到何处。bwin.com 有一个参考设计,使用分布式分区视图可以在任何节点上进行更新(无需修改上层),但我建议进行此修改以获得最佳性能。