开发中经常提到数据库的事务,那你知道数据库还有事务隔离的说法吗,
事务隔离还有隔离级别,那什么是事务隔离,隔离级别又是什么呢?
MySQL 事务
本文所说的 MySQL 事务都是指在 InnoDB 引擎下,MyISAM 引擎是不支持事务的。
数据库事务指的是一组数据操作(例如新增、修改、删除、添加索引、修改索引等操作),事务内的操作要么全部成功,要么全部失败。全部失败,什么都不做,其实不是没做,是可能做了一部分但是只要有一步失败,就要回滚所有操作,有点一不做二不休的意思。
示例:一个网购付款的操作,用户付款后要涉及到收款、订单状态更新、扣库存、退款等一系列动作,这就是一个事务,如果一切正常那就相安无事,一旦中间有某个环节异常,那整个事务就要回滚,总不能收款了,更新了订单状态,但不扣库存吧;退款了,也要更新订单状态,恢复库存吧,这问题就大了。
事务具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)四个特性,简称 ACID,缺一不可。今天要说的就是隔离性。
1)原子性(Atomicity)
事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做
2)一致性(Consistency)
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务