一.事务
1.事务的特性
(1)原子性(Atomicity),可以理解为一个事务内的所有操作要么都执行,要么都不执行。
(2)一致性(Consistency),可以理解为数据是满足完整性约束的,也就是不会存在中间状态的数据,比如你账上有400,我账上有100,你给我打200块,此时你账上的钱应该是200,我账上的钱应该是300,不会存在我账上钱加了,你账上钱没扣的中间状态。
(3)隔离性(Isolation),指的是多个事务并发执行的时候不会互相干扰,即一个事务内部的数据对于其他事务来说是隔离的。
(4)持久性(Durability),指的是一个事务完成了之后数据就被永远保存下来,之后的其他操作或故障都不会对事务的结果产生影响。
2.事务的并发问题
(1)脏读:一个事务读取到另一个事务没有提交的数据
(2)不可重复读:同一事务中,两次读取同一数据,得到的内容不同
(3)幻读:同一事务中,用同样的操作读取两次,得到的记录数不同
3.事务的隔离级别
(1)读未提交:事务A可以读取到事务B未提交的数据
(2)读已提交:事务A只能读取其它事务已提交的数据(避免了脏读)
(3)可重复读:事务A只保存另一个事务做更新操作前的状态,保证另一个事务update时,当前事务的查询结果是一致的(避免了不可重复读)(mysql默认)
(4)序列化:事务串行化顺序执行(避免脏读 不可重复读 幻读)
二.锁
1.锁的类型
mysql锁的类