仓酷云
标题:
来看减速你的Hibernate引擎(下)
[打印本页]
作者:
冷月葬花魂
时间:
2015-1-18 11:24
标题:
来看减速你的Hibernate引擎(下)
最后我再次声明,我并没有说不看好java,实际上我对java很乐观的,毕竟她正在不断改进中,我相信她总有一天会和.net网页编程并驾齐驱的
4.6HQL调优
4.6.1索引调优
HQL看起来和SQL很类似。从HQL的WHERE子句中一般能够猜到响应的SQLWHERE子句。WHERE子句中的字段决意了数据库将选择的索引。
年夜多半Hibernate开辟者所常犯的一个毛病是不管什么时候,当必要新WHERE子句的时分城市创立一个新的索引。由于索引会带来分外的数据更新开支,以是应当争夺创立大批索引来掩盖尽量多的查询。
4.1节让你利用一个汇合来处置一切大概的数据搜刮前提。假如这不太实践,那末你可使用后端分析工具来创立一个针对使用程序触及的一切SQL的汇合。基于那些搜刮前提的分类,你终极会失掉一个小的索引集。与此同时,还能够实验向WHERE子句中增加分外的谓语来婚配其他WHERE子句。
典范7
有两个UI搜刮器和一个后端保卫历程搜刮器来搜刮名为iso_deals的表。第一个UI搜刮器在unexpectedFlag、dealStatus、tradeDate和isold属性上有谓语。
第二个UI搜刮器基于用户键进的过滤器,个中包含的内容除tradeDate和isold之外另有其他属性。入手下手时一切这些过滤器属性都是可选的。
后端搜刮器基于isold、participantCode和transactionType属性。
经由进一步营业剖析,发明第二个UI搜刮器实践是基于一些隐式的unexpectedFlag和dealStatus值来选择数据的。我们还让tradeDate成为过滤器的需要属性(为了利用数据库索引,每一个搜刮过滤器都应当有需要属性)。
鉴于这一点,我们顺次利用unexpectedFlag、dealStatus、tradeDate和isold机关了一个复合索引。两个UI搜刮器都能共用它。(按次很主要,假如你的谓语以分歧的按次指定这些属性或在它们前排列了其他属性,数据库就不会选择该复合索引。)
后端搜刮器和UI搜刮器区分太年夜,因而我们不能不为它机关另外一个复合索引,顺次利用isold、participantCode和transactionType。
4.6.2绑定参数vs.字符串拼接
既可使用绑定参数机关HQL的WHERE子句,也能够利用字符串拼接的办法,该决意对功能会有必定影响。利用绑定参数的缘故原由是让数据库一次剖析SQL,对后续的反复哀求复用天生好的实行企图,如许做节俭了CPU工夫和内存。但是,为到达最优的数据会见效力,分歧的绑定值大概必要分歧的SQL实行企图。
比方,一小段数据局限大概只前往数据总量的5%,而一年夜段数据局限大概前往数据总量的90%。前者利用索引更好,尔后者则最好利用全表扫描。
倡议OLTP利用绑定参数,数据堆栈利用字符串拼接,由于OLTP一般在一个事件中反复拔出和更新数据,只取大批数据;数据堆栈一般只要大批SQL查询,有一个断定的实行企图比节俭CPU工夫和内存更加主要。
如果你晓得你的OLTP搜刮对分歧绑定值应当利用不异实行企图又该怎样办呢?
Oracle9i及今后版本在第一次挪用绑定参数并天生实行企图时能探出参数值。后续挪用不会再探测,而是重用之前的实行企图。
<p>
java也能做一些底层语言开发做的事情(难度很高,不是java顶尖高手是做不来的),
作者:
透明
时间:
2015-1-20 23:53
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
作者:
只想知道
时间:
2015-1-27 18:17
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
作者:
愤怒的大鸟
时间:
2015-2-5 08:24
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
作者:
柔情似水
时间:
2015-2-9 06:29
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
作者:
仓酷云
时间:
2015-2-9 13:59
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
作者:
兰色精灵
时间:
2015-2-23 20:04
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
作者:
分手快乐
时间:
2015-3-3 19:01
是一种使网页(Web Page)产生生动活泼画面的语言
作者:
精灵巫婆
时间:
2015-3-5 21:41
是一种为 Internet发展的计算机语言
作者:
小妖女
时间:
2015-3-8 00:24
是一种使网页(Web Page)产生生动活泼画面的语言
作者:
深爱那片海
时间:
2015-3-13 02:08
让你能够真正掌握接口或抽象类的应用,从而在原来的Java语言基础上跃进一步,更重要的是,设计模式反复向你强调一个宗旨:要让你的程序尽可能的可重用。
作者:
小女巫
时间:
2015-3-13 02:10
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
作者:
若相依
时间:
2015-3-20 10:13
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
作者:
海妖
时间:
2015-4-14 13:41
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2