博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis (五)一级缓存和二级缓存的区别
阅读量:3906 次
发布时间:2019-05-23

本文共 633 字,大约阅读时间需要 2 分钟。

什么叫缓存

        将数据存放在程序内存中,用于减轻数据查询的压力,提升读取数据的速度,提高性能。

一级缓存

■ 两个级别

        SqlSession级别的缓存,实现在同一个会话中数据的共享

        Statement级别的缓存,可以理解为缓存只对当前执行的这一个Statement有效,执行完后就会清空缓存

■ 一级缓存的生命周期和SqlSession一致

■ 设置为SqlSession级别的缓存,当执行insert/update/delete操作或close之后,缓存清空

■ MyBatis的一级缓存最大范围是SqlSession内部,有多个SqlSession或者分布式的环境下,数据库写操作会引起脏数据,建议设定缓存级别为Statement

二级缓存

■ SqlSessionFactory级别的缓存,实现不同会话中数据的共享,是一个全局变量

■ 存储作用域为Mapper的namespace级别

■ 可自定义存储源,如 EHCache(分布式缓存框架)

■ 当开启缓存后,数据的查询执行的流程就是二级缓存-> 一级缓存 -> 数据库

■ 不同于一级缓存,二级缓存可设置是否允许刷新和刷新频率

■ MyBatis的二级缓存不适应用于映射文件中存在多表查询的情况,如果多个映射文件对应的Sql操作都使用的是同一块缓存,那么缓存的粒度就变粗了,多个Mappernamespace下的所有操作都会对缓存使用造成影响。

推荐一个“美团技术点评团队”写的关于MyBatis缓存机制的分析

 

转载地址:http://bsqen.baihongyu.com/

你可能感兴趣的文章
Nginx upstream schedule strategy
查看>>
Redis Brief Intro
查看>>
Nginx Basic Config
查看>>
Nginx Load Balancer Config
查看>>
Nginx config hight throughput
查看>>
mysql max_connection config
查看>>
Python improve performance
查看>>
mysql interview questions and answers
查看>>
File & File system size limitation for Redhat
查看>>
Python decorator guide
查看>>
interview sorting algorithm summary
查看>>
Python continue, else and pass
查看>>
mysql index and search improve
查看>>
Memcache Brief Intro
查看>>
DB sharding and ID design
查看>>
DB slave master architecture - read, write separation
查看>>
mysql replication by mysqldump & xtrabackup
查看>>
mysql replication copy master to slave
查看>>
linux/unix rules for naming file and directory
查看>>
Identify Linux File System Type
查看>>