昨天,我的SQL Server数据库很好。如今,它几乎无法使用-减慢了5到20倍,具体取决于我何时按下它。
在通宵的加载过程中,一些数据已添加到服务器,但没有什么比对数据库有很大影响的卷更是如此。大约50,000条纯文本记录(没有XML或其他轻率的记录)。
该服务器已在今天早晨修补后重新启动。但是,我们所有其他也已打补丁的数据库服务器的行为都不相同。
资源监视器似乎暗示其磁盘IO有故障。即使在数据库中没有实际发生任何事情时,它始终在.mdf文件上以接近100%的容量运行。对Templog.ldf的访问也非常高。
这里没有人是专家DBA(我们都是拥有不同SQL技能的开发人员),我们都对发生的事情感到困惑。我们尝试运行sp_updatestats并将一些大索引移到不同的光盘上,但无济于事。
我认为这一定与补丁有关-似乎太多的巧合。一位同事确信,由于数据负载导致mdf的大小增加到导致执行计划变得效率低下的程度。
到底是什么原因造成的?我们如何找出答案,我们该如何解决?
编辑:
使用sp_WhoIsActive
不会显示任何异常。它记录了我自己对sproc的使用以及来自当前正在尝试移动另一个索引的同事的一些命令。那可能现在正在支撑数据库,但是它之前运行得很差。
它是SQL Server 2008 R2的标准版本。SELECT @@VERSION
给出:
Microsoft SQL Server 2008 R2(SP2)-10.50.4033.0(X64)
2014年7月9日
版权所有(c)Windows NT 6.1(Build 7601:Service Pack 1)上的Microsoft Corporation标准版(64位)(Hypervisor )
该服务器具有72GB的RAM和三个四核2GHz处理器。
该修补程序仅适用于Windows。除补丁外,没有其他更改。
所选设置:
_id name value minimum maximum value_in_use description is_dynamic is_advanced
1540 min memory per query (KB) 1024 512 2147483647 1024 minimum memory per query (kBytes) 1 1
1541 query wait (s) -1 -1 2147483647 -1 maximum time to wait for query memory (s) 1 1
1543 min server memory (MB) 0 0 2147483647 16 Minimum size of server memory (MB) 1 1
1544 max server memory (MB) 65536 16 2147483647 65536 Maximum size of server memory (MB) 1 1
更新:将索引和表转移到不同的磁盘分区似乎正在改善情况。我仍然对如何达到临界点感到困惑,所以突然有了如此惊人的结果。
SELECT * FROM sys.configurations;
-您想要value, value_in_use
类似的东西max server memory (MB)
。此外,内部版本号SELECT @@VERSION;
以及该版本是否在虚拟机管理程序中以及自昨天(或自上次SQL Server上次重新启动以来)以来主机上是否发生任何更改都将很有用。