为对比起见,SQL Server 2008 和 SQL Server 2005的系统配置是一样的,以下就是系统配置:

 

  系统配置:

      Intel Core2 at 2.13 GHz

  2 GB RAM

  Windows XP Professional SP2

  2 physical hard drives

  1 disk controller

  Disk 1: OS, SQL Server, Logs

  Disk 2: Data

  每次测试都要重新启动系统并所需要的软件,并只运行所需的数据库引擎

  测试方案

  Click for larger p_w_picpath

  对比SQL Server 2008 和SQL Server 2005的性能

  每一张表在ID栏里有一个聚簇主键。

  非聚簇索引:

  厂商:厂商名称的非唯一索引

  卡:安全代码、卡编号的唯一索引

  卡;安全代码、卡编号的非唯一索引

  采购:卡ID的非唯一索引

  采购;厂商ID的非唯一索引

测试细节:

  测试脚本模拟OLTP工作任务,共有三张表,包括厂商、卡和采购。

  测试概要

  测试利用了SQL脚本的多个同时调用,调用循环中的存储过程来首先加载和查询数据。

  Gory细节

  本测试利用简单的框架I,称为Hummer。它利用a .bat文件运行一些初始安装脚本,然后启动n个同时过程,每个过程运行相同的脚本。这是模拟多个用户争用数据库资源。 每个脚本包括对DELAY的一个偶然调用。这允许多个过程共享数据库资源,也很好地模拟了实际的OLTP工作任务。

  总共有5项具有不同参数的测试。下图显示了所有Test Run 2的细节,并以之作为示例。

  .bat script执行以下步骤:

  放弃并重新建立数据库

  创建表和索引

  创建存储过程

  设置所有的控制参数

  执行DBCC FREESYSTEMCACHE(’ALL’)

  执行DBCC DROPC及LEANBUFFERS

  启动16过程,每个过程运行主要的测试脚本

  CREATE DATABASE脚本创建数据文件,该文件的初始大小是400MB,Log文件的初始大小是20MB,每个文件按规定增长10%。经过Test Run 1之后,Data文件并不增长,但是Log文件增长到48MB(2008)和53MB(2005)。

  如系统细节中所示,OS、SQL Server和 Log都在盘C上,而Data文件在盘D上。

  主要测试脚本完成以下步骤:

  启动延迟1秒(以允许所有过程的启动)

  循环200000次

  读取控制参数(SP调用)。如果在测试中完成读取控制参数,就停止读取控制参数(这允许用户在测试运行中改变参数。)

  每300次循环,延迟1秒

  为初始20000循环创建一个厂商记录(SP调用)

  为初始20000循环创建卡记录(SP调用)

  为初始40000循环创建采购记录(SP调用)

每10 个循环

  10次有1次:插入采购记录

  10次有1次:更新厂商记录

  10次有8次:读卡记录

  循环结束

  重要的是要理解每个过程都要插入20000个厂商记录、20000个记录。所以,插入记录的总数(初始设置)是320000、 320000和 640000。Test Run 2的循环完成以下工作:

  初始20000循环:创建厂商记录、卡记录和采购记录,进行插入、更新或读取

  下一个20000循环:创建采购记录,进行插入、更新或读取

  最后160000循环:进行插入、更新或读取

  经过初始40000循环后,所有的插入、更新或读取操作都进行了随机记录。

  测试参数

  对比SQL Server 2008 和SQL Server 2005的性能

  Results

  对比SQL Server 2008 和SQL Server 2005的性能

  随附的结果文件包括每个过程的输出和每次运行的性能图,一张是在测试开始的时候,一张是在测试结束后。从性能图中可以看到,在相同的硬件上运行相同的工作任务时,SQL Server 2008在每次测试时都明显占用了更多的CPU。

  结论

  这些测试表明,如果所测试的工作任务并不利用任何特别的SQL Server 2008特性,SQL Server 2008并不比SQL Server 2005更快或更慢。而SQL Server 2005比SQL Server 2000的性能改进更多。尽管如此,这并不意味着用户不应该迁移到SQL Server 2008,数据库管理员需要在进行系统升级前要做些改变,以避免不必要的成本。