答案在小林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