亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Hibernate程序性能優化的考慮要點

2019-11-18 13:34:08
字體:
來源:轉載
供稿:網友

  本文依照HIBERNATE幫助文檔,一些網絡書籍及項目經驗整理而成,只提供要點和思路,具體做法可以留言探討,或是找一些更具體更有針對性的資料。

  初用HIBERNATE的人也許都碰到過性能問題,實現同一功能,用HIBERNATE與用JDBC性能相差十幾倍很正常,假如不及早調整,很可能影響整個項目的進度。

  大體上,對于HIBERNATE性能調優的主要考慮點如下:

  Ø 數據庫設計調整

  Ø HQL優化

  Ø API的正確使用(如根據不同的業務類型選用不同的集合及查詢API)

  Ø 主配置參數(日志,查詢緩存,fetch_size, batch_size等)

  Ø 映射文件優化(ID生成策略,二級緩存,延遲加載,關聯優化)

  Ø 一級緩存的治理

  Ø 針對二級緩存,還有許多特有的策略

  Ø 事務控制策略。

  1、 數據庫設計

  a) 降低關聯的復雜性

  b) 盡量不使用聯合主鍵

  c) ID的生成機制,不同的數據庫所提供的機制并不完全一樣

  d) 適當的冗余數據,不過分追求高范式

  2、 HQL優化

  HQL假如拋開它同HIBERNATE本身一些緩存機制的關聯,HQL的優化技巧同普通的SQL優化技巧一樣,可以很輕易在網上找到一些經驗之談。

  3、 主配置

  a) 查詢緩存,同下面講的緩存不太一樣,它是針對HQL語句的緩存,即完全一樣的語句再次執行時可以利用緩存數據。但是,查詢緩存在一個交易系統(數據變更頻繁,查詢條件相同的機率并不大)中可能會起反作用:它會白白耗費大量的系統資源但卻難以派上用場。

  b) fetch_size,同JDBC的相關參數作用類似,參數并不是越大越好,而應根據業務特征去設置

  c) batch_size同上。

  d) 生產系統中,切記要關掉SQL語句打印。

  4、 緩存

  a) 數據庫級緩存:這級緩存是最高效和安全的,但不同的數據庫可治理的層次并不一樣,比如,在Oracle中,可以在建表時指定將整個表置于緩存當中。

  b) session緩存:在一個HIBERNATE SESSION有效,這級緩存的可干預性不強,大多于HIBERNATE自動治理,但它提供清除緩存的方法,這在大批量增加/更新操作是有效的。比如,同時增加十萬條記錄,按常規方式進行,很可能會發現OutofMemeroy的異常,這時可能需要手動清除這一級緩存:Session.evict以及Session.clear

  c) 應用緩存:在一個SESSIONFACTORY中有效,因此也是優化的重中之重,因此,各類策略也考慮的較多,在將數據放入這一級緩存之前,需要考慮一些前提條件:

  i. 數據不會被第三方修改(比如,是否有另一個應用也在修改這些數據?)

  ii. 數據不會太大

  iii. 數據不會頻繁更新(否則使用CACHE可能適得其反)

  iv. 數據會被頻繁查詢

  v. 數據不是要害數據(如涉及錢,安全等方面的問題)。

  緩存有幾種形式,可以在映射文件中配置:read-only(只讀,適用于很少變更的靜態數據/歷史數據),nonstrict-read-write,read-write(比較普遍的形式,效率一般),transactional(JTA中,且支持的緩存產品較少)

  d) 分布式緩存:同c)的配置一樣,只是緩存產品的選用不同,在目前的HIBERNATE中可供選擇的不多,oscache, jboss cache,目前的大多數項目,對它們的用于集群的使用(非凡是要害交易系統)都持保守態度。在集群環境中,只利用數據庫級的緩存是最安全的。

  5、 延遲加載

  a) 實體延遲加載:通過使用動態代理實現

  b) 集合延遲加載:通過實現自有的SET/LIST,HIBERNATE提供了這方面的支持

  c) 屬性延遲加載:

  6、 方法選用

  a) 完成同樣一件事,HIBERNATE提供了可供選擇的一些方式,但具體使用什么方式,可能用性能/代碼都會有影響。顯示,一次返回十萬條記錄(List/Set/Bag/Map等)進行處理,很可能導致內存不夠的問題,而假如用基于游標(ScrollableResults)或Iterator的結果集,則不存在這樣的問題。

  b) Session的load/get方法,前者會使用二級緩存,而后者則不使用。

  c) Query和list/iterator,假如去仔細研究一下它們,你可能會發現很多有意思的情況,二者主要區別(假如使用了SPRing,在HibernateTemplate中對應find,iterator方法):

  i. list只能利用查詢緩存(但在交易系統中查詢緩存作用不大),無法利用二級緩存中的單個實體,但list查出的對象會寫入二級緩存,但它一般只生成較少的執行SQL語句,很多情況就是一條(無關聯)。

  ii. iterator則可以利用二級緩存,對于一條查詢語句,它會先從數據庫中找出所有符合條件的記錄的ID,再通過ID去緩存找,對于緩存中沒有的記錄,再構造語句從數據庫中查出,因此很輕易知道,假如緩存中沒有任何符合條件的記錄,使用iterator會產生N+1條SQL語句(N為符合條件的記錄數)

  iii. 通過iterator,配合緩存治理API,在海量數據查詢中可以很好的解決內存問題,如:

  while(it.hasNext()){

  YouObject object = (YouObject)it.next();



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产专区欧美专区| 亚洲一区二区久久久久久久| 亚洲精品美女久久久久| 欧美成人精品在线| 亚洲免费一级电影| 欧美成人激情视频| 国产亚洲一区精品| 精品香蕉在线观看视频一| 日韩男女性生活视频| 中文字幕自拍vr一区二区三区| 精品福利在线观看| 日韩美女免费线视频| www.日韩av.com| 成人国产精品一区二区| 国产精品91在线| 亚洲wwwav| 欧美一级电影久久| 在线观看欧美视频| 国产成人精品999| 国产午夜精品美女视频明星a级| 亚洲天堂久久av| 26uuu另类亚洲欧美日本老年| 庆余年2免费日韩剧观看大牛| 波霸ol色综合久久| 亚洲热线99精品视频| 精品亚洲国产视频| 日韩欧美综合在线视频| 日韩电影大全免费观看2023年上| 欧洲成人性视频| 91精品视频在线免费观看| 欧美午夜片在线免费观看| 97精品久久久中文字幕免费| 亚洲黄在线观看| 亚洲精品av在线播放| 亚洲精品wwwww| 欧美成人免费在线视频| 国产精品美女久久久久久免费| 亚洲精品一区在线观看香蕉| 亚洲国产一区二区三区四区| 91po在线观看91精品国产性色| 2019av中文字幕| 国产乱人伦真实精品视频| 久久久久久国产精品三级玉女聊斋| 国产噜噜噜噜噜久久久久久久久| 欧美成人免费大片| 精品国产乱码久久久久久天美| 国产日韩欧美视频| 高跟丝袜一区二区三区| 国产欧美久久一区二区| 91av在线视频观看| 91欧美视频网站| 91av视频在线播放| 亚洲色图五月天| 91免费高清视频| 欧美日韩另类在线| 亚洲天堂影视av| 久久久91精品国产| 欧美亚洲激情在线| 亚洲精品乱码久久久久久按摩观| 欧美电影免费观看高清完整| 韩国欧美亚洲国产| 日韩av123| 一区二区亚洲欧洲国产日韩| 欧美在线视频网站| 欧美日韩电影在线观看| 国产美女精品视频| 日韩欧美主播在线| 国产91精品视频在线观看| 97视频在线观看成人| 国产日韩欧美自拍| 自拍亚洲一区欧美另类| 欧美高清视频在线| 不卡毛片在线看| 欧美成人激情在线| 操91在线视频| 欧亚精品在线观看| 精品国产精品自拍| 欧美区在线播放| 欧美日韩福利视频| 91性高湖久久久久久久久_久久99| 欧美日韩国产123| 国产精品小说在线| 国内精品小视频在线观看| 国产精品亚洲аv天堂网| 欧美体内谢she精2性欧美| 午夜精品一区二区三区av| 97在线日本国产| 午夜欧美不卡精品aaaaa| 国产精品视频自拍| 国产视频亚洲精品| 日本一区二区三区四区视频| 欧美日韩一区二区精品| 亚洲视频精品在线| 亚洲视频精品在线| 久久夜色精品亚洲噜噜国产mv| 97精品国产aⅴ7777| 国产精品啪视频| 久久久久久噜噜噜久久久精品| 精品一区二区电影| 国产+成+人+亚洲欧洲| 亚洲欧洲av一区二区| 96sao精品视频在线观看| 欧美在线一级va免费观看| 97成人精品视频在线观看| 欧美国产日本高清在线| 日韩av最新在线观看| 亚洲视频网站在线观看| 秋霞午夜一区二区| 欧美日韩亚洲一区二区| 国产精品99导航| 综合久久五月天| 中文字幕av一区| 国产精品日韩精品| 欧美有码在线视频| 97国产精品视频| 久久久免费观看| 国产精品视频一区二区高潮| 欧洲亚洲免费视频| 精品国产老师黑色丝袜高跟鞋| 日本国产高清不卡| 成人福利网站在线观看11| 亚洲va久久久噜噜噜久久天堂| 久久精品国产视频| 国产中文字幕亚洲| 色偷偷偷综合中文字幕;dd| 国产精品久久99久久| 久久亚洲精品毛片| 最好看的2019的中文字幕视频| 亚洲欧美精品中文字幕在线| 91精品久久久久久久久中文字幕| 亚洲四色影视在线观看| 一级做a爰片久久毛片美女图片| 国产精品久久91| 中文日韩在线观看| 都市激情亚洲色图| 久久久久久久国产精品视频| 欧美成人合集magnet| 一区二区三区黄色| 精品国产老师黑色丝袜高跟鞋| 久久精品视频播放| 8050国产精品久久久久久| 亚洲精品小视频| 欧美性极品少妇精品网站| 亚洲成**性毛茸茸| 欧美一级片久久久久久久| 中文字幕精品影院| 欧美亚洲视频在线看网址| 黑人巨大精品欧美一区二区三区| 亚洲男人av电影| 欧洲午夜精品久久久| 国产精品旅馆在线| 亚洲国产精品人久久电影| 欧美日韩激情美女| 亚洲视频免费一区| 色综合91久久精品中文字幕| 成人午夜在线观看| 成人国产精品日本在线| 尤物九九久久国产精品的特点| 欧美一区深夜视频| 国产精品∨欧美精品v日韩精品| 亚洲欧美日韩国产成人| 亚洲国产欧美在线成人app| 国产裸体写真av一区二区| www.欧美视频|