Mysql事务八股

答案在小林coding网站
1、事务的特性
除了简单介绍四种特性,然后也可以讲是怎么实现的,具体的实现原理和流程、、、
持久性是通过 redo log (重做日志)来保证的;
原子性是通过 undo log(回滚日志) 来保证的;
隔离性是通过 MVCC(多版本并发控制) 或锁机制来保证的;
一致性则是通过持久性+原子性+隔离性来保证;

2、并行事务有什么特点
脏读、不可重复读、幻读
严重性排序:脏读>不可重复读>幻读

3、事务的四种隔离级别
SQL 标准提出了四种隔离级别来规避这些现象,隔离级别越高,性能效率就越低,这四个隔离级别如下:

读未提交(read uncommitted),指一个事务还没提交时,它做的变更就能被其他事务看到;
读提交(read committed),指一个事务提交之后,它做的变更才能被其他事务看到;
可重复读(repeatable read),指一个事务执行过程中看到的数据,一直跟这个事务启动时看到的数据是一致的,MySQL InnoDB 引擎的默认隔离级别;
串行化(serializable );会对记录加上读写锁,在多个事务对这条记录进行读写操作时,如果发生了读写冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行;

读提交的实现:是通过锁,MVCC(事务A提交之后,事务B会形成新的Read View)

为什么可重复读会发生幻读现象??
可重复读解决了一部分幻读(解决其它事务insert数据对本事务的影响)现象,但是没有完全解决,两个解决方案:
1、快照读:MVCC 2、当前读:next-key Lock+Record Lock

4、MVCC中的Read View

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容