測試單位:
. 每次都建立connection 不使用transaction
. 使用connection pool,不使用transaction
.使用connection pool 使用transaction
主鍵選擇中:
1. 最原始jDBC操作,沒有串連池、事務等
2. 使用串連池
3. 使用串連池+事務
4. 使用proxool+串連池
JDBC
JDBC POOL
JDBC POOL + TRANSACTION
PROXOOL
PROXOOL + CONNECTION POOL
PROXOOOL+POOL+STATEMENT
PROXOOL+POOL+STATEMENT+TRANSACTION
3709.4
201.5
196.9
371.8
306.2
231.3
228.1
結論:
1. 使用串連池效能非常高
2. statement沒有什麼用
3. 事務沒有什麼用。
4.proxool和自己寫串連池效能差不多。自己的好一點。 201.5<>371.8 提高接近50%。
http://news.newhua.com/news1/program_other/2008/123/08123112858FCFK674B395H62JJK7F8.html
1.選擇正確的jdbc驅動程式
2.Connention的最佳化 使用串連池來管理Connection對象
3.Statement的最佳化 使用批次更新等
4.Result的最佳化 正確的從資料庫中get資料等
1. 使用串連池:
測試使用了proxool,效果不明顯,不是一個數量層級的提高。(在單線程中)
2. 使用setAutoCommit(false)
能極大提高效能,特別是大資料量的一次性操作
3. 交易隔離等級
較難通用使用
4. 使用batch
測試發現效果不明顯。沒有一個數量及提高。
基本上來看,在單線程中,開啟了事務效能最高。
在多線程中,使用串連池效能最高。
-------------------------
小結:
1. 在查詢中,使用connectionpool效能最高
2. 在insert等使用transaction效能最高。