1.事务的四大特性(ACID)

1.1原子性(Atomicity)

原子性是指事务包含的一系列操作要么全部成功,要么全部回滚,事务是一个不可分割的整体

1.2一致性(Consistency)

一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。

1.3隔离性(Isolation)

一个事务的操作对于其他的事务是不可见的,每个事务都是相互独立的。

1.4持久性(Durability)

持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

2.事务的隔离级别

2.1脏读

脏读是指一个事务读取了另一个事务未提交的数据(READ COMMITTED隔离级别可以解决)

2.2不可重复读

1. 不可重复读是指在对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务修改并提交了(REPEATABLE READ隔离级别可以采用mvcc总是读取事务最开始的行数据版本(快照))
2. 一个事务在前后两次查询同一范围的时候,后一次查询看到了前一次查询没有看到的行称之为Phantom Problem现象,Phantom Problem是指在同一事务下,连续执行两次同样的SQL语句可能导致不同的结果,第二次的SQL语句可能会返回之前不存在的行。(InnoDB存储引擎下REPEATABLE READ隔离级别采用 Next-Key Lock算法解决)

2.3丢失更新

一个事务的更新操作会被另一个事务的更新操作所覆盖,从而导致数据的不一致

3.锁的算法

3.1Record Lock

单个记录上的锁

3.2Gap Lock

间隙锁,锁定一个范围,但不包含记录本身

3.3Next-Key

Gap Lock+Record Lock,s锁定一个范围,并且锁定记录本身