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 ...