【问题标题】:SQL Queries, execution plans and "Parallelism"SQL 查询、执行计划和“并行”
【发布时间】:2010-10-05 08:37:29
【问题描述】:

所以我(仍然)正在浏览一些用于计算(有时)大型数据集的一些平均值和标准偏差的慢速遗留 sql 视图。我最终得到的是视图加入视图加入视图等。

所以我会检查我的查询的执行计划。它立即提出了一个缺失的索引,然后我实施了它。但它仍然慢得让人难以忍受(太慢了,VB6 应用程序查询它的数据时会超时;))

因此,在进一步研究执行计划后,我发现成本最高(在我的案例中约为 8%)是“并行”案例。主要是“分发流”和“重新分区流”。这些是什么?

【问题讨论】:

  • 几年前我在一个类似的系统上工作过,Views 加入了 Views,随着系统中数据量的增长,性能最终变得无法接受。我发现从头开始重写查询以访问基表而不是视图可以大大提高查询成本。如果您查看重复访问相同基表以执行不同聚合的计划,您可能会发现。 Example of Inefficiency that can arise

标签: sql-server sql-execution-plan


【解决方案1】:

Distribute StreamsRepartion Streams 是 SQL 优化器选择使用 Parallel Query Processing 时发生的操作。如果您怀疑这会导致您的查询出现问题,您可以强制 SQL Server 仅使用一个具有 MAXDOP query hint 的 CPU,如下所示。

select *
    from sys.tables
    option (maxdop 1)

【讨论】:

  • 我不知道..我只是看到这些操作在执行计划中成本最高...
  • 对,这就是为什么 Joe 说如果他们的成本最高,请尝试使用 maxdop 1 看看您的整体查询性能是否有所提高。
猜你喜欢
  • 2020-04-30
  • 2019-10-20
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
  • 2012-09-02
  • 1970-01-01
  • 1970-01-01
  • 2020-10-13
相关资源
最近更新 更多