【问题标题】:Azure SQL connection timeouts (non-transient)Azure SQL 连接超时(非瞬态)
【发布时间】:2017-03-12 02:43:24
【问题描述】:

我知道有关于 Azure SQL 连接超时的帖子,但没有找到以下案例。

我一直在使用 Azure SQL(S3 计划)。通常 DTU 非常低,当应用程序连接到这个数据库时没有超时。

当我们对数据库运行批处理作业时,问题就开始了,例如更新数百万行的某些列值。完成这些批处理作业可能需要数小时。在此期间,DTU 值达到最大值,其他应用程序因超时而失败。

是否有关于应该做什么的指导方针?这是我想到的选项。

  1. 升级到更高级别。此选项可能有效,但没有吸引力,因为 DTU 通常非常低。
  2. 连接到数据库的应用程序的超时时间增加。不确定这是否有效,因为超时时间必须很长。

如果有办法将 DTU 的特定部分(例如 70%)分配给批处理作业并始终保留一些 DTU 留给其他人,那将是理想的,但我认为这是不可能的。任何建议将不胜感激!

【问题讨论】:

    标签: database performance azure database-connection azure-sql-database


    【解决方案1】:

    增加超时很少是真正的解决方案,而且往往会使事情变得更糟。

    首先看看批处理作业正在执行的操作是否可以提高效率,方法是检查缺少或不足的索引的查询执行计划、低效的查询逻辑、缓存的机会等。

    您可以向批处理作业添加配置设置和自动限制逻辑,以控制在给定时间范围内它可以执行的操作数,然后使用它来确定最适合您的情况。

    也许更简单的选择是在批处理作业的开头添加一个步骤,该步骤在启动时将数据库临时扩展到更高的定价层,然后在完成时将其缩小。

    ALTER DATABASE MyDatabaseName MODIFY (SERVICE_OBJECTIVE = 'P4')
    

    【讨论】:

    • 我不知道可以从 SQL 脚本更改定价层。切换计划大约需要一个小时,但我下次想尝试一下。谢谢!
    【解决方案2】:

    您可以在运行批处理作业之前升级到更高层,然后降级回 S3。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-24
      • 1970-01-01
      • 2016-06-20
      • 2020-07-08
      相关资源
      最近更新 更多