亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Java訪問SQL數(shù)據(jù)庫的優(yōu)化探討

        2012-04-29 00:00:00衣李娜

        摘要:訪問數(shù)據(jù)庫是Java應(yīng)用的重要環(huán)節(jié)。通過選擇合適的驅(qū)動程序、采用連接池技術(shù)、優(yōu)化SQL語句以及優(yōu)化數(shù)據(jù)庫可以提高Java訪問SQL數(shù)據(jù)庫的效率。

        關(guān)鍵詞:Java;SQL數(shù)據(jù)庫;優(yōu)化;JDBC

        中圖分類號:TP311.13 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9599 (2012) 21-0000-02

        隨著Java技術(shù)的不斷成熟,Java在電子平臺中的應(yīng)用越來越廣泛。而數(shù)據(jù)庫存儲著大量數(shù)據(jù),訪問數(shù)據(jù)庫的效率非常重要。任何語言想要訪問數(shù)據(jù)庫,必須與數(shù)據(jù)庫建立連接。Java語言通過JDBC訪問數(shù)據(jù)庫,JDBC是用于執(zhí)行SQL語句的Java Api。JDBC可以與數(shù)據(jù)庫建立連接,發(fā)送SQL語句,還可以處理數(shù)據(jù)庫返回的結(jié)果。

        1 選擇合適的驅(qū)動程序

        1.1 JDBC-ODBC網(wǎng)橋驅(qū)動程序

        JDBC-ODBC網(wǎng)橋驅(qū)動程序[1]的特點(diǎn)是將JDBC操作轉(zhuǎn)換成ODBC操作。首先在本地計(jì)算機(jī)上安裝ODBC驅(qū)動程序,然后通過JDBC-ODBC網(wǎng)橋,將Java程序中的JDBC訪問指令轉(zhuǎn)換為ODBC訪問指令,接著通過ODBC驅(qū)動程序完成數(shù)據(jù)庫的訪問。

        1.2 JDBC-Native驅(qū)動程序

        JDBC-Native驅(qū)動程序的特點(diǎn)是將JDBC程序編程接口轉(zhuǎn)換為本地的程序編程接口。JDBC-Native驅(qū)動程序也需要在本地計(jì)算上安裝好特定的驅(qū)動程序。

        1.3 純Java的JDBC中間件驅(qū)動程序

        純Java的JDBC中間件驅(qū)動程序不需要在本地計(jì)算機(jī)上安裝特定的驅(qū)動程序,但是需要安裝數(shù)據(jù)庫管理系統(tǒng)服務(wù)器的中間件,服務(wù)器的中間件可以支持多種數(shù)據(jù)庫的訪問,還可以負(fù)責(zé)數(shù)據(jù)庫的轉(zhuǎn)換。首先將JDBC訪問轉(zhuǎn)換成網(wǎng)絡(luò)標(biāo)準(zhǔn)協(xié)議,接著由服務(wù)器端的中間件轉(zhuǎn)換為專用的訪問指令。

        1.4 純Java的JDBC驅(qū)動程序

        純Java的JDBC中間件驅(qū)動程序也不需要在本地計(jì)算機(jī)上安裝特定的驅(qū)動程序,由JDBC驅(qū)動完成所有的數(shù)據(jù)庫操作。由數(shù)據(jù)庫廠商提供這一類的驅(qū)動程序,將JDBC調(diào)用轉(zhuǎn)換為數(shù)據(jù)專用的訪問指令,效率非常高。

        JDBC-ODBC網(wǎng)橋驅(qū)動程序要求客戶端必須安裝ODBC驅(qū)動程序,不適合基于網(wǎng)絡(luò)的應(yīng)用,而且執(zhí)行效率低,也不適合大數(shù)據(jù)量存取的應(yīng)用;JDBC-Native驅(qū)動程序結(jié)合其他三種驅(qū)動程序的特點(diǎn),可以利用本地代碼庫加速數(shù)據(jù)庫的訪問,而且支持多數(shù)據(jù)庫,與數(shù)據(jù)庫緊密結(jié)合,擴(kuò)展數(shù)據(jù)庫的性能;純Java的JDBC驅(qū)動程序支持多數(shù)據(jù)庫,具有靈活的特點(diǎn);純Java的JDBC驅(qū)動程序和本機(jī)數(shù)據(jù)庫緊密結(jié)合,是可靠有效的驅(qū)動程序,也是企業(yè)的首選軟件。根據(jù)不同情況,采用不同的驅(qū)動程序,可以提高訪問數(shù)據(jù)庫的效率。

        2 采用連接池技術(shù)

        Java訪問數(shù)據(jù)庫的時候,需要同時訪問多個不同的數(shù)據(jù)庫。數(shù)據(jù)庫連接是有限資源,一旦某一程序耗盡數(shù)據(jù)庫資源,那么就會影響其他的應(yīng)用程序。采用連接池技術(shù),使用同一個連接池,訪問不同的數(shù)據(jù)庫,可以有效地節(jié)約資源,提高數(shù)據(jù)庫的訪問效率。

        連接池[2]的核心是連接復(fù)用。建立一個數(shù)據(jù)庫連接池,負(fù)責(zé)數(shù)據(jù)庫連接的分配和管理,允許不同的應(yīng)用程序共享現(xiàn)有的數(shù)據(jù)庫連接,避免數(shù)據(jù)庫的頻繁建立和關(guān)閉,使連接池中的連接得到高校的復(fù)用。更重要的是通過監(jiān)視數(shù)據(jù)庫連接的使用情況,可以及時對系統(tǒng)的開發(fā)和性能進(jìn)行調(diào)整。

        通過使用空閑池可以實(shí)現(xiàn)對連接的管理,也就是按照時間將那些已經(jīng)創(chuàng)建卻沒有分配的連接存放到空閑池[3]中。當(dāng)用戶請求一個連接的時候,系統(tǒng)首先檢查空閑池內(nèi)的空閑連接。如果空閑池內(nèi)存在空閑連接,那么就把創(chuàng)建時間最長的那個連接分配出去;如果空閑池內(nèi)沒有空閑連接,那么就檢查當(dāng)前的連接池是否允許連接,如果允許,就等待一定時間,如果不允許,就重新建立一個連接,如果等待的時間內(nèi)連接池內(nèi)有連接釋放出來,那么就將其分配給用戶,如果等待時間超過預(yù)定時間,還沒有連接釋放出來,那么就重新返回。

        在多層結(jié)構(gòu)的應(yīng)用程序中,使用連接池技術(shù),可以提高系統(tǒng)的性能。

        3 優(yōu)化SQL數(shù)據(jù)庫

        3.1 使用數(shù)據(jù)庫存儲過程

        數(shù)據(jù)庫的存儲過程[4]主要是為了完成一組具有特定功能的SQL語句集[5],經(jīng)過編譯之后就可以存儲到數(shù)據(jù)庫中。當(dāng)創(chuàng)建存儲過程之后,就可以多次調(diào)用,比SQL語句的執(zhí)行快很多。

        3.2 創(chuàng)建PrepareStatemennt對象

        首先,我們來看兩個程序片段:

        Code Fragment 1:

        String updateString=“UPDATE chengji SET grade=25”+“WHERE Sno LIKE ‘9500%’”;

        stmt.exeeuteUpdate(updateString);

        Code Fragment 2:

        PreparedStatement updateSales=con.prepareStatement(“UPDATE Sno SET grade=? WHERE grade LIKE?”);

        updateSales.setInt(1,25);

        updateSales.setStfing(2,“9500%”);

        updateSales.executeupdateO;

        程序片段一是普通的Statement對象,而程序片段二則是PrepareStatemennt對象,PrepareStatemennt對象包含了SQL語句,一般情況下,這個SQL語句已經(jīng)被預(yù)編譯過,當(dāng)執(zhí)行的時候,只需要運(yùn)行SQL語句就可以了。如果多次執(zhí)行Statement對象,就會降低PrepareStatemennt對象的運(yùn)行時間,加快數(shù)據(jù)庫的訪問速度,此時只需要改變其中的變量值,就可以執(zhí)行SQL語句了。是否選擇PrepareStatemennt對象,在于SQL語句是否已經(jīng)多次執(zhí)行,而且兩次執(zhí)行的差別只是變量的不同。如果SQL語句執(zhí)行了多次,那么就可以體現(xiàn)PrepareStatemennt對象預(yù)編譯的優(yōu)越性,如果SQL語句只執(zhí)行了一次,那么PrepareStatemennt對象就和Statemennt對象沒有任何差別。因此,多次執(zhí)行Statemennt對象,可以創(chuàng)建為PrepareStatemennt對象,提高效率。

        3.3 僅選取所需要的行、列

        當(dāng)執(zhí)行SQL查詢[6]的時候,會獲得符合條件的所有記錄。此時,可以通過tatement的setFetchSize()方法設(shè)置數(shù)據(jù)緩存。以增量的方式獲取記錄集,從而獲得自己所需要的記錄。當(dāng)發(fā)送SQL查詢語句的時候,不需要選取數(shù)據(jù)中的全部列,選取單獨(dú)的列就可以減少服務(wù)器發(fā)送和取出的數(shù)據(jù)量,提高系統(tǒng)的性能。

        4 結(jié)束語

        優(yōu)化Java訪問SQL數(shù)據(jù)庫的效率,應(yīng)該從優(yōu)化數(shù)據(jù)庫的連接開始,選擇合適的驅(qū)動程序,采用連接池技術(shù),并且優(yōu)化數(shù)據(jù)庫。在實(shí)際應(yīng)用中,根據(jù)實(shí)際開發(fā)情況,可以研制出更好的優(yōu)化策略,更好地提高數(shù)據(jù)庫訪問效率。另外,提高數(shù)據(jù)訪問效率還可以改善系統(tǒng)硬件設(shè)備,采用硬件軟件結(jié)合的方式,提高Java訪問數(shù)據(jù)庫的效率。

        參考文獻(xiàn)

        [1]王長杰,王衛(wèi)華.Java訪問數(shù)據(jù)庫的效率優(yōu)化研究[J].科技信息,2010(34):246-247.

        [2]陳舒驊,劉俊.基于JDBC的數(shù)據(jù)庫訪問優(yōu)化策略研究[J].電腦編程技巧與維護(hù),2011(10):102-103.

        [3]車玉生,鞠紅.淺談JDBC連接數(shù)據(jù)庫經(jīng)驗(yàn)技巧[J].中國科技財(cái)富,2011(6):79-80.

        [4]岐世峰.JDBC訪問數(shù)據(jù)庫的優(yōu)化建議[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2009(11):121-122.

        [5]張達(dá)敏,陳言君.優(yōu)化J2EE代碼編寫提高軟件性能[J],貴州科學(xué),2009,27(2):89-90.

        [6]張洋.JDBC數(shù)據(jù)庫訪問技術(shù)[J].電腦編程技巧與維護(hù),2009(22):57-58.

        [作者簡介]衣李娜(1974.2-),女,漢族,遼寧省本溪市,職稱:講師,學(xué)位:碩士,研究方向?yàn)槌绦蛟O(shè)計(jì)。

        中文字幕乱码亚洲三区| 啪啪无码人妻丰满熟妇| 国产强伦姧在线观看| 日本在线免费不卡一区二区三区| 一个色综合中文字幕人妻激情视频| 日韩人妻无码精品久久| 伊人网视频在线观看| 国产成人午夜av影院| 亚洲一区二区三区国产| 少妇愉情理伦片高潮日本| 中文字幕一区二区三区久久网站 | av天堂手机免费在线| 国产成人综合亚洲看片| 性夜影院爽黄a爽在线看香蕉 | 一本大道av伊人久久综合 | 老熟女的中文字幕欲望| 欧美日韩一区二区综合| 视频一区精品自拍| 午夜视频在线观看日本| 日韩网红少妇无码视频香港| 中文字幕乱码免费视频| 亚洲成aⅴ人片在线观看天堂无码| 久久成人精品国产免费网站| 中文字幕亚洲综合久久| 日日噜噜夜夜爽爽| 亚洲在战AV极品无码| 亚洲精品一区二区高清| 一本一本久久aa综合精品| 婷婷丁香91| 成年女人午夜特黄特色毛片免| 日韩乱码人妻无码系列中文字幕| 中文字幕亚洲欧美日韩2019| 亚洲av成人在线网站| 美女视频黄a视频全免费网站色| 亚洲成aⅴ人片久青草影院 | 2020国产精品久久久久| 中文字幕人妻精品一区| 影视av久久久噜噜噜噜噜三级| 午夜一级韩国欧美日本国产| 大屁股流白浆一区二区| 妺妺窝人体色www在线|