美文网首页
mysql事务学习

mysql事务学习

作者: Rena的秘密 | 来源:发表于2022-09-16 15:19 被阅读0次

    并发事务带来的问题:

    1.脏写:就是最后的更新覆盖了由其他事务所做的更新。

    2.脏读:就是读取到了其他事务已修改未提交的数据。

    3.不可重复读:指同一个事务中在不同时刻相同查询语句读取到的数据结果不一致(在本事务中并没有发生更新操作)。

    4.幻读:是指在当前事务中读取到了其他事务中新增的数据。

    事务的属性(ACID)

    1.原子性:一个事务中所有的操作要么一起完成,要么一起失败。

    2.一致性:事务的开始和结束时,数据要保证一致的状态,不能一个操作的数据被修改成功,一个操作的数据修改失败。

    3.隔离性:指的是当前事务中进行数据查询时,其他事务对当前数据修改了,本事务中多次查询到的数据结果是一样的。

    4.持久性:指的是事务完成后,它对于数据的修改是永久性的,即使出现故障也是支持的。

    事务的隔离级别

    read-uncommitted(读未提交):在当前隔离级别下,在一个事务中能读取到其他事务未提交的数据,会产生脏读、不可重复读、幻读的问题。

    read-committed(读已提交):在当前隔离级别下,在一个事务中能读取到其他事务已提交的数据,会产生不可重复读、幻读的问题。

    repeatable-read(可重复读):在当前隔离级别下,通过MVCC机制,会解决不可重复读的问题,保证未执行更新操作前,同一条sql语句读取到的数据结果一样;但是当其他事务提交了一个插入数据的操作,本事务未更新时虽然会感知不到,但是如果做了更新操作,再去执行查询,可能会产生幻读的问题。(mysql默认的隔离级别)

    serializable(可串行化):在当前隔离级别下,是通过加锁的方式锁定当前事务中查询操作的表里的所有数据,当其他事务进行更新或者插入的时候,会进行锁等待,无法执行成功。

    相关文章

      网友评论

          本文标题:mysql事务学习

          本文链接:https://www.haomeiwen.com/subject/lqakortx.html