MySQL数据库事务及其特性
程序员文章站
2022-05-31 09:32:44
一、事务概念 事务就是一个程序执行单元,里面的操作要么都做,要么都不做。 二、事务特性 事务有四个非常重要的特性(ACID): 原子性(Atomicity):事务是不可分割的整体,所有操作要么全做,要么全不做;只要事务中有一个操作出错,回滚到事务开始前状态,即之前已执行的操作无效。 一致性(Cons ......
一、事务概念
事务就是一个程序执行单元,里面的操作要么都做,要么都不做。
二、事务特性
事务有四个非常重要的特性(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,级别越高,性能就越低。
上一篇: vue项目打包webpack体积优化
下一篇: js 判断图片是否有效