我正在为SaaS产品做一些实时处理大量消息的POC,这将在几秒钟内达到峰值(发送/处理)和侦听器端处理消息,然后将计算出来的数据存储到Azure SQL数据库(单独的弹性池,100 eDTU和标准订阅)中,以模拟这是在发送和处理消息,并行于少数节点和线程,在这种情况下,在数据库操作的最初几秒钟内,当DTU达到最高级别时,查询执行是正常的。
发布于 2022-09-26 17:35:55
当您向上或向下扩展Azure SQL数据库打开事务的服务层时,服务器登录可能会断开连接,查询计划可能会因可用于查询更改的线程数而有所不同,并且数据缓存和查询缓存将被清除。
由于数据缓存是空的,所以当您第一次运行查询时,它必须执行大量的物理IO,内存分配会增加,而且速度很慢。您可能会看到执行缓慢的查询,它们可能显示PAGEIOLATCH_SH和MEMORY_ALLOCATION_EXT等待,这对应于从磁盘拖到缓冲区的页面。第二次运行查询时,数据存储在数据缓存中,运行速度更快。
如果数据库在很长一段时间内面临较高的DTU使用率,那么节流可能会导致连接超时和查询性能差。
https://stackoverflow.com/questions/73856801
复制相似问题