在ehcache.xml文件中配置查询缓存参数,ehcache.xml文件配置如下:
<ehcache>
<!-- diskStore元素,配置一个目录,这个目录用来存放数据,
也就是说,如果EhCache需要把数据写入磁盘,将会写到这个目录下 -->
<diskStore path="java.io.tmpdir"/>
<defaultCache
maxElementsInMemory="10000"
eternal="false"
overflowToDisk="true"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"/>
<cache name="ehcacheName"
maxElementsInMemory="3000"
eternal="false"
timeToIdleSeconds="3600"
timeToLiveSeconds="36000"
overflowToDisk="true"
/>
</ehcache>
2. spring的配置
第一步:给指定方法配置缓存/src/main/resources/applicationContext-resources.xml
<ehcache:proxy id="userGroupServiceProxy" refId="userGroupService" ><ehcache:caching cacheName="cash15Min" methodName="selectuserGroupWithDetailByMemberId" />
<ehcache:caching cacheName="cash15Min" methodName="selectuserGroupWithDetailByGroupId" />
<ehcache:caching cacheName="cash15Min" methodName="selectuserGroupById" />
</ehcache:proxy>
配置参数的含义如下:
id:唯一标识符
refId:需要配置缓存的service或者controller
cacheName:缓存名称
methodName:需要缓存的方法,这个方法必须是shoppingHomeService中的方法
第二步:在控制器中注入依赖的缓存userGroupServiceProxy /src/main/webapp/WEB-INF/dispatcher-servlet.xml
<bean id="PFController" class="com.java.mall.controller.PFController"><property name="userService" ref="userService"></property>
<property name="userGroupService" ref="userGroupServiceProxy"></property>
</bean>
同时需要在实体类中注入依赖,提供setter方法,
private userGroupService userGroupServicepublic void setuserGroupService(userGroupService userGroupService) {
this.userGroupService = userGroupService
}
日志缓冲区Log_buffer是Oracle专门用于存入重做日志的内存区域。数据库启动时,可以看到:
SQL>startup
ORACLE 例程已经启动。
Total System Global Area 85006980 bytes
Fixed Size 453252 bytes
Variable Size 46137344 bytes
Database Buffers 37748736 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
Redo Buffers就是分配给Log_buffer的内存大小。
对日志缓冲区的大小,可以从下面的视图中查询的到:
SQL>select * from v$parameter
也可以
SQL>show parameter log_buffer
NAME TYPEVALUE
------------------------------------ ----------- ------------------------------
log_buffer integer 524288
从这儿查询出的数据,是在配置文件中配置的数据,配置文件有:SPFILEORA92.ORA,INITora92.ORA等。
这个值和真实的日志缓冲区的大小不同。如果要知道真实的Log_buffer的大小,可以用下面的方法查询:
SQL>select * from v$sgastat where name ='log_buffer'
POOLNAMEBYTES
------------------------------------- ----------
log_buffer 656384
上面的这个值,是Oracle的SGA实际分配给Log_buffer的大小。
另外,还可以从 v$sga中查询:
SQL>select * from v$sga
NAME VALUE
-------------------- ----------
Fixed Size 453252
Variable Size 46137344
Database Buffers 37748736
Redo Buffers 667648
这个值也就是Oracle启动时分配给Log_buffer的大小。
那这个值为什么和实际的大小有差别呢?
SQL>select (667648-656384)/1024 ||'K' from dual
(66
---
11K
相差11K,那这11K干什么用呢?
这11K是Oracle为了保护Log_buffer,分配出来的日志保护页。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)