在Azure SQL数据库中扩展DTU时查询执行速度较慢



我用SaaS产品的实时场景进行了一些POC,以处理大量的消息,这将在几秒钟内达到峰值(发送/处理(,侦听器端处理消息,然后将计算出的数据存储到Azure SQL数据库(独立弹性池,100 eDTU,标准订阅(中,以模拟这种发送方式;用很少的节点和线程并行处理消息,在这种情况下,当DTU达到最大级别时,在数据库操作的前几秒,我面临着一些缓慢,查询执行是正常的

  • 这是预期行为吗
  • 如果在DTU的缩放过程中执行查询,会发生什么
  • 如何避免这种情况

当您放大或缩小Azure SQL数据库的服务层时,打开的事务会回滚,服务器登录可能会断开,查询计划可能会因为可用于查询的线程数更改而有所不同,并且数据缓存和查询缓存将被清除。

由于数据缓存是空的,所以第一次运行查询时必须进行大量物理IO,内存分配会增加,而且速度很慢。您可以查看执行缓慢的查询,它们可能显示PAGEOLATCH_SH和MEMORY_ALLOCATION_EXT等待,这与从磁盘拉到缓冲区的页面相对应。第二次运行查询时,数据存储在数据缓存中,并且运行速度更快。

如果数据库在很长一段时间内面临高DTU使用率,则节流可能会导致连接超时和查询性能不佳。

相关内容

  • 没有找到相关文章

最新更新