上上海网站设计建设,南京装修公司做网站,凡客v 网上商城,wordpress网站备份一、什么是事务#xff0c;四大特性 事务#xff1a;一组操作的集合#xff0c;它是一个不可分割的单位#xff0c;事务会将这些操作作为一个整体一起像系统提交#xff0c;这些操作要么同时成功#xff0c;要么同时失败 四大特性#xff08;ACID#xff09; 原子性四大特性 事务一组操作的集合它是一个不可分割的单位事务会将这些操作作为一个整体一起像系统提交这些操作要么同时成功要么同时失败 四大特性ACID 原子性Atomicity事务是一个不可分割的工作单位事务中的操作要么都成功要么都失败一致性Consistency事务前后数据的完整性必须保持一致。隔离性Isolation各个事务的操作不受干扰多个并发事务之间要相互隔离。持久性Durability事务一旦提交它对数据库中数据的改变就是永久性的 比如A向B转账500元。 原子性都成功或者都失败 一致性A扣减了500元B必须增加500元 隔离性A向B转账的过程中不受其它事务干扰 持久性事务提交后要落盘持久化 二、并发事务可能出现的问题 脏读一个事务读到另一个还未提交事务的数据 不可重复读一个事务先后读取同一个事务两次得到的数据不一致 幻读一个事务在查询时没发现该数据插入时却又发现该事务已存在类似“幻影” 比如现在有A、B两个事务 脏读A修改了一个数据但是还没有提交。但在并发情况下被B读取了还未提交的数据也就是“脏数据”依据脏数据所做的操作可能是不正确的 不可重复读A查询当前数据后被B修改了该数据A重新查询该数据发现两次结果不一致 幻读A查询一些数据后发现并不存在同时B插入了一部分数据在随后的操作中A发现不该存在的数据突然出现了就像出现了“幻影”一样。 三、事务隔离级别 Mysql默认隔离级别为可重复读 读未提交read uncommitted解决不了所有问题一般不用 读已提交read committed解决脏读 可重复读 repetable read解决脏读和不可重复度 串行化serializable解决所有事务串行执行效率低