SQL Server 2008 R2中的并行处理

我想运行我的2(两个)SQL Server 2008 R2企业版,就好像一台服务器一样。 如果一台服务器太忙,系统应该把请求指向其他服务器。 我怎样才能做到这一点? 谢谢..

SQL Server不支持开箱即用的扩展function。 这样做实际上相当复杂,通常需要重新devise很多应用程序才能正确完成。

你确定数据库已经被正确地调整过,以便数据库中的所有内容都以最高效率运行吗? 正确调整数据库(如果还没有的话)比在多个物理服务器上扩展应用程序的工作量要便宜得多。 我有一个客户端,认为他们的应用程序将超过它运行的数据库服务器,因为3岁的公司已经在工作date间运行24核心SQL Server到60%。 通过一些模式更改和一些代码更改,我们可以在完全相同的硬件上将CPU工作负载降低到大约5%。

有几种不同的方法可以将应用程序扩展到多个服务器。

  1. 设置单个服务器来处理写入,然后使用SQL Server复制将数据提供给其他服务器进行读取。 然后,将只读服务器放在负载平衡器后面,以便将只读请求定向到所有只读服务器。 这将需要大量的应用程序审查和devise更改。

  2. 使用对等复制来使多个服务器可写。 然后,将负载均衡器放在SQL Server前面,以便将工作负载分散到各个服务器上。 这可能需要大量的应用程序审查和重新devise,具体取决于当前的表格布局以及如何使用识别值以及数据如何插入到数据库中。

  3. 在多个服务器上设置指向表的本地副本的视图以及多个服务器中的一个表的远程副本。 在物理表上设置约束条件,指定在哪个服务器上存在哪些数据部分。 每个服务器仅保存数据库的一部分。 视图被放到每个服务器上,以便任何用户都可以连接到任何服务器。 这需要大量的数据移动和非常仔细的计划,以确保模式很less发生变化,因为模式更改必须非常谨慎。

无论您select哪条路线,都需要进行大量规划,以确保select正确的选项。 我强烈build议与处理这类configuration的经验丰富的顾问合作。 最重要的是,在这之前有几个人曾经处理过这种事情,倒霉的是他们中没有很多人,而且他们将会非常昂贵。 如果你决定走这条路,打我的网站,我会让你与一些顾问(包括我自己)联系,以确保你find合适的人选。

对于选项1和3,通过类似Windows集群的高可用性非常迅速地变得非常重要。 如果选项1中的可写服务器脱机,则整个应用程序将脱机。 如果选项3中的任何服务器脱机,则整个应用程序将脱机。 使用选项2可以更好地处理服务器故障,但是如果应用程序产生这么多的负载,则需要为选项2规划N + 1个节点。

在select与您一起的选项时,还需要提前计划工作负载在未来将要进行的工作,因为您需要确保已经select了可以长期运行的选项。