Hibernate的性能优化问题笔记
性能优化
1.注意session.clear()的运用。尤其是不断分页循环的情况下。
a)在一个大集合中进行遍历,遍历取出数据或者对象
b)java会引起内存泄漏吗?在语法上是不可能出现内存泄露的,因为我们是运行在java虚拟机,有垃圾处理机制。但是在实际操作中,比如打开session不关闭,打开sessionfactory不关闭(数据库连接池),打开本地文件不关闭等等,这些都是占用内存的,所以可能操作不当会引起内存泄漏。
2.1+N问题(一对多,多对一)把关联对象也取出来了实际并不需要。导致冗余。
a)将fecthType设置为lazy(按需而发Query)
b)BatchSize(size=5) 一次性发5条语句 只是少发sql语句了
c)join fetch
3.list和iterate不同
a)list是直接把对象取出来。iterate是先取出主键id,有需要的时候,在根据id取对象。
b)list不会应用session缓存 第一次取出时放入缓存,当发送相同的查询语句时,会再次刷新缓存。再次发送sql(仍然会到数据库查询).而iterate是先去找session级缓存,如果有。不会再发sql语句了。所以我们可以取数据是用list,而查时用iterate.
4.一级缓存 二级缓存 查询缓存
一级缓存是指session缓存,在同一个session中共享。
二级缓存是sessionfactory缓存,可跨越session。(ehcache,oscache,(硬盘和内存)jbosscache,sawrmcache(红色可用于集群环境))
二级环境适用环境:1,经常被访问2.改动不大3.数据量小
<property name="cache.use_second_level_cache">true</property>
<property name="cache.provider_class">org.hibernate.cache.EhsCacheProvider</property>
加@cache注解。
如果适用查询缓存要配置
<property name="cache.use_second_level_cache">true</property>
<property name="cache.provider_class">org.hibernate.cache.EhsCacheProvider</property>
<property name="cache.use_query_cache">true</property>
代码要加 iscacheable(true).
5.缓存算法LRU(空闲时间长拿走) LFU(命中率低的拿走) FIFO(先进先出)
Hibernate的性能优化问题笔记的更多相关文章
- Spring/Hibernate 应用性能优化的7种方法
对于大多数典型的 Spring/Hibernate 企业应用而言,其性能表现几乎完全依赖于持久层的性能.此篇文章中将介绍如何确认应用是否受数据库约束,同时介绍七种常用的提高应用性能的速成法.本文系 O ...
- KVM性能优化学习笔记
本学习笔记系列都是采用CentOS6.x操作系统,KVM虚拟机的管理也是采用virsh方式,网上的很多的文章都基于ubuntu高版本内核下,KVM的一些新的特性支持更好,本文只是记录了CentOS6. ...
- 深挖计算机基础:Linux性能优化学习笔记
参考极客时间专栏<Linux性能优化实战>学习笔记 一.CPU性能:13讲 Linux性能优化实战学习笔记:第二讲 Linux性能优化实战学习笔记:第三讲 Linux性能优化实战学习笔记: ...
- Pandas 性能优化 学习笔记
摘要 本文介绍了使用 Pandas 进行数据挖掘时常用的加速技巧. 实验环境 import numpy as np import pandas as pd print(np.__version__) ...
- mysql性能优化学习笔记-参数介绍及优化建议
MySQL服务器参数介绍 mysql参数介绍(客户端中执行),尽量只修改session级别的参数. 全局参数(新连接的session才会生效,原有已经连接的session不生效) set global ...
- mysql性能优化学习笔记
mysql性能优化 硬件对数据库的影响 CPU资源和可用内存大小 服务器硬件对mysql性能的影响 我们的应用是CPU密集型? 我们的应用的并发量如何? 数量比频率更好 64位使用32位的服务器版本 ...
- js性能优化--学习笔记
<高性能网站建设进阶指南>: 1.使用局部变量,避免深入作用域查找,局部变量是读写速度最快的:把函数中使用次数超过一次的对象属性和数组存储为局部变量是一个好方法:比如for循环中的.len ...
- mysql性能优化学习笔记(1)优化目的、方向及数据库准备
前言: 最近参加面试,问到了很多关于mysql的优化方面的问题,回答的不是很好,也是因为原先做的项目流量不是很大,所以对mysql优化不是太了解,所以趁着周末,恶补一下. 本文来源于慕课网sqlerc ...
- Java程序性能优化读书笔记(一):Java性能调优概述
程序性能的主要表现点: 执行速度:程序的反映是否迅速,响应时间是否足够短 内存分配:内存分配是否合理,是否过多地消耗内存或者存在内存泄漏 启动时间:程序从运行到可以正常处理业务需要花费多少时间 负载承 ...
随机推荐
- 【项目经验】--EasyUI DataGrid之右键菜单
前两天验收项目,老总提了一个不是需求的需求,为什么这么说呢?因为我们的管理不到位!话说当天,我们UI系统下发了一个总文件,上面写着"各个系统找一个没有添加UI的模块去添加最新版本UI进行测试 ...
- em与rem
em是相对于父元素的font-size,rem是相对于根元素的font-size. rem的补充: ① 对于不支持它的浏览器,应对方法也很简单,就是多写一个绝对单位的声明.这些浏览器会忽略用rem设定 ...
- 用户视角 vs 系统视角 看性能
如何评价性能的优劣: 用户视角 vs. 系统视角 对于最终用户(End-User)来说,评价系统的性能好坏只有一个字——“快”.最终用户并不需要关心系统当前的状态——即使系统这时正在处理着成千上万的请 ...
- Android Studio使用第三方类库
导入*.jar包 新建好了Android项目,添加一个第三方已经打包好的jar文件进你项目,下面就已添加一个odata4j的一个包 在项目中添加一个libs文件 直接通过COPY/PAST 把你下载的 ...
- CentOS VMware 配置IP小结 静态 配置 桥接 NAT
系统启动后可先ping下外网或局域网内其它机器. 如果配置虚拟机时选择的NAT上网方式,后面需要配置固定IP,请先参见VMware NAT方式下设置静态IP获得可用的IP范围和网关等信息. 先将ifc ...
- 去除android手机滚动条
方法1:::-webkit-scrollbar{display: none;} 方法2:::-webkit-scrollbar{height:0; width:0:}
- Swift3.0语言教程字符串大小写转化
Swift3.0语言教程字符串大小写转化 Swift3.0语言教程字符串大小写转化,在字符串中,字符串的格式是很重要的,例如首字母大写,全部大写以及全部小写等.当字符串中字符很多时,通过人为一个一个的 ...
- PHP 批量修改图片的名字
<?php // glob() 返回指定目录下的文件名以及目录 $arr = glob("img/*.jpg"); $time = time(); $i = 100001; ...
- Spring Integration - 自动轮询发送手机短信
Spring Integration 配置 <?xml version="1.0" encoding="UTF-8"?> <beans xml ...
- 优化WPF 3D性能
Maximize WPF 3D Performance .NET Framework 4.5 As you use the Windows Presentation Foundation (WPF ...