SQL Server 2008 Web 与 SQL Server 2008 Enterprise

SQL Server 2008 Web 与 SQL Server 2008 Enterprise

几个月前我编写了一个应用程序,并将其托管在我们办公室的工作站上,该工作站配有 Intel Core 2 Quad Q8200 @ 2.33GHz、8 GB RAM、Windows Server 2008 Enterprise 和 SQL Server 2008 Enterprise。Web 服务器和数据库服务器都在同一台机器上运行。

我们遇到了大量的流量,因此迁移了 ClubUptime.com,并获得了 2 个顶级 Windows VM。数据库服务器在 8 GB 内存和 Intel Xeon e5620 @ 2.40GHz 上运行 Windows 2008 R2 Standard 和 SQL Server 2008 R2 Web。

自从切换以来,数据库曾经在 RAM 中运行大约 400MB,现在运行大约 4-7GB,并且没有任何变化(除了这里和那里的几列)。我们的流量增加了四倍,我们的数据库在磁盘上是 6 GB,如果数据库只有 6 GB,为什么 SQL Server 会占用 7 GB。为什么它会将整个数据库存储在内存中?

另一件事是为什么数据库的大小增长了 4 倍而内存占用却增长了 12 倍?

最后一个问题:为什么 CPU 现在会固定在 100% 而以前不是这样?设计很简单,很少的连接,没有子查询。我只是不知所措,除非是 SQL 服务器版本,或者我从实际硬件转移到虚拟机。

答案1

SQL Server 将使用尽可能多的内存,因此除非有其他问题,否则我不会因为内存占用而睡不着觉。如果可以,它会存储所有内容,RAM 总是比磁盘快,如果它没有用于其他任何事情,那为什么不呢。

在虚拟机上运行 SQL 可能会有问题。它运行良好,但虚拟化会对性能造成影响,正如许多人在这里评论的那样,SQL 受到的影响比大多数其他应用程序都要大。这在很大程度上也取决于您的虚拟机实例 - 如果虚拟机管理程序是 VMware vSphere 主机,那么它在同等实际资源下的性能将优于 Xen,如果它由 Hyper-V 支持并且争用率很低(即主机上只有非常非常少的虚拟机),那么它的性能会相当不错。我曾经必须解除虚拟化的唯一系统都是 SQL 服务器。

您没有指定他们为您的虚拟机提供多少个虚拟 CPU,我非常怀疑您是否获得了 Xeon 5620 可以提供给虚拟机的所有 8 个核心。即使您这样做了,也可能不是最佳选择。总体而言,该平台上具有 4 个 vCPU 的虚拟机应该能够匹配您之前的物理平台,假设 Xeon 5620 的时钟频率比您来自的 Core 2 Quad 快约 30%,但实际上是否如此取决于底层虚拟机管理程序、主机系统设置以及托管在同一虚拟机管理程序上的其他虚拟机的争用程度。

您通常不能信任虚拟机内的性能计数器,或者至少不能相信它们会告诉您所有信息。您确实需要从虚拟机管理程序的角度来了解性能,以便判断您的虚拟机是否真的达到了系统上实际 CPU 容量的 100%。

相关内容