数据库事务
原子性:Atomicity [,ætə’mɪsɪtɪ]、 一致性:Consistency [kən’sɪst(ə)nsɪ]
隔离性:Isolation [aɪsə’leɪʃ(ə)n]、持久性 :Durability [djʊrə’bɪləti]
原子性:在我理解看来是,事务中各项操作,要么全部成功要么全部失败。很有江湖义气一说,同生共死。
一致性:我理解的是更侧重结果,事务结束后系统状态是一致的。
隔离性:并发执行的事务彼此无法看到对方的中间状态。
持久性:当事务完成后,它对于数据的改变是永久性的,即使出现致命的系统故障也将一直保持。
事务隔离级别 | 脏读 | 不可重复读 | 幻读 | 数据库默认级别 |
---|---|---|---|---|
未提交读(Read uncommitted) | 可能 | 可能 | 可能 | |
已提交读(Read committed) | 不可能 | 可能 | 可能 | Oracle / SQL Server |
可重复读(Repeatable read) | 不可能 | 不可能 | 可能 | MySQL |
可串行化(SERIALIZABLE) | 不可能 | 不可能 | 不可能 |
脏读:在一个事务处理过程中读取了另一个未提交事务中的数据。
**不可重复读:**事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。
**幻读:**事务 A 将数据库中所有数据类型从默认的 true 改成 false,但是事务 B 就在这个时候插入了一条新记录,当事务 A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。