mysql数据库事务

来源:互联网 发布:淘宝卖家在哪里拿货 编辑:程序博客网 时间:2024/05/24 06:59

事务的ACID

  1. 原子性(Atmic):要么全做要么全不做,任何一项操作的失败都讲导致整个事务失败
  2. 一致性(Consistent):事务结束时状态是一致的
  3. 隔离性(Isolated):并发事务无法看到对方的中间状态
  4. 持久性(Durable):事务完成后所有的改动都会持久化

事务的隔离级别

脏读:A事务读取到B事务尚无提交的数据,并在此数据上进行操作。

事务A 事务B 查询余额为1000 取出500余额500 查询余额500(脏读) 撤销取款余额恢复为1000

不可重复读: 事务A重新读取之前读取到的数据,发现数据被已提交的事务B修改了

事务A 事务B 查询余额为1000 查询余额为1000 取款500余额为500 提交事务 查询余额为500(不可重复读)

幻读:事务A重新执行一条查询,返回一系列符合条件行,发现了事务B提交的行

事务A 事务B 统计总存款为10000 新增一个账户存入100 提交事务 再次统计总存款为10100(幻读)

第一类丢失更新:事务A撤销时,把事务B的更新数据覆盖了

事务A 事务B 查询余额为1000 查询余额为1000 存入100余额1100 提交事务 取款100余额为900 撤销事务 余额恢复为1000(丢失更新)

第二类丢失更新:事务A提交时,把事务B的更新数据覆盖了

事务A 事务B 查询余额为1000 查询余额为1000 存入100余额1100 提交事务 取款100余额为900 提交事务 查询账户余额为900(丢失更新)
隔离级别 脏读 不可重复读 幻读 第一类更新丢失 第二类更新丢失 READ UNCOMMITED(读取到未提交的) 允许 允许 允许 不允许 允许 READ COMMITTED(读取不到未提交的) 不允许 允许 允许 不允许 允许 REPEATABLE READ(默认的可重复读) 不允许 不允许 允许 不允许 不允许 SERIALIZABLE 不允许 不允许 不允许 不允许 不允许

查询mysql数据库当前事务隔离级别

select @@tx_isolation
set session transaction isolation level read uncommitted; // 设置当前事务隔离级别
1 0
原创粉丝点击