一、事务概念
事务就是一个程序执行单元,里面的操作要么都做,要么都不做。
二、事务特性
事务有四个非常重要的特性(ACID):
原子性(Atomicity):事务是不可分割的整体,所有操作要么全做,要么全不做;只要事务中有一个操作出错,回滚到事务开始前状态,即之前已执行的操作无效。
一致性(Consistency):事务执行前后,从一个一致性状态到另一个一致性状态;比如A向B转账(A、B总金额就是一个一致性状态),不可能出现A扣了钱。B却没收到。
隔离性(Isolation):多个并发事务之间相互隔离, 不能相互干扰。
持久性(Durablity):事务完成后,对数据库的更改是永久保存的,不能回滚。
三、事务并发问题
1、脏读:一个事务读取了另一个事务未提交的数据。
2、不可重复读:一个事务多次读取同一数据,得到了不同的值。(被另一个事务更新了--update)
3、幻读:也是多次读取得到的结果不一致。(被另一个事务增加或删除了记录--insert/delete)
四、事务隔离级别(MySQL)
1、读未提交(read-uncommitted)
2、读已提交(read-committed):解决脏读
3、可重复读(Repeatable read):解决脏读、不可重复读
4、串行化(Serializable):解决脏读、不可重复读、幻读
MySQL默认的隔离级别是read-committed,级别越高,性能就越低。
原文地址:https://blog.51cto.com/14295202/2380621
时间: 2024-10-10 00:42:49