gpt4 book ai didi

c# - 并行执行查询会导致更多时间 [SQL Server]

转载 作者:太空宇宙 更新时间:2023-11-03 12:10:06 24 4
gpt4 key购买 nike

我有一个查询,当我使用 SSMS(2017) 和控制台应用程序执行它时需要 4 - 5 秒。

但是当我在我的控制台应用程序中使用parallel for each 运行同一个查询三次时,结果是 15 - 20 秒。

我期待的是,为什么我不能在并行运行时得到相同的结果。

见下文,我已经使用分析器检查过。查询同时开始

enter image description here

但是看完成时间。

enter image description here

这是我的代码:

int count = 3;
Stopwatch watch = new Stopwatch();
watch.Start();

Parallel.For(0, count, (index) =>
{
string queryString = "SELECT COUNT(*) AS [Row Count] FROM (SELECT SUM([dbo_MaximumData].[C1]) AS [Grid_Column_0],[dbo_MaximumData].[C3] AS [Grid_Column_2],[dbo_MaximumData].[C5] AS [Grid_Column_3],[dbo_MaximumData].[C6] AS [Grid_Column_4],[dbo_MaximumData].[C6] AS [Grid_Column_1] FROM [dbo].[MaximumData] AS [dbo_MaximumData] GROUP BY [dbo_MaximumData].[C3],[dbo_MaximumData].[C5],[dbo_MaximumData].[C6],[dbo_MaximumData].[C6] ) [Main Table] ";
string connectionString = "Server=””;Database=ODBC ANSI;User Id=sa;Password=Test@123;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(queryString, connection);
connection.Open();


SqlDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
{

}
}
finally
{
reader.Close();
connection.Close();
}
}
});

watch.Stop();
var str = watch.Elapsed;

我的问题是“为什么并行查询执行会导致更多时间”?

任何人,请帮助我解决这个问题。提前致谢。

最佳答案

并行处理背后的想法是在系统/核心/等之间分配 cpu/内存/任何资源负载。

您在这里所做的是运行相同的查询 count 次。这会给数据库带来负担,并导致您等待,直到 count 个相同查询的实例被执行。

请注意,这个答案实际上与数据库本身几乎没有关系 - 如果您尝试在 parallel-for 中执行任何非分布式算法,结果都是一样的。

关于c# - 并行执行查询会导致更多时间 [SQL Server],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52815405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com