最近在学习数据库的事务,记录一下事务所谓的ACID特性。

1.A —— 原子性

原子性的意思是,所有事务都是一个不可分割的整体,事务的内容只有全部成功,或者全部失败,不会只成功一部分。

2.C —— 一致性

一致性表示事务执行前后,数据库的完整性都保持一致,不会因为事务导致某个字段变更。

3.I —— 隔离性

隔离性分为四个级别

  • 读未提交:事务可能会读到其他事务未提交的数据,会出现脏读。
  • 读已提交:事务会读到其他事务已提交的事务,也就是前后两次读可能会不一致,会出现不可重复读。
  • 可重复读:事务只有在提交之后,才会读到其他事务修改的数据,会出现幻读。
  • 可穿行化:强制事务串行进行解决幻读,但会造成大量的超时、锁竞争。

4.D —— 持久性

持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响


oh yeah