MyBatis로 캐시 시스템 캐시 : 일반 캐시 및 보조 캐시 캐시 SQLSESSION 캐시 데이터베이스는 캐시 된 데이터를 저장하기위한 목적으로 운영 SQLSESSION 객체에서 데이터 구조가 구축 될 필요가 레벨 캐시입니다. 상이한 영역들 사이의 캐시 데이터는 상호 SQLSESSION 영향을받지 않는다. 다른 캐시 데이터가 서로 SQLSESSION되어 읽을 수없는 사이는 SQLSESSION 개체 만 역할이다. 캐시 작품
구두 발표 : 사용자가 요청을 쿼리 기록을 시작하면 읽을 수있는 경우는 데이터베이스에서 데이터를 얻을 수없는 경우, SQLSESSION 기존의 캐시 데이터를 읽습니다. 커밋 작업이 캐시를 삭제합니다 SQLSESSION. 이것은 더러운 읽기 방지하기위한 것입니다.
참고 : 캐시를 비울 수없는 경우 오류가 발생 커밋합니다. 예를 들어 : 항목뿐만 아니라 10 10 10 명 고객이 구입 후, 제품의 캐시에 캐시 사용자 쿼리, 데이터가 떨어져 삭제이지만,이 제품은 캐시에서 다음 쿼리입니다 얻을. 더러운 데이터가 표시됩니다 . MyBatis로의 통합에 봄 스프링은 SQLSESSION에 각 서비스에 대한 트랜잭션 관리 서비스에 놓 후 자동 org.spring.mapper.MapperScannerConfigurer 판정 MyBatis로 스프링에 의해 각각의 쿼리에 서비스 SQLSESSION 주입 생성되는, 다른 닫기 SQLSESSION는, 데이터를 닫은 후 삭제됩니다, 그래서 트랜잭션 지원이없는 경우 스프링 통합 후, L1 캐시는 의미가 없다.
차 캐시 차 캐시 작품
구두 발표 : SQLSESSION 복수의 보조 캐시 매퍼 레벨 캐시, sql'Session 매퍼 SQL 문을 작동 같은 복수의, 보조 캐시는 SQLSESSION에서 보조 캐시를 공유했다. 每一个mapper都有一个二级缓存区域(按照namespace区分),每一个namespace的mapper都有二级缓存区域,两个mapper的namespace相同,这两个mapper执行的Sql查询数据存储在同一个二级缓存区域。
开启二级缓存 1.打开总开关: 在mybatis的xml文件中加入: <settings> <setting name="cacheEnabled" value="true"/> <settings/> 2.在需要开启二级缓存的mapper.xml文件中引入<cache /> 3.让使用二级缓存的POJO类实现Serializable(序列化)接口 注:springboot中默认开启了全局二级缓存,如果使用二级缓存需要在mapper上注明。@CacheNamespace
总结: 好处:对于查询多,commit操作少的。用户对查询条件实时性数据要求不高,采用二级缓存可以降低数据库访问量,提高数据库访问性能。 弊端:二级缓存是建立在一个namespace下的,如果是多个namespace那么数据可能是错误的。
举例说明: 部门和部门员工,部门存储在部门的二级缓存下,部门员工存储在部门员工的二级缓存下。如果有人对部门信息进行修改,那么影响的就只有部门的二级缓存,如果在进行查询时,部门员工信息时从部门员工的二级缓存中获取的。这时候的数据是已经过时的。
使用二级缓存的问题: 对该表的操作都是同一个namespace下,其他namespace如果有操作就会发生脏读。 对关联表的操作,关联表的所有表的操作都必须在同一个namespace下操作。 |
MyBatis로 시스템 캐시 버퍼 1 ---- 소개 및 간단한 구성
추천
출처www.cnblogs.com/shar-wang/p/11614173.html
추천
행