我有一台托pipe在Rackspace的服务器,它是一个非常强大的机器(双核六核,48 GB的RAM),我们的数据库并不是那么大(100GB左右)。 SQL Server 2008 R2 Standard 64位。
通常情况下,这台机器运行完美。 很less有CPU核心挂钩,查询响应时间很长等等。
但是,我可以通过运行查询“SELECT * FROM RawLead WHERE emailAddress ='[email protected]';”编辑:而不是,电子邮件地址不索引。 是的,我知道这将有助于这个特定的查询,但原来的问题仍然存在 – 如何1查询可以使整个服务器停止。
当我这样做时,SQL Server将停止响应任何其他查询,直到返回此结果集。
我刚刚尝试过这一点,正如你从资源监视器屏幕截图中所看到的那样,磁盘活动改变了,CPU并没有真正实现,而是networkingstream量基本上都降为零。

是否有一个SQL Server中的设置会影响这个?
听起来像预期的行为。 如果有人实际上使用了一个这样糟糕的查询语句,我希望他们至less有共同的礼貌将它与“WITH(NOLOCK)”结合起来,这与指定读取未提交隔离级别相同。
如果这是一个大表,并且没有索引,那么你将得到一个表扫描。 此外,如果优化器认为查询的成本足够高,则可能会看到并行执行。 在一个表扫描和并行执行之间,是的,你可能会扣动CPU。 那么你可以折腾,资源争夺,多个用户,这一切都变得更糟。