是否有人知道如何在Azure SQL数据库中启用并行查询处理。我正在尝试调试一些查询,这些查询在我的笔记本电脑(SQL Server 2017)上运行时可接受,但在Azure SQL数据库中运行速度非常慢。天蓝色数据库的定价层是标准S2:50 DTU。我在笔记本电脑上使用的查询计划中看到的唯一区别是分布式流,分区流和聚集流。如何才能在天蓝色启用这些功能?我在azure数据库中找不到有关这些选项的任何文档。
更新
由于无法在azure中获得相同的查询计划,因此我检查了azure sql数据库的cpu核心数。似乎对于Standard S2定价层只是一个核心。为了查看azure数据库中的内核数,我使用了以下查询:(参考:http://www.nikoport.com/2015/03/19/azure-sqldatabase-v12-premium-editions-and-available-cores/)
从sys.dm_os_schedulers中选择*,其中status ='VISIBLE ONLINE'和is_online = 1
在天蓝色下,我只有一个条目,而在笔记本电脑上,我有8个cpu内核。如果我使用OPTION(MAXDOP 1)运行查询,则我的计算机上将获得相同的执行计划
答案 0 :(得分:3)
SQL Azure的保留大小(在低端)小于完整内核,在高端包含多个内核。现在,SQL Azure中实际上有两种定价模型: *基本/标准/高级 *基于v-Core
基本/标准/高级模型具有固定的CPU,内存,IOPS和存储部分。基于v核的模型公开了更多的硬件(您可以查看CPU代数并选择所需的代数),并且可以单独购买存储/设备。
您正在使用S2数据库。在这些价位上,Basic和Standard(最高〜S3)实际上只卖给您一小部分核心。 Premium P1大约是一个核心,而v核心模型可以为您销售1个或更多核心。
如果要使用并行查询计划,则需要保留的大小大于单个核。
答案 1 :(得分:1)
默认情况下,Azure SQL数据库中启用了并行。如果没有启用您,则可能是通过ALTER DATABASE SCOPED CONFIGURATION命令将其禁用的。使用相同的命令来启用并行性。
答案 2 :(得分:0)
Azure SQL DB和SQL Server还将决定您的查询是否应以并行性运行。 SQL Server中的并行性通常必须达到成本阈值(请参阅仅SQL Server中支持的CostThresholdForParallelism)。我见过查询永远不会在启用并行性的情况下运行。但是,您可以使用提示强制并行化。
OPTION(USE HINT('ENABLE_PARALLEL_PLAN_PREFERENCE'))