gpt4 book ai didi

azure - 克服SQL数据库(azure)并发操作限制的方法

转载 作者:行者123 更新时间:2023-12-02 05:34:33 25 4
gpt4 key购买 nike

我的应用程序使用 Windows azure 和 SQL 数据库 (Azure)。在不久的将来,我们的 SQL 数据库流量将接近 50,000 个事务/分钟。我正在使用 5GB Web 数据库。
现在,SQL 数据库中每个分区的并发操作数限制为 400: Reference

有哪些可能的方法可以克服这个限制?目前我能想到的最好的解决方案是联合。还有哪些方式?哪一个最好?
编辑:事务将是只写的。我们每 5 秒从客户端系统收集一次性能数据,这些数据被发送到我们的 REST API,最终将数据插入到 SQL 数据库。因此,没有 UI 和缓存是不可能的。

最佳答案

使用Federations in Windows Azure SQL Database是一种选择。但我更喜欢将繁重的工作卸载到不同的数据存储(例如表存储、Blob 或队列),因为它们是为处理繁重的负载而构建的,并且分区更容易。将此与良好的缓存相结合,您可以轻松克服此限制。

假设您的网站主页上有排名前 10 的产品列表,并且每天有 100,000 名访问者。一种选择是每次查询 SQL Azure,但这可能会导致 SQL Azure 负载过重。但是,您可以让一个工作进程每 24 小时运行一次,计算当时排名前 10 的产品,并将它们保存在表存储中(您可以在该表中创建几个分区,其中包含每个国家/地区、每个类别的前 10 个产品)。 ..)。您可以将其视为预先生成的 View 。每次您想要显示排名前 10 的产品时,您都会从表存储(表中的特定分区)查询项目,这样可以更好地扩展。在那里添加一些 ASP.NET 缓存,您将拥有一个非常可靠的系统。

这就是读取数据的过程。但我想您还会期待一些用户输入,用户可以在其中创建订单、发送消息……同样,如果您期望负载很重,SQL Azure 可能不是您直接交互的最佳选择(看到限制)。在前端和后端之间使用队列可能是更好的解决方案。

当您的用户下订单时,您可以将消息写入队列(存储队列或服务总线队列)。工作人员将接收此消息,并在表中为该订单创建一条记录,其中包含时间、产品数量,甚至可能是您将在用户的订单屏幕中显示的状态(例如处理中)。完成此操作后,您就有足够的时间来完成订单,完成后,您可以将最终结果保存在 SQL Azure 中(并更新表存储中的订单记录)。将最终结果保存在 SQL Azure 中仍然可以使用报告等...

这将对您的申请产生重大影响。另一种解决方案是在虚拟机中自行托管 SQL Server,但请注意,这仍在 CTP 中: Provisioning a SQL Server Virtual Machine on Windows Azure

关于azure - 克服SQL数据库(azure)并发操作限制的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11879431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com