JDBC學習2 效能優化

2021-05-24 08:50:37 字數 1431 閱讀 2394

jdbc應用的效能涉及到資料庫、伺服器、資料庫驅動、系統的**書寫。這裡談論第4個方面。

一. statement還是preparedstatement

preparedstatement的開銷比statement大,所以preparedstatement的速度會比statement慢,但是preparedstatement會快取預編譯的sql語句,而statement則每次都重新編譯sql語句,所以對於多次使用的sql來說preparedstatement的效果會好點,但是對於只使用一次的sql語句,則statement效果更佳。

二. 批量操作

批量操作會把sql語句一次性發給資料庫,從而減少應用於資料庫伺服器的互動次數提高效能,但並不減少資料庫伺服器的i/o次數。在使用。在使用批量操作時應該設定每批資料的大小,否則可能記憶體溢位,在每批執行完畢後應該先關閉statement或preparedstatement釋放記憶體。

三. 使用適當的setter跟getter

使用preparedstatement設定資料用對應的set***,resultset用對應的get***,而用get/setobject效能則比較差。

四.  使用適當的resultset

resultset有:

引數 int type

resultset.type_forword_only 結果集的游標只能向下滾動。

resultset.type_scroll_insensitive 結果集的游標可以上下移動,當資料庫變化時,當前結果集不變。

resultset.type_scroll_sensitive 返回可滾動的結果集,當資料庫變化時,當前結果集同步改變。

引數 int concurrency

resultset.concur_read_only 不能用結果集更新資料庫中的表。

resultset.concur_updatetable 能用結果集更新資料庫中的表。

預設為:type_forword_only跟concur_read_only 此時效率最高。

五. 設定fectchsize

此引數每次從資料庫查詢的資料行數,預設各個資料庫不一樣。如果太小可能引起過多的網路互動。

六. 設定合適的事務級別

事務的隔離級別越高,所消耗的代價越到。所以設定合適的事務級別將提供效能。

七. 使用連線池

一般運算元據庫時都要獲取乙個連線用完後再關閉,如何將乙個連線放到連線池裡,用的時候拿出來,用完了放回。這樣將大大提高效能。

ORACLE學習筆記 效能優化2

5.怎麼樣根據os程序快速獲得db程序資訊與正在執行的語句 有些時候,我們在os上操作,象top之後我們得到的os程序,怎麼快速根據os資訊獲得db資訊呢?我們可以編寫如下指令碼 more whoit.sh bin sh sqlplus nolog 100,cascade true dbms sta...

python 效能優化(2)

第二部分 有益的提醒,靜態編譯的 仍然重要.僅例舉幾例,chrome,firefox,mysql,ms office 和 photoshop都是高度優化的軟體,我們每天都在使用.python作為解析語言,很明顯不適合.不能單靠python來滿足那些效能是首要指示的領域.這就是為什麼python支援讓...

listview效能優化(2)

參考 工作原理 1.listview針對list中每個item,要求adapter給其乙個檢視 getview 2.乙個新的檢視被返回並顯示 如果我們有上億個item要顯示怎麼辦?為每個專案建立乙個新檢視?no!這不可能 android實際上提供了快取檢視 android中有個叫做recycler ...