糟糕的表扫描查询会减慢同一实例中良好的索引覆盖查询吗?

vor*_*rou 3 performance index sql-server memory

假设我们有两个客户使用的实例:我和我的朋友 Ivan。我们每个人都有自己的数据库。我们每个人都只是在读书。

我是个坏人,所以我无情地对数据库进行表扫描。我的表也很大,所以它们不适合内存。Ivan 是个好人,所以他的所有查询都包含在一个索引中,所以他根本没有理由访问磁盘。

他会注意到任何问题吗?

AFAIK,我将有一堆线程SUSPENDED处于等待磁盘的状态,否则不会产生太多负载,因此 Ivan 应该会做得很好。

jya*_*yao 5

由于实例级别的资源竞争,我可以肯定地说“是的,您的错误查询会影响 Ivan 的查询”。

我在一个生产 sql server 机器中有多个数据库,我已经多次看到一个数据库中的错误查询(实际上是一个 SP)导致 CPU 和 I/O 使用率飙升并影响连接到其他数据库的所有其他用户会话。

除了 CPU 和 I/O 使用率之外,一个特殊情况是错误的查询给 TempDB 性能带来的负面影响,当 TempDB 被大量使用时,它会直接影响到需要使用 TempDB 执行的所有其他查询。