SQL Server 2008不断读取MDF文件,性能可怕

我们有一个在VMWare ESXi上运行的Windows 2008 R2虚拟服务器后端运行SQL Server 2008 R2 Express的应用程序。 用户抱怨该应用程序非常慢。 我看到非常高的磁盘IO对我来说没有意义。

背景:

  • 平均磁盘队列长度在60左右,最大值在250左右
  • 平均磁盘读取次数/秒大约在2000年左右,最高大约3500次
  • 资源监视器显示sqlservr.exe正以40-60 MB /秒的速度读取.mdf文件(请参见下文)。 写IO非常低。
  • .mdf文件只有2 GB,这意味着整个事情应该适应内存
  • 该服务器具有32 GB RAM,通常使用less于16 GB
  • 服务器有RAID10中的8x 15k SAS磁盘。 这是一个戴尔PERC H710控制器,它能够采取一个固态硬盘启用CacheCade(SSD为基础的读取caching),这是我试图尝试,但似乎整个事情应该caching在RAM中,无论如何,所以我我不确定这会有帮助。
  • SQL虚拟机位于运行VMWare ESXi 5的Dell服务器上。该ESXi主机上还有一个虚拟机,但它是一个IO控制器非常less的域控制器。
  • 此应用程序以前运行在独立的Windows 2003服务器上。 我们升级到了Windows 2008 R2,并且同时升级了应用程序到一个更新的版本,所以这些因素中的任何一个都可能起作用。

有什么方法可以深入挖掘? 有没有办法看到什么SQL服务器在做什么(正在执行什么查询等)? 这种行为看起来是否正常,并且存储的负载太多了? 我想知道如果有东西没有正确configuration。

在这里输入图像说明

http://msdn.microsoft.com/en-us/library/cc645993(v=sql.105).aspx#Scalability

Espress将不会为SQL进程使用超过1 GB的RAM。 您需要至less购买并安装Web或Standard才能使用超过4 GB的内存 – 它们都支持64,这比您拥有的要多,所以请使用其中的一个。

另外,作为DBA是一个相当深刻的主题,但它通过Technet和帮助文件很容易访问。 “我怎么知道哪些查询正在执行”几乎是第一天的主题(因为知道什么版本适合于给定的任务。)事件探查器甚至不能用于Express,所以你就像一个小河一样你现在被configuration。

查看查询详细信息 – 检查具有较高物理或逻辑IO的查询,隔离它们,查看查询计划。 这是几年,我使用了像2008 R2 oudated版本… http://gallery.technet.microsoft.com/scriptcenter/Find-inefficient-query-88f4611f可能会给你一个开始。

我的指针将会丢失索引触发表扫描。 分析器和调整向导也可能帮助您了解问题所在。 IF 2008 R2已经在pipe理器中有活动概述,那么这个窗口就有了一个最昂贵的查询窗口。