事务介绍
概述:事务是数据库里的一个概念,表示一个事务的多个组成单元,要么全部成功,要么全部失败
作用:用于保证事务里的多个操作,要么全部成功,要么全部失败(在银行金融领域尤为重要)
流程示例:银行转账
开始事务 start transaction
转账人的账号,扣钱
收款人的账号,加钱
关闭事务
提交事务 commit:事务里所有的操作全部立即生效
扣钱,加钱全部完成
回滚事务 rollback:事务里所有的操作全部立即取消
扣钱,加钱全部取消
四大特性ACID
A:Atomicity,原子性。指事务是不可分割的,不可能存在成功一半的情况
C:Consistency,一致性。指事务提交前后的状态和数据是一致的
I:Isolation,隔离性。指多事务并发时,理论上是互不干扰、相互独立的
D:Durability,持久性。指事务一旦提交,数据变更就永久保存到磁盘文件上,不会再丢失,除非再次变更
并发问题
来源:事务具有隔离的特性,理论上多个事务并发时是完全独立,互不干扰的,但实际上并不能做到,所以就有并发问题.
按严重程序从高到低的三个并发问题及解决办法(设置事务的隔离级别:由低到高):
脏读:一个事务里读取到另外一个事务未提交的数据,是一定要避免的 (read committed)
不可重复读:一个事务里多次读取的数据不一致–受其它事务的update操作干扰了 (repeatable read)
幻读:一个事务里多次读取的数据不一致–受其它事务的insert/delete操作干扰了 (serializable)
设置隔离级别:set session transaction isolation level 隔离级别
牢记以上,面试时遇到事务就可以侃侃而谈啦,一不小心十几分钟就过去了,升职加薪了它就lei了,