数据库 ACID及事务隔离级别

事务:并发控制和恢复的基本单位。

Atomicity原子性:事务是数据库的逻辑工作单位,事务中包括的所有操作要么都做,要么什么都不做。

Consistency一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。例如对银行转帐事务,不管事务成功还是失败,应该保证事务结束后ACCOUNTS表中Tom和Jack的存款总额为2000元。。

Isolation 隔离性:并发的事务相互隔离,不能互相干扰

Durability持久性 :一个事务一旦提交,他对数据库的修改就应该时永久性的,即便系统故障也不会丢失。

 

 

InnoDB引擎默认的隔离级别是 可重复读。

隔离级别:

读未提交(Read uncommited):会出现脏读,幻读

已提交读(Read committed):不会出现脏读、幻读

可重复读:(Repeatable read):不会出现脏读,不会出现幻读

序列化:所有事务只能一个接一个串行执行,不能并发。读需要获得表级共享锁,读写相互都会阻塞。

问题:

  • 丢失更新:一个事务的更新操作会被另一个事务的更新操作所覆盖。(如两个人修改同一个文件副本)
  • 脏读:读到了别人未提交的数据
  • 不可重复读:(重点在于修改)在同一个事务下,连续执行两次相同的SQL语句,读出的数据内容可能不同
  • 幻读 : (重点在于新增或删除)在同一个事务下,连续执行两次相同的SQL语句,读出的数据记录数可能不同

你可能感兴趣的:(mysql)