网站怎么做舆情监测,淄博建设企业网站,二网站手,wordpress竖着的分割线程序员的公众号#xff1a;源1024#xff0c;获取更多资料#xff0c;无加密无套路#xff01; 最近整理了一波电子书籍资料#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虚拟机》#xff0c;《重构改善既有代码设计》#xff0c;《MySQL高性能-第3版》源1024获取更多资料无加密无套路 最近整理了一波电子书籍资料包含《Effective Java中文版 第2版》《深入JAVA虚拟机》《重构改善既有代码设计》《MySQL高性能-第3版》《Java并发编程实战》等等 获取方式: 关注公众号并回复 电子书 领取更多内容持续奉上 MVCCMulti-Version Concurrency Control即多版本并发控制是一种数据库的并发控制机制。 MVCC是一种用来解决读写冲突的无锁并发控制到底解决了什么问题呢 在并发读写时可以在读操作时不阻塞写操作写操作时也不阻塞读操作提高了数据库并发读写的性能。 解决脏读、幻读、不可重复读等事务隔离问题。 MVCC原理 主要依赖于记录中的三个隐藏字段、undologread view来实现。 隐藏字段 每行记录都隐含DB_TRX_ID,DB_ROLL_PTR,DB_ROW_ID三个字段。 DB_TRX_ID记录创建这条记录或者最后一次修改该记录的事务id DB_ROLL_PTR回滚指针指向上一个旧版本 DB_ROW_ID隐藏的主键 undolog 回滚日志在进行insertdeleteupdate操作的时候产生的方便回滚的日志。 Read View 事务进行快照读操作时生成的读视图在该事务执行快照读的那一刻系统会生成一个快照记录此时事务的id用来做可见性判断的判断当前事务能够看到哪个版本的数据有可能读取到的是最新的数据也有可能读取到的是当前记录的undolog中某个版本的数据。 总结 在MVCC中每个数据行都会维护多个版本。每当对一行数据进行更新操作时都会生成新的版本。每个版本都有一个时间戳用于标识该版本的创建时间。 在读取数据时事务只能看到创建时间早于事务开始时间的版本。 当写操作时会生成新的版本并更新到数据行中。旧的版本仍然存在不会被删除。以便正在进行的其他事务可以继续读取到旧的版本不会被阻塞。 MVCC版本控制机制维护了数据的一致性和隔离性。事务开始时会记录当前的最新版本号。在事务执行过程中只能读取到小于事务开始时的版本保证读取的数据在事务开始时是一致的。
系列文章索引
MyBatis的插件能在哪些地方进行拦截
了解MyBatis的缓存机制吗
面试官谈谈对volatile的理解
Spring中用到了哪些设计模式
面试官说一下SQL的执行过程
线程池的工作原理