首先,我不是系统管理员,只是一个因服务器性能不佳而感到沮丧的程序员……
我们目前正在运行虚拟机(我相信主机是 Win Server 2008),它搭载较新的 E5-2650 CPU、24 GB RAM,至少根据系统属性对话框是这样的。我不能肯定地说 SQL VM 有哪些资源,因为我只能访问它而不能访问主机。抱歉,我不太了解这方面的情况。我也不想让当前的系统管理员觉得我问了一堆不必要的问题,这让他很不爽。我只是想提出一个升级的理由,如果这有帮助的话……
我们正在运行 SQL Server 2008 r2,我们所有的客户端都是通过运行 2008 的终端服务器运行 Win 7 或 RC。我们的应用程序非常依赖数据库,特别是考虑到我们组织的规模时。
所以我的主要问题是,我们目前正在运行 Windows Server 2003 r2 sp2,升级到 Server 2008 r2(或更新版本)是否可以显着提高性能?我读到过由于其新功能,它可以提高其他地方的性能,但我还没有看到任何人对 DB 性能发表评论。
如果是这样,有什么证据可以用来支持我的论点吗?
此外,由于我们运行的是 SQL 2008 r2,而我们的客户端是 Win 7,那么我们的客户端应该安装哪些 DB 驱动程序?服务器应该安装什么?
如果我需要详细说明任何内容,请发表评论。
答案1
可能重复: 如何对数据库进行负载测试和容量规划?
您需要与系统管理员团队合作,测量并确定当前的瓶颈。如果他很难相处,我很同情他,这很糟糕;您需要弄清楚如何最好地与他合作。最好对问题进行详尽的描述,并提供可重现的测试用例,而不是“它很慢!”此外,使用 Perfmon 和 SQL 探查器;从您告诉我们的一点点信息来看,问题可能是索引错误,然后就轮到您了。一旦您知道 SQL 认为什么很慢,您就可以找出是代码、数据库布局、缓慢的 IO、CPU 拥堵等问题。
一旦您知道了瓶颈是什么,您就可以看看 Win2k8 R2 是否有帮助。
提示:可能不是。
额外的想法:为什么您关注的是 2008 R2 而不是 2012 R2?
答案2
好的,基础知识:
除非您谈论 32 位 2003 R2,否则差异将会很小。
数据库的第一条规则是 IO 决定数据库的生死,普通的虚拟机完全不适合处理繁重的 IO 工作。这并不是因为虚拟机很差劲,而是因为虚拟机设置是一种通用设置。这就像租一辆标准汽车并试图参加比赛一样 - SQL 数据库服务通常是围绕磁盘子系统设计的。
很可能您的磁盘子系统完全不够大 - 尝试获取它的延迟(ms/请求),如果延迟高于低个位数,则会影响查询性能。有时这没问题(如果您执行报告查询,则基本上会使其过载),但对于任何事务性操作...我敢打赌,您的日志也位于相同的磁盘上。因为在虚拟机中,您无法真正控制存储内容的位置。
操作系统会产生影响,但与这一事实相比,影响很小。现在我不会在 2003 服务器上运行任何东西,我会解雇任何升级到 2008 R2 而不是 2012 R2 的管理员。但大公司可能会有政策阻碍这一点 ;)