是否可以配置多个数据库服务器(所有托管相同的数据库)同时执行单个查询?
我不是要求同时使用多个CPU执行查询 - 我知道这是可能的。
更新
我的意思是这样的:
所有这些都应该自动,而无需显式引用 Server1 或 Server2 。我的意思是这样的并行查询执行 - 是否可能?
更新2
感谢John和wuputah的提示。
我正在研究提高MOSS数据库后端的 可用性和容量的替代方案。所以我正在寻找的是一种开箱即用的SQL Server负载平衡解决方案,它对应用程序透明,因为我无法修改应用程序以任何方式。 我猜SQL Server没有这样的功能(据我所知,Oracle也是如此 - 它是wuputah提到的RAC)。
更新3
Top Tips for SQL Server Clustering文章的引用:
让我们首先揭穿一个共同点 误解。您使用MSCS群集 高可用性,而不是负载 平衡。此外,SQL Server没有 有任何内置的,自动的 负载平衡能力。你必须 通过你的负载平衡 应用程序的物理设计。
答案 0 :(得分:3)
您真正在谈论的是群集解决方案。看起来SQL Server和Oracle有解决方案,但我对它们一无所知。我猜他们购买和实施它们的代价非常高。
可能的替代建议如下:
希望这有帮助!
RE Update 1:
如果你无法修改应用程序,那就有希望了,但它可能有点复杂。如果要设置主从复制,则可以设置代理以将读取查询发送到从属服务器并将查询写入主服务器。我已经看到这是用MySQL完成的,但不是SQLServer。除非您想自己编写代理,否则这有点问题。
这是discussed on SO previously,因此您可以在那里找到更多信息。
RE Update 2:
Microsoft的群集可能不是为性能而设计的,但这是Microsoft的错误。这仍然是你在这里谈论的复杂程度。如果他们说它无济于事,那么您的选择仅限于上述内容以及您对应用程序的操作(例如分片,拆分为多个数据库等)。
答案 1 :(得分:2)
是的,我相信这是可能的,好吧,让我解释一下。
您需要研究和研究分布式查询的使用。分布式查询跨多个服务器运行,通常用于引用未存储在本地的数据。
http://msdn.microsoft.com/en-us/library/ms191440.aspx
例如,服务器A可以保存我的Customers表,而服务器B保存我的订单表。可以使用分布式查询来运行引用服务器A和服务器B的查询,每个服务器管理其本地数据的处理(可以包含并行性的使用)。
现在理论上,您可以在每个服务器上存储完全相同的数据并专门设计查询,以便在某些服务器上仅引用某个表,从而分配查询负载。然而,就CPU而言,这不是真正的并行处理。
如果您的目标是分发应用程序的处理负载,那么SQL Server的典型方法是使用Replication在多个服务器之间分配数据处理。此方法也不能与并行处理混淆。
http://databases.about.com/cs/sqlserver/a/aa041303a.htm
我希望这会有所帮助,但当然请随意提出任何问题。
答案 2 :(得分:1)
有趣的问题,但我很难理解这对多用户系统有益。
如果我是在Server1上完成一半查询的唯一用户,而在Server2上的另一半听起来很酷:)
如果有两个并发用户(假设有相同难度的查询),那么我很难看到这有助于:(
我可以在服务器和负载平衡上拥有相同的数据 - 所以我得到Server1,我的伙伴得到Server2 - 或者我可以将一半的数据放在Server1上,另一半放在Server2上,每一个都将被优化,并且缓存,只是他们自己的数据 - 分散负载。但是,无论何时必须进行合并以完成查询,限制因子都会成为它们之间的管道大小。
基本上是联合数据库服务器。我可以说,不是将我的所有客户都放在一台服务器上,而是将我的所有订单放在另一台服务器上,我可以将我的美国客户和他们的订单放在一个,而我的欧洲客户/订单放在另一个,而且只有我的查询跨越两者都在那里任何需要合并步骤。