数据库事务
事务(Transaction):一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元,说白了就是保证一段SQL语句的全部执行,或者都不执行
数据库事务的四大特性(ACID)
· 原子性(Atomicity)
要么一个事务中的代买全部执行,要么全不执行
· 一致性(Consistency)
事务执行前后,数据库处于一致性状态
eg: 事务执行前 小A有5000元,小B有0元 转账事务执行后 A、B的和加起来还应为5000元。
· 隔离性(Isolation)
事务的隔离指在并发环境中,并发事务之间互不干扰,相互隔离。但是事务的隔离是有等级的,解决脏读、幻读、重复读问题
· 持久性(Duration)
事务一旦成功提交后,数据库中的数据必须被永久的保存下来。
数据库事务并发带来的问题
脏读:A事务读取了还未提交事务B的数据更改,若事务B回滚则数据出错
不可重复读:事务A进行过程中,读取了事务B对数据的 更改(修改删除)导致两次查询结果不同
幻读:事务A进行过程中,读取了事务B对数据的新增数据,导致两次查询结果不同
注意不可重复读与幻读的区别: 前者是指读到了已经提交的事务的更改数据(修改或删除),后者是指读到了其他已经提交事务的新增数据。
隔离等级
对应以上不同
① Serializable (顺序执行):可避免脏读、不可重复读、幻读(表级锁)的发生。
② Repeatable read (可重复读):可避免脏读、不可重复读(行级表)的发生。(默认隔离级别)
③ Read committed (读已提交):可避免脏读(只读已提交事务的数据)的发生。
④ Read uncommitted (读未提交):最低级别,任何情况都无法保证。
简书不能修改字体颜色???难受啊飞