如何扩展SQL azure?

时间:2011-05-25 11:00:53

标签: azure cloud scalability azure-sql-database azure-table-storage

出于可扩展性原因,我想在Azure云中托管我的WCF服务。例如,将有一些读取数据操作。并且它将处于高负载(1000+用户/秒)之下。 (就像我的previous question

对于任何请求,我也有1秒超时的限制。

我的服务将与SQL Azure连接。由于延迟小(根据微软的benchmark不超过7毫秒)我选择了它

每个实例/数据库可以容纳多少个并发连接SQL Azure?

当我达到每个实例的连接限制时,是否有能力扩展SQL Azure?

其他解决方案,我的方案的选项?

感谢。

4 个答案:

答案 0 :(得分:6)

要记住的一件事是,您需要确保最大限度地利用连接池。使用服务帐户而不是不同的登录是确保正确连接池的重要步骤。

另一个考虑因素是使用MARS。如果您有许多请求通过,您可能希望将它们一起汇集到一个请求中,因此只需一个连接,并返回多个结果集。 In this post我讨论了如何实现SQL语句的单向排队;这可能不适合你,因为你可能期待一个响应,但它可能会给你一些关于如何实现一批请求以减少连接数量和最小化等待时间的想法。

最后,你可以看看我去年写的这个工具来测试针对SQL Azure的连接/语句。该工具会自动关闭连接池以测量并发效果。 You can download it here

最后,我还在codeplex上写了Enzo Shard Library。如果您决定为您的项目调查库,请告诉我。请注意,该库也将发展为支持SQL Azure数据联盟的未来功能。

答案 1 :(得分:4)

似乎对每个SQL Azure实例可用的连接数没有直接限制,但Microsoft声明他们保留在资源使用被视为“过度”的情况下限制连接的权利。

有关此here的一些信息,还详细说明了这种情况下可能发生的情况here

一个好的解决方法是考虑“分片”,在这里您可以根据一些易于定义的标准对数据进行分区,并拥有多个数据库。当然,这会产生额外的费用。这里有一个巧妙的实现:http://enzosqlshard.codeplex.com/

另外:Azurescope 在这里有一些有趣的基准:http://azurescope.cloudapp.net/BestPractices/#ed6a21ed-ad51-4b47-b69c-72de21776f6a(不幸的是,2012年初删除)

答案 2 :(得分:2)

  

当我达到每个实例的连接限制时,是否有能力扩展SQL Azure?

除了Enzo sql分片建议之外,还有一些正在构建的Microsoft产品/功能可帮助扩展SQL Azure。这些是CTP(充其量),但可以为您提供一些可扩展性选项,允许您在多个SQL Azure数据库之间分配负载:

答案 3 :(得分:0)

除了Jeremy的回答,请查看here以获取SQL Azure连接约束信息。