当前位置 博文首页 > 邱天的henry的博客:MySQL的四种事务隔离级别

    邱天的henry的博客:MySQL的四种事务隔离级别

    作者:[db:作者] 时间:2021-07-05 22:07

    一、事务的四大特性(ACID)

    1.原子性:不可分割的操作单元,事务中所有操作,要么全部成功;要么撤回到事务执行之前的状态

    2.一致性:如果在执行事务之前数据库是一致性的,那么在执行事务后数据库也还是一致的

    3.隔离性:事务操作之间彼此独立和透明互不影响。事务独立运行。这通常使用锁来实现。一个事务处理后的结果,影响了其他事务,那么其他事物会撤回。事务的100%隔离,需要牺牲速度

    4.持久性:事务一旦提交,其结果就是永久的。即便发生系统故障,也不能恢复。

    二、事务的并发问题

    1.脏读:是指事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的。

    2.不可重复读:是指在数据库访问时,一个事务范围内的俩次相同查询却返回了不同数据。在一个事务内多次读同一数据。在这个事务还没有结束时,另一个事物也该访问同一数据。那么在第一个事务中的俩次读数据之间,由于第二个事务的修改,第一个事务俩次读到的数据可能是不一样的。这样在一个事务内俩次读到的数据是不一样的,因此称为是不可重复读。

    3.幻读:是指事务不是独立执行时发生的一种现象,比如第一个事务对第一个表中的数据进行了修改,这种修改涉及到表中的全部数据行,同时,第二个事务也修改这个表中的数据,这种修改是像表中插入一行新数据。那么就会发生,操作第一个事务的用户发现表中还没有修改的数据,就好像发生了幻觉一样。

    4.小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表

    三、MySQL事务隔离级别

    事务隔离级别脏读不可重复读幻读
    读未提交(read-uncommitted)
    不可重复读(read-committed)
    可重复读(repeatable-read)
    可重复读(repeatable-read)

    mysql默认的事务隔离级别为repeatable-read
    在这里插入图片描述

    MySQL的四种事务隔离级别
    MySQL常见面试题

    cs
    下一篇:没有了