Java 面试灵魂拷问之MySQL事务原理

1. 全方位剖析 MySQL 事务原子性、持久性、一致性实现原理

2. 大厂面试必问:MySQL事务隔离级原理

3.详解 MySQL 事务日志 Undo Log 和 Redo Log

4.谈谈你对 MySQL 的 理解

原子性:主要依靠undo.log日志实现,即在事务失败时执行回滚。undo.log日志会记录事务执行的sql,当事务需要回滚时,通过反向补偿回滚数据库状态

持久性:主要依靠redo.log日志实现。首先,mysql持久化通过缓存来提高效率,即在select时先查缓存,再查磁盘;在update时先更新缓冲,再更新磁盘。以减少磁盘io次数,提高效率。但由于缓存断电就没了,所以需要redo.log日志。在执行修改操作时,sql会先写入到redo.log日志,再写入缓存中。这样即使断电,也能保证数据不丢失,达到持久性

隔离性:我的理解就是多线程时多事务之间互相产生了影响,要避免这个影响,那就加锁。mysql的锁有表锁,行锁,间隙锁,好像还有一个锁数据库的,叫全局锁还是什么来着。写写操作通过加锁实现隔离性,*操作通过MVCC实现

一致性:就是事务再执行的前和后数据库的状态都是正常的,表现为没有违反数据完整性,参照完整性和用户自定义完整性等等。而上面三种特性就是为了保证数据库的有一致性

个人理解,有错请指出。狗头保命

Java 面试灵魂拷问之MySQL事务原理

上一篇:oracle中查询表字段信息及主键字段


下一篇:九、MySQL存储过程和函数