欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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,级别越高,性能就越低。