日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開(kāi)發(fā)教程 > 詳細(xì)頁(yè)面

JDBC學(xué)習(xí)筆記-jdbc優(yōu)化性能

JDBC學(xué)習(xí)筆記-jdbc優(yōu)化性能

更新時(shí)間:2022-04-30 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

jdbc程序的性能主要由兩個(gè)因素決定,一是數(shù)據(jù)庫(kù)本身的性質(zhì),另一個(gè)是與數(shù)據(jù)庫(kù)相對(duì)獨(dú)立的jdbc應(yīng)用程序接口(api)的使用.這里說(shuō)的是如何正確使用jdbc編程接口,以獲得更好的性能.
jdbc主要優(yōu)化有:
1.選擇正確的jdbc驅(qū)動(dòng)程序
2.Connention的優(yōu)化 使用連接池來(lái)管理Connection對(duì)象
3.Statement的優(yōu)化 使用批量更新等
4.Result的優(yōu)化 正確的從數(shù)據(jù)庫(kù)中g(shù)et數(shù)據(jù)等

(1)選擇正確的jdbc驅(qū)動(dòng)程序:
1 jdbc-odbc 橋
2 本地api-部分 java驅(qū)動(dòng)
3 jdbc網(wǎng)路協(xié)議-純java驅(qū)動(dòng)
4 jdbc本地協(xié)議
最好選擇 jdbc網(wǎng)路協(xié)議-純java驅(qū)動(dòng) 效率比較高 但需要第三方軟件的支持 比如corba weblogic屬于這種類型

(2)優(yōu)化Connection對(duì)象:
1.設(shè)置適當(dāng)?shù)膮?shù) DriverManager.getConnection(String url,Properties props);
例如: Properties props=new Properties();
props.put("user","wuwei");
props.put("password","wuwei");
props.put("defaultRowPrefectch","30");
props.put("dufaultBatchValue","5");
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@hostsString",props);
對(duì)象可以通過(guò)設(shè)置setDefaultRowPrefetch(int) 和 setDefaultBatchValue(int) 兩個(gè)參數(shù)類優(yōu)化連接

2.使用連接池 可以自己寫一個(gè)連接池 這樣程序的靈活性強(qiáng),便于移植.
apache項(xiàng)目開(kāi)發(fā)了一套非常通用而表現(xiàn)非常穩(wěn)定的對(duì)象池 http://jakarta.apache.org/commons/pool.htm
設(shè)計(jì)了自己的連接池后 在客戶端調(diào)用建立對(duì)象
public Object makeObject() throws Exception{
Class.forName("oracle.jdbc.driver.OracalDriver");
return DriverManager.getConnection("url","username","password");
}
銷毀對(duì)象時(shí)用
public void destroyObject(Object obj) throws Exception{
((Connection)obj.close());
}
注意幾點(diǎn) 對(duì)象池里有沒(méi)有回收機(jī)制,對(duì)象池里有機(jī)有容量限制,對(duì)象池里有多少個(gè)閑置對(duì)象(可以釋放)

3.控制事務(wù)的提交 最好手動(dòng)提交事務(wù),不但可以可以保證數(shù)據(jù)原子性,而且對(duì)新能提高留下余地.
try{
connection.setAutoCommint(false);
// 代碼 用PreparedStatement 性能比Statementh好.

connection.commit();
connection.setAutoCommit(true);
}
catch(SQLException e){
}
finally{
//代碼
if(connection!=null){
connection.close();
}
}

4.適當(dāng)?shù)倪x擇事務(wù)的隔離級(jí)別 TRANSACTION_READ_UNCOMMITED 性能最高
TRANSACTION_READ_COMMITED 快
TRANSACTION_REFEATABLE_READ 中等
RANSACTION_SERIALIZABLE 慢

(3)Statement 優(yōu)化
jdbc3個(gè)接口用來(lái)處理sql的執(zhí)行,是Statement PreparedStatement CallableStatement
提供適當(dāng)?shù)腟tatement接口
批量執(zhí)行sql
從數(shù)據(jù)庫(kù)批量獲取數(shù)據(jù)
PreparedStatement 比Statement性能要好 主要體現(xiàn)在一個(gè)sql語(yǔ)句多次重復(fù)執(zhí)行的情況
PreparedStatemnt只編譯解析一次而Statement每次編譯一次.

