SQLServer中update操作如何优化



   前几日做了一个测试,目的要得出一个结论,单纯的insert、update、select在百万数据量时的表现。但是测试过程中发现修改操作的表现十分异常,特向各位请教。下面简单描述一下我的环境与方法。

  程序引入c3p0连接池,然后直接用jsp取连接操作,没有使用spring、hibernate等框架,数据库sqlserver2008,web服务器tomcat 6.0.26,数据库与web服务器各一台机器。

  数据库连接池最大200个连接,tomcat最大线程数1000。

  表结构,id为主键

 

并有唯一索引

CREATE UNIQUE NONCLUSTERED INDEX [IX-MEMBER] ON [dbo].[members]
(
 [name] ASC,
 [id_card] ASC
)

  测试脚本,为避免各虚拟用户修改同一条数据,事先缓存1万条数据,然后2000用户顺序来取数据,去做更新。

  测试方法,每虚拟用户每5秒执行一次请求,最高2000用户。每秒上两个用户。此时160万左右的数据量,结论让人。。。,上图吧


图一:虚拟用户数 


图二:每秒响应点击数



 
 图三:事务的执行时间

   每秒响应20次左右,事务响应时间也是一路飙升。没有分析出缘由。

  后来同样的表结构,和数据量,导入orcale数据库,同样的测试方法,结果如下,继续上图


图四:orcale测试时,虚拟用户数
 

图五:orcale测试时,每秒响应的点击数(天啊600+,但后面出现了连接数过多错误,暂且不管它)
 

 

图六:orcale测试时,事务响应时间,一直在0秒徘徊。

  得到这个结果,小弟无语了,怎么可能?还望各路大侠给个分析思路!如有类似测试分享,不胜感激!!!

猜你喜欢

转载自bd-cool.iteye.com/blog/1182252