销售电话: 1-800-867-1380

Azure SQL Database 资源管理

更新时间: 2014年9月

本主题介绍 Azure SQL Database 如何控制专用于数据库的资源,以实现最高的性能可预测性。每个数据库可用的资源量取决于分配给该数据库的性能级别。使用本主题中的信息可了解用于控制资源的机制。如果要开发应用程序以实现最佳性能,这些信息将非常有用。本主题包括遇到各类问题时建议采取的做法。

Azure SQL Database 使用三个不同的机制来控制资源:

  • 资源调控

    CPU、内存、日志写入、查询 IOPS 受到资源调控。这种新引入的机制与实施最大限制和限制有所不同,它不阻止或终止查询的执行,但会让查询排队,当资源变得可用时,再为排队的查询提供资源。

  • 实施限制

    最大限制是针对可以打开的数据库连接数及查询并行执行(工作线程)实施的。

  • 限制

    当承载数据库的计算机达到临界负载量,从而可能导致系统中断时,才会发生限制。限制是系统为了防止自身过载而采用的最后一种机制,它是非常罕见的。

对于 Azure SQL Database 而言,基本、标准和高级服务层的设计目标之一是让数据库如同在自身的计算机上运行,而与其他数据库完全隔离。资源调控在查询执行过程中模拟这种行为。当总资源使用量达到分配给数据库的最多可用 CPU、内存、日志写入和查询 IOPS 资源时,资源调控将让正在执行的查询排队,当资源释放时,再将资源分配给这些排队的查询。

与在专用计算机上相同,用尽所有可用资源将导致当前执行的查询的执行时间延长,可能导致客户端超时。在试图执行新查询时,由于工作线程不可用,具有主动性重试逻辑的应用程序和以高频率执行针对数据库的查询的应用程序可能遇到错误。

建议:当接近数据库的最大使用量时,请监控资源使用量以及查询平均响应时间。遇到长时间运行的查询时,你通常有三个选项:

  1. 减少针对数据库的传入请求数以防止工作线程的超时和累积。

  2. 为数据库分配更高的性能水平。

  3. 优化查询以减少每个查询的资源使用量。有关详细信息,请参阅 Azure SQL Database 性能指南一文中的查询优化/提示部分

Azure SQL Database 通过为每个数据库设置并发工作线程(请求)和并发会话的最大限制来进行资源调控。资源调控机制因目标数据库是 Web/企业版数据库还是高级数据库而有所不同。有关详细信息,请参阅Azure SQL Database 资源调控

SQL Database 的连接数和能够并行处理的请求数都受到限制。SQL Database 允许数据库的连接数大于并发请求数,以便支持连接池。

虽然应用程序可以轻松地控制可用连接数,但预测和控制并行请求数通常要困难得多。特别是在高峰负载下,当应用程序发送很多请求时,或者数据库无法达到资源限制,并且由于长时间运行查询而导致工作线程开始累积时,可能遇到错误 <NUMBER>。

建议:当工作线程用尽时,你通常可以使用三个选项:

  1. 减少针对数据库的传入请求数以防止工作线程的超时和累积。

  2. 为数据库分配更高的性能水平,允许更大的并发请求数。有关详细信息,请参阅Azure SQL Database 服务层和性能级别

  3. 优化查询以减少每个查询的资源使用量。有关详细信息,请参阅 Azure SQL Database 性能指南一文中的查询优化/提示部分

下表列出了资源限制,一旦超过这些限制,Azure SQL Database 就会拒绝请求,或者终止与受影响资源的连接,并且返回错误代码

 

资源 限制 返回的错误代码

Database Size

取决于数据库配额 (MAXSIZE)

40544

Transaction Duration

状态 1:24 小时

状态 2:20 秒,如果事务锁定基础系统任务所需的资源

40549

Transaction Lock Count

每个事务 100 万个锁

40550

Tempdb

状态 1:5 GB tempdb 空间

状态 2:tempdb 中每个事务 2 GB 空间

状态 3:tempdb 中总日志空间的 20%

40551

Transaction Log Length

状态 1:每个事务 2 GB

状态 2:总日志空间的 20%

40552

Memory Usage

16 MB 内存授予超过 20 秒钟

40553

有关每个错误代码的详细信息,请参阅 Azure SQL Database 资源限制

限制严重程度分为以下两个阶段:

  • 软限制:这是第一个阶段,此时事务日志、I/O 和存储空间等计算机资源超过了预定义的安全阈值。SQL Database 选择一小组耗用资源最多的数据库,然后限制它们的活动。并非计算机上的所有数据库都将受到限制,只是限制占用最多资源的数据库。如果使用率低于预先定义的阈值,则表明有足够的资源供服务器上的所有数据库使用。

  • 硬限制:这是第二个也是最后一个阶段,此时计算机因为过载受到了严重影响。在硬限制阶段,在释放资源前不允许再与计算机承载的数据库建立其他新连接。SQL Database 会为新的连接尝试返回错误消息,指示资源已经过度使用。

有关引擎限制机制、返回的相应错误代码和建议的解决方法的详细信息,请参阅 Azure SQL Database 限制

另请参阅

本文是否对您有所帮助?
(1500 个剩余字符)
感谢您的反馈
Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2014 Microsoft