批量修改數(shù)據(jù)庫(kù)
Statement 提供了方法addBatch(String)和executeBatch()
調(diào)用方法為stmt.addBatch("isnert....."); stmt.addBatch("update.....")
stmt.executeBatch();
也可以用PreparedStatement從而更好的提高性能.
pstmt=conn.preparedStatement("insert into test_table(......) values(....?)");
pstmt.setString(1,"aaa");
pstmt.addBatch();
pstmt.setString(1,"bbb");
pstmt.addBatch();
.....
pstmt.executeBatch();

批量地從數(shù)據(jù)庫(kù)中取數(shù)據(jù).
通過(guò)setFetchSize()和getFectchSize()方法來(lái)設(shè)定和查看這個(gè)參數(shù).這個(gè)參數(shù)對(duì)體統(tǒng)的性能影響比較大.
這個(gè)參數(shù)太小會(huì)嚴(yán)重地降低程序地性能.
Connection Statement ResultSet都有這個(gè)參數(shù),他們對(duì)性能地影響順序是:
ResultSet---------Statement---------Connection
(4)優(yōu)化ResultSet.
體現(xiàn)在以下幾個(gè)方面
批量讀取數(shù)據(jù).合理設(shè)置ResultSet的getFetchSize()和setFetchSize()方法中的參數(shù)
使用正確的get和set方法
使用整數(shù)而不是字段名作為參數(shù)性能比較高,
例如 setInt(1,100);
setString(2,"aaaa");
比 setInt("id","100");
setString("name","aaaa");
性能好
設(shè)置適當(dāng)?shù)臐L動(dòng)方向.有3個(gè)方向FETCH_FORWORD,FETCH_REVERSE FETCH_UNKNOWN
單向滾動(dòng)性能比較高.
其他方面的性能優(yōu)化
及時(shí)顯示的關(guān)閉Connection Statement ResultSet
其中Connection可以用Connetion Pool處理.
使用數(shù)據(jù)庫(kù)系統(tǒng)的強(qiáng)大查詢功能去組織數(shù)據(jù).這樣程序運(yùn)行是和數(shù)據(jù)庫(kù)服務(wù)的交互次數(shù)少,數(shù)據(jù)庫(kù)返回給
程序的記錄條數(shù)少的多,所以性能有很大的提高.

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

主站蜘蛛池模板: 日韩一区二区三区四区区区 | 欧美成人另类bbw | 最新精品国产 | 国产福利视频一区 | 在线网站你懂得 | 亚洲精品美女国产一区 | 国内自拍视频一区二区三区 | 日本一级α一片免费视频 | 国产一区日韩二区欧美三 | 欧美精品伊人久久 | 久久天天躁日日躁狠狠躁 | 久久99国产这里有精品视 | 欧美黑人巨大日本人又爽又色 | 婷婷色亚洲 | 久久99热久久精品在线6 | 四虎一区二区三区 | 成人免费视频在线播放 | 日韩亚洲在线观看 | 天天摸天天澡天天碰天天弄 | 亚洲第一网色综合久久 | 女bbbbxxx孕妇| 亚洲欧美成人综合在线 | 噜噜色.com | 免费高清在线视频色yeye | 美女午夜色视频在线观看 | www.久久精品视频 | 国内91视频 | 欧美韩国日本一区 | 日日摸夜夜爽人人添 | 中文字幕在线观看一区 | 日日夜夜狠狠 | 天天摸天天澡天天碰天天弄 | 日日摸夜夜 | 久99久爱精品免费观看视频 | 日本午夜在线观看免费视频 | 天天草人人草 | 国产97色在线中文 | 嫩草影院永久入口在线观看 | 日本人与黑人做爰巨大和娇小 | 天天摸日日添狠狠添婷婷 | 久久青青成人亚洲精品 |