【发布时间】:2012-02-15 08:50:53
【问题描述】:
我有一个执行 SQL 脚本包,其中包含插入大约 15 万条记录的脚本。
这里的问题是当我在虚拟机中执行包时大约需要 25 分钟,而在物理机中执行相同的包需要 2 分钟
问题 1?为什么要花那么多时间在 VM 中加载相同的数据。 问题2?如何解决这个性能问题。
物理机配置有 4GB Ram 和 250GB HD + Windows server 2008 R2 + SQL server 2008 R2 Standard Edition。 虚拟机具有相同的配置
更新:问题出在 VM 中的 SQL Server。
问题 1?为什么要花这么多时间在 VM 中运行相同的脚本。
问题 2?如何解决这个性能问题。
物理机和虚拟机中的数据库架构是相同的。其他数据库也一样。两台机器上都没有为该表应用索引。数据类型相同。我所说的硬盘具有相同的配置。
两台机器上都没有做 RAID。
物理机具有 2.67GHz RAM 四核,而虚拟机具有 2.00GHz RAM 四核
SQL PM 版本:
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 版权所有 (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1 )
SQL PM 版本:
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 版权所有 (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1 )(管理程序)
我执行的脚本两者的执行计划是一样的,计划没有区别。
供应商是 HP ML350 机器。
在同一物理服务器上几乎有 20 台虚拟机,其中有 7 台服务器处于活动状态。
【问题讨论】:
-
这是唯一包所做的事情——一个执行sql任务吗?数据库结构是否相同?在两者之间运行模式比较。两者之间的数据量如何比较。楼主长啥样?两个系统上的磁盘 io 子系统是什么样的?大小无关紧要,iops 为王
-
另外,检查慢速系统上的统计信息、碎片等。也许它严重分散。关于 SSIS 在 VM 上执行缓慢还是 VM 访问磁盘的快速测试(假设程序包仅执行执行 SQL 任务)是在 SSMS/sqlcmd/SQL Agent/.NET 中运行该任务并查看是否时间是可比的。
-
我在 SQL Server 中执行了相同的 SQL 脚本,花费了相同的时间。现在的问题是 SQL 脚本在 VM 中需要时间。可能是什么原因。
-
就像 billinkc 说的,物理机器上的数据库和虚拟机是一样的吗?它们是否具有相同的结构、相同的数据类型和相同的索引?两台机器的硬盘是一样的吗?一个或另一个是否有 RAID 或 SSD?
-
物理服务器上正在运行多少其他虚拟机?可能有太多虚拟机在争夺 CPU 周期或网络带宽。
标签: sql sql-server performance sql-server-2008 ssis