Parallel processing MS SQL Server 2008 R2 spatial:未消耗足够的CPU

Parallel processing MS SQL Server 2008 R2 spatial:未消耗足够的CPU,parallel-processing,scalability,sql-server-2008-r2,spatial,Parallel Processing,Scalability,Sql Server 2008 R2,Spatial,我有一个存储过程,它包含一个使用适当索引的select语句。我正在尝试调用此SP以获取150万条记录。SP如下所示: CREATE PROC [dbo].[DensityLookup] @point geography AS BEGIN SELECT TOP(1) DRGN FROM dbo.USAREA WITH(INDEX(geog_sidx)) WHERE geom.STIntersects(@point) = 1; END 我从.net代码调用此查询,查询在我的4核4GB RA

我有一个存储过程,它包含一个使用适当索引的select语句。我正在尝试调用此SP以获取150万条记录。SP如下所示:

CREATE PROC [dbo].[DensityLookup]
@point geography
AS
BEGIN
    SELECT TOP(1) DRGN FROM dbo.USAREA WITH(INDEX(geog_sidx)) WHERE geom.STIntersects(@point) = 1;
END
我从.net代码调用此查询,查询在我的4核4GB RAM机器上执行良好并在大约25分钟内完成,使用5个并发连接消耗大约90%的CPU

问题是,我还有一台24核36GB RAM的机器,不管我打开多少个连接,它都会在同样的25分钟内完成,CPU使用率永远不会超过60%。 如果我打开的并发连接超过18个,则会出现错误:

[33304] System.Data.SqlClient.SqlException (0x80131904): The query processor could not start the necessary thread resources for parallel query execution.
然后,我将SQL Server的并行度降低到1,默认情况下是4,现在可以打开更多连接。但问题仍然是一样的,不是缩放


我在这两台机器上都安装了Windows Server 2008 R2 SP1和SQL Server 2008 R2 SP1标准。

您可以通过运行以下查询来检查“最大并行度”。从sys.configurations中选择name,value,其中name='max degree of parallelism',我认为将其移动到dba.stackexchange是有意义的。。另请检查:@Baz1nga:max degree of parallelism默认设置为0,我将其更改为1,因为我无法建立超过18个连接您给出的查询现在返回1,而之前的更改用于返回0。@Baz1nga:I正在读取您给出的链接。。非常符合我的背景