• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

大考验:测试SQL Server各个版本的性能

发布: 2007-6-21 12:06 | 作者:   | 来源:   | 查看: 17次 | 进入软件测试论坛讨论

领测软件测试网

   


  今天闲得无聊,做了一个SQL Server的各个版本的性能测试, 大家都知道SQL Server有六个版本(企业版,标准版,个人版,开发版,Desktop Engine,SQL Server CE,企业评估版) . 我经常头晕那个适合我开发使用 ,今天终于决定好好的拷问一下微软! 测试SQL主要考察数据库服务器的写操作,读操作,索引操作,各位如果有兴趣,顺便在你们的机器上跑跑这个脚本,把结果贴出来?
  
  我机器的配置(公司用机)
  -- 赛扬4 1.7
  -- 256M内存
  -- 华硕845D主板
  -- NVida GeForce2 MX/MX 400 32M显存
  -- Maxtor 6E040L0 40G,7200转
  -- 英文Windows 2000 Professional with SP4
  
  -- 测试用的SQL (注意SQL里面的一个@iMax的变量)
  -----------------------------------------------
  f exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AreaBak]')
  and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  
  truncate table [dbo].[AreaBak]
  go
  
  --drop table [dbo].[AreaBak]
  if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AreaBak]')
  and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  begin
  CREATE TABLE [dbo].[AreaBak] (
  [AreaCode] bigint not null,
  [AreaName] [varchar] (16) COLLATE Chinese_PRC_CI_AS NOT NULL ,
  [LocaName] [varchar] (32) COLLATE Chinese_PRC_CI_AS NOT NULL
  ) ON [PRIMARY]
  
  ALTER TABLE [dbo].[AreaBak] WITH NOCHECK ADD
  CONSTRAINT [PK_AreaBak] PRIMARY KEY CLUSTERED
  (
  [AreaCode]
  ) ON [PRIMARY]
  
  end
  go
  
  declare @iMax bigint
  --<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  set @iMax =1000 --<< 修改这个 iMax(1000,10000,20000,100000) 来对比测试结果 <<<<
  --<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  
  declare @i bigint
  declare @tbegin datetime
  declare @tend datetime
  declare @fcout float
  
  set @tbegin = getdate()
  -- 测试写性能
  
  set @i =1
  WHILE @i<=@iMax
  BEGIN
  insert into AreaBak values(@i,
  rtrim(cast(@i as char(12)))+'XX',
  rtrim(cast(@i as char(12)))+'XXXX')
  set @i=@i+1
  END
  
  -- 测试索引性能
  set @i = @iMax
  WHILE @i >= (@iMax -50)
  BEGIN
  select * from AreaBak where AreaCode = @i
  set @i=@i-1
  END
  
  -- 测试大量数据读取性能
  select * from AreaBak
  set @tend = getdate()
  set @fcout = convert(float,(@tend -@tbegin)) --24*60*60换算秒
  set @fcout =@fcout*24.0*60.0*60.0
  print @fcout
  -----------------------------------------------
  -- 中文MSDE(without SP) 测试结果(秒)
  -----------------------------------------------
  -- iMax = 1000 : 0.873333 | 0.88 | 0.87
  -- iMax = 10000 : 8.45333 | 8.75333 | 8.32
  -- iMax = 100000 : 90.9533 | 82.4467 | 83.59
  -----------------------------------------------
  -- 英文MSDE(with SP3) 测试结果(秒)
  -----------------------------------------------
  -- iMax = 1000 : 0.93|0.913333| 0.93
  -- iMax = 10000 : 8.5|8.74333 |8.38333
  -- iMax = 20000 : 17.0733 |16.4633|17.8067
  -- iMax = 100000 : 82.9 | 82.2167 | 86.3533
  -----------------------------------------------
  
  -----------------------------------------------
  -- 英文个人版(without SP) 测试结果(秒)
  -----------------------------------------------
  -- iMax = 1000 : 0.863333|0.87 |0.87
  -- iMax = 10000 : 8.34333 | 8.25 |8.30333
  -- iMax = 20000 : 16.4633 | 16.5933 |16.6633
  -- iMax = 100000 : 81.27 | 86.9367 | 81.4567
  -----------------------------------------------
  -- 英文个人版(with SP3) 测试结果(秒)
  -----------------------------------------------
  -- iMax = 1000 : 0.913333 | 0.92 | 0.93 | 0.923333 | 0.913333
  -- iMax = 10000 : 8.46| 8.39333 |8.87333 | 8.25333 | 8.29 |
  -- iMax = 20000 : 16.9767 | 16.1933 | 16.3433 |16.2433 | 16.2867
  -- iMax = 100000 : 80.4867 | 81.8767 |80.9167 | 82.09 | 81.91
  
  -- iMax = 1000 : 0.673333/0.79/0.65(Memory被调整限制为102~255M)
  -- iMax = 10000 : 8.29333/8.21/8.16333(Memory被调整限制为102~255M)
  -- iMax = 100000 : 80.2267/ 80.1033 (Memory被调整限制为102~255M)
  
  -- iMax = 100000 : 79.0433/82.24(Memory被调整限制为0~5M)
  -----------------------------------------
  -- 英文开发版(without SP) 测试结果(秒)
  -----------------------------------------------
  -- iMax = 1000 : 0.863333| 0.86 | 0.85
  -- iMax = 10000 : 8.14 |8.60333 | 8.26333
  -- iMax = 20000 : 17.1433 | 17.0567 | 16.3333
  -- iMax = 100000 : 86.3833 | 85.7833 |86.5333
  -----------------------------------------------
  -- 英文开发版(with SP3) 测试结果(秒)
  -----------------------------------------------
  -- iMax = 1000 : 0.92|0.92| 0.923333
  -- iMax = 10000 : 8.17333| 8.39333| 8.28
  -- iMax = 20000 : 16.2733| 17.3033| 16.2333
  -- iMax = 100000 : 86.9967 | 85.8333 | 85.2233
  -----------------------------------------------
  
  因为操作系统的原因没有测试标准版和企业版的SQL Server , 如果你只是自己开发SQL Server的应用 在自己机器上大可不必安装企业版 开发版(如果你不是必须用到那些特殊的功能的话) . 事实上以上的测试结果表明 : 个人版with sp3 的单机(符合我们的开发环境)综合性能是最好.
  
  这个测试没有进行并发连接处理性能的考察 , 据微软官方称 :当并发执行 5 个以上的批处理时,SQL Server 2000 个人版和 SQL Server 2000 Desktop Engine 中的并发工作负荷调控器将限制性能。
  
  当使用 SQL Server 2000 Desktop Engine 或 Microsoft 数据引擎 (MSDE) 1.0 时,数据库的大小不能超过 2GB。(我个人经常有数据库大于2GB,而且Desktop Engine的安装不方便,还要加多一个图形化管理工具的安装.
  
  标准版和企业版都需要Windows2000 Server版以上才可以安装.
  微软的Memory(RAM)建议:
  Enterprise Edition 64 MB of minimum, 128 MB recommended
  Standard Edition 64 MB of minimum
  Personal Edition 64 MB on Windows 2000, 32 MB on all other operating systems (对内存的消耗是比较小的)
  Developer Edition 64 MB of minimum
  Desktop Engine 64 MB minimum on Windows 2000, 32 MB on all other operating systems
  
  最终结论 : 我自己在开发中决定使用 SQL Server 个人版 +SP3 ,发布的话就需要考虑客户的规模和财力了。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网