在一台机器上执行生成的数据库脚本非常快,而在第二台机器上执行非常慢



我正在执行一些脚本,这将创建一个数据库与一些表,SP和数据。在我的一台电脑(Windows 7, SQL Server R2)上,需要33秒完成,在另一台电脑(Server 2008, SQL Server R2)上,需要将近20分钟。有人能告诉我有什么问题吗?

假设脚本和插入的数据100%相同,那么您可能应该注意可能导致问题的环境变化。这些是我要检查的东西:

  1. 在您部署的prod服务器上是否存在CPU或内存差异?如果它有糟糕的硬件,那么它可能会导致问题(例如,如果你没有足够的CPU周期,那么Windows Azure或EC2上的廉价VM可能会比你的开发计算机获得最差的性能)。整体性能是否良好?
  2. 可能在您正在部署的prod服务器中存在I/O问题。尝试使用sqlio对服务器和开发机器进行基准测试(阅读此处获取说明:http://www.mssqltips.com/sqlservertip/2127/benchmarking-sql-server-io-with-sqlio/)在处理数据库时,I/O是非常重要的事情。顺便问一下,你的DB有多大?我们谈论的是多少数据?
  3. 如果不是硬件问题(1或2),那么您可能会寻找配置问题。有许多可能的配置问题,但其中一些比其他更容易出现:

    3.1确保您的数据和日志文件在分开的卷中,并且您使用的RAID级别适合您正在做的事情。RAID 10可能是最好的,但价格昂贵。但是,RAID 5会导致写性能下降。

    3.2如果你是第一次创建数据库,那么你可能会分配数据文件和日志文件。根据你正在创建的文件的大小,这可能是非常繁重的IO操作,除非你在组策略中授予sql server名为"执行卷维护任务的权限,这不会导致整个大小

    为0。确保在prod和dev机器中使用相同的恢复模型。如果您使用"完整"或"批量日志"恢复模型,并且插入大量数据,则日志文件的大小将会增长。
  4. 请确保预先分配了大部分大小,并且不会导致多次小的自动增长,这可能会影响性能。

如果以上都没有帮助,请尝试提供更多信息,包括目标服务器的完整硬件规格,存储,LUN的配置以及您从默认sql server安装配置中所做的每一次更改。

祝你好运。

最新更新