Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server中并行运行的最大查询数_Sql Server_Hangfire - Fatal编程技术网

Sql server SQL Server中并行运行的最大查询数

Sql server SQL Server中并行运行的最大查询数,sql-server,hangfire,Sql Server,Hangfire,我们有一个C#应用程序,使用Hangfire在SQL Server上运行报表。 Hangfire只是并行运行任务。目前它被设置为并行运行20个报告,这就是我在仪表板上看到的,20个报告正在运行,一些正在等待 但如果我打开SQL Server,我会看到实际上只有两个与报表相关的查询正在运行。我通常会看到1或2个报表查询处于“挂起”或“可运行”状态 这是什么原因?是不是因为SQL Server认为更多的并行性不会有帮助?还是因为配置?我真的找不到任何相关的东西,文章通常谈论“最大并行度”,但这是查询

我们有一个C#应用程序,使用Hangfire在SQL Server上运行报表。 Hangfire只是并行运行任务。目前它被设置为并行运行20个报告,这就是我在仪表板上看到的,20个报告正在运行,一些正在等待

但如果我打开SQL Server,我会看到实际上只有两个与报表相关的查询正在运行。我通常会看到1或2个报表查询处于“挂起”或“可运行”状态

这是什么原因?是不是因为SQL Server认为更多的并行性不会有帮助?还是因为配置?我真的找不到任何相关的东西,文章通常谈论“最大并行度”,但这是查询中的并行度。它被设置为0


谢谢

可能您的SQL Server资源已用完。我喜欢使用
sp_WhoIsActive
来观察您的查询是否也引用了相同的对象?可能是其中一个报表导致表锁定,因此其他报表无法运行。如果不是CPU级别的线程,您认为并行还指什么“并行性”?如果SQL Server引擎正在等待资源(I/O、内存等),它将执行其他任务,因此您可能会通过检查等待统计信息获得更多信息。可能根本没有问题。您能否澄清选项“最大并发连接数”(Db>属性>连接)的值?在您的情况下,它应该等于0或大于20。此外,您正确地考虑了“最大并行度”。它在查询中。请查阅sys.dm_os_waiting_tasks以查看是否有任何查询正在SQL端等待。有效地使用这一观点是一项工作;先尝试一下。SQL Server将并行运行您对其发出的所有查询,但如果这些查询本身需要大量资源,则大多数查询将无法取得进展。您可以减少他们的资源需求(例如,通过减少每个查询的
MAXDOP
),但这取决于您得到的等待类型。