mybatis vs hibernate

来源:互联网 发布:单片机显示屏出现黑边 编辑:程序博客网 时间:2024/05/16 19:39

Hibernate的延迟加载技术使用到了OpenSessionInViewFilter,每个客户端请求过来都会开一个session,这样在高并发的情况下是否会因为数据库连接拖慢处理速度呢?实地用mybatis延迟加载和hibernate延迟加载做了一下测试:


SpringMVC+Mybatis+mybatis 启用cache

ab -c 100 -n 1000 http://localhost:8080/springmvc/test/test

This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/


Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests




Server Software:        Apache-Coyote/1.1
Server Hostname:        localhost
Server Port:            8080


Document Path:          /resdn/test/test
Document Length:        915 bytes


Concurrency Level:      100
Time taken for tests:   3.562 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      1183000 bytes
HTML transferred:       915000 bytes
Requests per second:    280.73 [#/sec] (mean)
Time per request:       356.220 [ms] (mean)
Time per request:       3.562 [ms] (mean, across all concurrent requests)
Transfer rate:          324.31 [Kbytes/sec] received


Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.7      0      15
Processing:     3  344 749.9     74    3545
Waiting:        3  318 734.4     63    3545
Total:          4  345 749.9     75    3545


Percentage of the requests served within a certain time (ms)
  50%     75
  66%    120
  75%    194
  80%    308
  90%   1588
  95%   2365
  98%   3407
  99%   3488

 100%   3545 (longest request)

----------------------------------------------------------------------------------------------------------------------------------------------------------------------


如果使用hibernate +struts2+ehcache+OpenSessionInViewFilter这样的方案,无论如何每秒并发也上不去30个.


ab -c 100 -n 1000 http://localhost:8080/ssh/page
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/


Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests




Server Software:        Apache-Coyote/1.1
Server Hostname:        localhost
Server Port:            8080


Document Path:          /ssh/page
Document Length:        520585 bytes


Concurrency Level:      100
Time taken for tests:   36.948 seconds
Complete requests:      1000
Failed requests:        947
   (Connect: 0, Receive: 0, Length: 947, Exceptions: 0)
Write errors:           0
Total transferred:      520806359 bytes
HTML transferred:       520586359 bytes
Requests per second:    27.06 [#/sec] (mean)
Time per request:       3694.811 [ms] (mean)
Time per request:       36.948 [ms] (mean, across all concurrent requests)
Transfer rate:          13765.25 [Kbytes/sec] received


Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.8      0      54
Processing:    53 3552 4694.9   1564   31344
Waiting:       25 3462 4682.0   1461   31323
Total:         54 3552 4695.0   1564   31344


Percentage of the requests served within a certain time (ms)
  50%   1564
  66%   3649
  75%   5358
  80%   6429
  90%  10016
  95%  13438
  98%  18506
  99%  21403
 100%  31344 (longest request)

----------------------------------------------------------------------------------------------------------------

hibernate真的这么差劲么?会不会是struts2和springmvc的不同导致的性能差异? 更换为springmvc+hibernate+opensessioninviewfilter+ehcache进行测试

ab -c 100 -n 1000 http://localhost:8080/sh/test/test
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/


Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests




Server Software:        Apache-Coyote/1.1
Server Hostname:        localhost
Server Port:            8080


Document Path:          /sh/test/test
Document Length:        275 bytes


Concurrency Level:      100
Time taken for tests:   0.995 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      540000 bytes
HTML transferred:       275000 bytes
Requests per second:    1004.97 [#/sec] (mean)
Time per request:       99.506 [ms] (mean)
Time per request:       0.995 [ms] (mean, across all concurrent requests)
Transfer rate:          529.96 [Kbytes/sec] received


Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   1.1      0      26
Processing:    10   94  80.8     69     605
Waiting:       10   89  81.0     63     603
Total:         11   94  80.8     69     605


Percentage of the requests served within a certain time (ms)
  50%     69
  66%     85
  75%    100
  80%    104
  90%    166
  95%    264
  98%    420
  99%    443
 100%    605 (longest request)

每秒处理1000并发请求有没有?

真的是struts2就这么差劲么?去除struts2的零配置插件后进行测试,速度一下子提升到了每秒处理300并发,弄了半天结论就是Hibernate不慢,是Struts2的零配置插件convention拖慢了性能,对比Struts2和SpringMVC,还是SpringMVC的处理速度一流,比struts2快很多。

0 0