Azure SQL 连接超时(非暂时性)
Azure SQL connection timeouts (non-transient)
我知道有关于 Azure SQL 连接超时的帖子,但没有找到以下情况。
我一直在使用 Azure SQL(S3 计划)。通常 DTU 非常低,应用程序连接到此数据库时不会超时。
当我们运行 对数据库进行批处理作业时,问题就开始了,例如更新数百万行的特定列值。完成这些批处理作业可能需要数小时。在此期间,DTU值达到最大值,其他应用超时失败。
是否有关于应该做什么的指南?这是我想到的选项。
- 升级到更高等级。此选项可能有效,但没有吸引力,因为 DTU 通常非常低。
- 增加连接到数据库的应用程序的超时时间。不确定这是否有效,因为超时必须是很长的时间。
如果有办法将 DTU 的特定部分分配给批处理作业(比如 70%)并始终为其他人保留一些 DTU,那将是理想的,但我认为这是不可能的。如有任何建议,我们将不胜感激!
您可以在 运行 批处理作业之前升级到更高层级,然后降级回 S3。
增加超时时间很少是真正的解决方案,而且通常会使事情变得更糟。
首先查看批处理作业正在执行的操作是否可以更高效,方法是检查查询执行计划是否缺少索引或索引不足、查询逻辑效率低下、缓存机会等
您可以向批处理作业添加配置设置和自我节流逻辑,以允许您控制在给定时间范围内可以执行多少操作,然后使用它来确定最适合您情况的方法。
也许更简单的选择是在批处理作业的开头添加一个步骤,在开始时临时将数据库扩展到更高的定价层,然后在完成时将其缩减。
ALTER DATABASE MyDatabaseName MODIFY (SERVICE_OBJECTIVE = 'P4')
我知道有关于 Azure SQL 连接超时的帖子,但没有找到以下情况。
我一直在使用 Azure SQL(S3 计划)。通常 DTU 非常低,应用程序连接到此数据库时不会超时。
当我们运行 对数据库进行批处理作业时,问题就开始了,例如更新数百万行的特定列值。完成这些批处理作业可能需要数小时。在此期间,DTU值达到最大值,其他应用超时失败。
是否有关于应该做什么的指南?这是我想到的选项。
- 升级到更高等级。此选项可能有效,但没有吸引力,因为 DTU 通常非常低。
- 增加连接到数据库的应用程序的超时时间。不确定这是否有效,因为超时必须是很长的时间。
如果有办法将 DTU 的特定部分分配给批处理作业(比如 70%)并始终为其他人保留一些 DTU,那将是理想的,但我认为这是不可能的。如有任何建议,我们将不胜感激!
您可以在 运行 批处理作业之前升级到更高层级,然后降级回 S3。
增加超时时间很少是真正的解决方案,而且通常会使事情变得更糟。
首先查看批处理作业正在执行的操作是否可以更高效,方法是检查查询执行计划是否缺少索引或索引不足、查询逻辑效率低下、缓存机会等
您可以向批处理作业添加配置设置和自我节流逻辑,以允许您控制在给定时间范围内可以执行多少操作,然后使用它来确定最适合您情况的方法。
也许更简单的选择是在批处理作业的开头添加一个步骤,在开始时临时将数据库扩展到更高的定价层,然后在完成时将其缩减。
ALTER DATABASE MyDatabaseName MODIFY (SERVICE_OBJECTIVE = 'P4')