数据库的事务特性ACID
什么是事务?
由一组SQL语句组成的一个程序执行单元,要么全部成功,要么全部失败
事务特性(ACID)
A原子性:不可分割性,事务要么全执行,要么全不执行
C一致性:事务开始和结束之间的中间状态不会被其他事务看到
I隔离性:多个事务并发访问,事务之间是隔离的,一个事务不应该影响其他事务运行效果
D(durability)持久性:事务对数据库所作的更改持久保存在数据库中
怎么理解数据库事务的一致性?
一致性保证一个事务中的多次操作的数据中间状态对其他事务不可见。
举例:A给B转账100元。事务要做的是从A账户上减掉100元,向B账户加上100元。一致性的含义是要么看到A还没给B转账的状态,要么看到A已经成功转账给B的状态。A已经少了100元但B还没有加上100元的中间状态是不可见的。
原子性和一致性的比较
原子性和一致性的侧重点不同:
原子性关注状态,要么全部成功,要么全部失败,不存在部分成功的状态。
一致性关注可见性,中间状态的数据对外部不可见,只有最初状态和最终状态的数据对外可见。
怎么理解未提交读的隔离级别不符合一致性
在未提交读的隔离级别下,