寫了幾段測試程式,測試一下mysql的效能.簡單說下環境,tomcat下使用連線池連線的mysql,測試方式以下3種:
1:每次從連線池獲得乙個連線執行乙個固定的insert語句2000次:
insert into test (testcol,testcol1,testcol2,testcol3,testcol4,testcol5,testcol6,testcol7)
values('aaaaaaa','aaaaaaa','aaaaaaa','aaaaaaa','aaaaaaa','aaaaaaa','aaaaaaa','aaaaaaa')
每次執行後連線關閉.
2:每次從連線池獲得乙個連線執行乙個預編譯的insert語句2000次:
insert into test (testcol,testcol1,testcol2,testcol3,testcol4,testcol5,testcol6,testcol7)
values(?,?,?,?,?,?,?,?)
每次執行後連線關閉.
3:從連線池中取乙個連線,執行乙個預編譯的insert語句2000次:
insert into test (testcol,testcol1,testcol2,testcol3,testcol4,testcol5,testcol6,testcol7)
values(?,?,?,?,?,?,?,?)
2000條語句執行完畢,關閉該連線
4:從連線池中獲得乙個連線,設定預編譯語句:
insert into test (testcol,testcol1,testcol2,testcol3,testcol4,testcol5,testcol6,testcol7)
values(?,?,?,?,?,?,?,?)
2000次迴圈,每次設定完引數後執行addbatch.最後執行excutebatch();
測試結果如下: 1
2345
6789
10平均值
方式1:
4439
6777
4727
6468
6258
9719
10270
4525
7763
8736
6968.2
方式2:
5448
5214
4794
4905
6212
6924
6131
7287
6879
7128
6092.2
方式3:
4906
6296
5835
4592
4686
7431
4664
5777
8029
4572
5678.8
方式4:
4830
5895
5685
5126
5586
4932
5250
5862
5976
5589
5473.1
可以看出來,直接傳遞sql語句的方式最慢達到了6968毫秒.
第3\4種方式差別不太多.主要是我的程式和資料庫在同一臺機器上.excuteupdate()每執行一次資料就會在網路上往返傳輸一次資料,執行2000次就會往返2000次.但使用了excutebatch(),資料在網路上只往返了1次.所以當多次執行同乙個sql時最適合使用excutebatch()方式.例如,伺服器向資料庫中寫日誌,可以採用積累一定的日誌資訊後,定時採用excutebatch()傳送到伺服器
操作JDBC的方式有幾種
1.jdbctemplate spring框架自帶 使用方式 1.通過在xml檔案中引用 第乙個datasource指jdbctemplate的屬性,第二個是引用的c3p0的配置 在需要的地方使用 或注入 即可。使用的方式有兩種一種是通過注入的方式,另外一種是獲取bean物件 bean物件的方式 注...
jdbc操作Mysql相關事項
編碼問題徹底解決 第一建立表的時候能建立成功,但是插入中文資料不能插入成功,那麼在字段型別後面新增character set utf8 collate utf8 general ci create database mengmengda create table user id int userna...
JDBC操作MySQL進行批處理
1 批處理 概念 一次向資料庫傳送多條sql語句,降低與資料庫的互動次數,提公升資料庫層執行效率。2 建表 create database day16 create table user id int primary key,name varchar 20 3 測試 我已經把資料庫連線 封裝好了,在...