• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        JDBC學習筆記-jdbc優化性能

        JDBC學習筆記-jdbc優化性能

        更新時間:2022-04-30 文章作者:未知 信息來源:網絡 閱讀次數:

        jdbc程序的性能主要由兩個因素決定,一是數據庫本身的性質,另一個是與數據庫相對獨立的jdbc應用程序接口(api)的使用.這里說的是如何正確使用jdbc編程接口,以獲得更好的性能.
        jdbc主要優化有:
        1.選擇正確的jdbc驅動程序
        2.Connention的優化 使用連接池來管理Connection對象
        3.Statement的優化 使用批量更新等
        4.Result的優化 正確的從數據庫中get數據等

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

        (2)優化Connection對象:
        1.設置適當的參數 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);
        對象可以通過設置setDefaultRowPrefetch(int) 和 setDefaultBatchValue(int) 兩個參數類優化連接

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

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

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

        4.適當的選擇事務的隔離級別 TRANSACTION_READ_UNCOMMITED 性能最高
        TRANSACTION_READ_COMMITED 快
        TRANSACTION_REFEATABLE_READ 中等
        RANSACTION_SERIALIZABLE 慢

        (3)Statement 優化
        jdbc3個接口用來處理sql的執行,是Statement PreparedStatement CallableStatement
        提供適當的Statement接口
        批量執行sql
        從數據庫批量獲取數據
        PreparedStatement 比Statement性能要好 主要體現在一個sql語句多次重復執行的情況
        PreparedStatemnt只編譯解析一次而Statement每次編譯一次.

        批量修改數據庫
        Statement 提供了方法addBatch(String)和executeBatch()
        調用方法為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();

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

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 免费无码一区二区| 一级女人18片毛片免费视频| 蜜桃视频在线观看免费视频网站WWW| 亚洲а∨天堂久久精品| 综合偷自拍亚洲乱中文字幕| 国产jizzjizz视频全部免费| 国产亚洲蜜芽精品久久| 亚洲精品线路一在线观看| 2022免费国产精品福利在线| 亚洲精品成人片在线观看精品字幕 | 免费夜色污私人影院在线观看| 天天综合亚洲色在线精品| 亚洲精品国精品久久99热| 中文字幕成人免费高清在线视频| 亚洲熟女少妇一区二区| 亚洲视频免费在线观看| 亚洲日韩国产精品无码av| 天天天欲色欲色WWW免费| 国产亚洲精品美女久久久久 | 久久精品中文字幕免费| 亚洲的天堂av无码| 日本一道一区二区免费看 | 麻豆视频免费播放| 国产亚洲精品成人久久网站| 综合亚洲伊人午夜网 | 很黄很色很刺激的视频免费| 亚洲AⅤ男人的天堂在线观看| 亚洲精品99久久久久中文字幕| a级毛片免费在线观看| 亚洲一区二区久久| 亚洲成AⅤ人影院在线观看| 日韩精品无码免费专区午夜| 亚洲精品成人久久| 国产精品自在自线免费观看| a级成人免费毛片完整版| 亚洲人成小说网站色| 国产中文在线亚洲精品官网| 84pao强力永久免费高清| 国产亚洲精品美女久久久久 | 国产精品亚洲一区二区三区久久| 亚洲欭美日韩颜射在线二|