具有许多并发,长时间运行的查询的SQL Server性能

时间:2009-07-16 14:31:10

标签: sql-server concurrency

我想知道如何同时执行许多长时间运行的查询会影响SQL Server及时为每个查询提供服务的能力。

[编辑]

我不打算模糊,这更像是一个假设。让我们假设查询是select语句,在具有数百万行的表上有某种谓词。

5 个答案:

答案 0 :(得分:26)

答案 1 :(得分:2)

我会使用execution plan来查看有关优化查询的信息。此外,您还要注意,如果它们需要很长一段时间,它们可能会lock行或表。要回答这个问题,您需要考虑sql server可以处理多少内存和CPU功率。在开发环境中对其进行测试可以很好地了解将要发生的事情,查询时间越长,获取的资源就越多,它们可能成为整个系统的瓶颈。

答案 2 :(得分:1)

很难说。

  • 大规模并行查询?
  • 成千上万的小人物?
  • OLTP还是仓库?
  • CPU或IO或内存绑定?
  • 服务器硬件和设置? MAXDOP,RAID等
  • 同一组数据? (在缓冲池中或大量内存数据的搅动)

我们有1亿行表,其中1秒钟的聚合查询在工作时间内运行很多次,10,000行表查询需要20秒,但只在凌晨4点运行一次。

答案 3 :(得分:0)

显然,运行的查询越多,性能就越低。

范围取决于数据和哪种查询(更新/删除/插入?)。

查询锁定表可能特别有问题;在适当情况下使用nolock可以提高性能。

答案 4 :(得分:0)

除非您开始遇到重大的I / O问题,否则性能通常会线性恶化。

但是,证明是单独和并行地测试您的查询,并监视SQL Server统计信息。