美文网首页
数据库事务的隔离性

数据库事务的隔离性

作者: Best_Scenery | 来源:发表于2019-03-31 09:46 被阅读0次

前段时间面试时发现对数据库隔离性的实现原理还是有点模糊,这里做下简单的整理。

隔离性(Isolation)是数据库事务特性ACID的一个重要特性之一。

它有4种级别,主要是通过对数据库加共享锁或排他锁来实现。

共享锁又叫读锁。一个事务获取数据行的共享锁,它可以读行该数据(查询)。

排他锁又叫写锁。一个事务获取数据行的排他锁,它可以更新该行数据(增删改)。

一个事务获取一行数据的共享锁,其他事务也能获取它的共享锁,但是不能获取它的排他锁。加了共享锁,其他事务能查询,但是不能增删改。

一个事务获取了一行数据的排他锁,那其他事务就不能获取它的共享锁或排他锁。加了排他锁,其他事务不能查询,也不能增删改。

4种隔离级别的实现原理

READ_UNCOMMITED

  • 事务对当前读取的数据不加锁

事务1读取某行记录时,事务2能对它进行读取、更新

  • 事务在更新某数据的时候,对其添加行级共享锁,直到事务结束才释放

事务1更新某行记录时:事务2能读取到它修改后的版本,即使事务1未提交;事务2不能对它进行更新,直到事务1结束。

READ_COMMITED

  • 事务对当前读取数据添加行级共享锁,读完立即释放

事务1读取某行记录时:事务2也能对它进行查询、更新

  • 事务对当前更新的数据添加行级排他锁, 直到事务结束才释放

事务1更新某行记录时:事务2读取到的是事务1更新前的数据,或者等事务1提交后能读到修改后的数据; 事务2不能更新它,直到事务1结束。

REPEATABLE READ

  • 事务对当前读取数据添加行级共享锁,直到事务结束才释放

事务1读取某行记录:事务2可以对它进行查询,但是不能更新;(可重复读就是因为这个)

  • 事务对当前更新的数据添加行级排他锁,直到事务结束才释放

事务1更新某行记录:事务2只能读取它更新之前的记录; 事务2不能更新该记录,直到事务1结束。

SERIALIZABLE

  • 事务对当前读取的数据添加表级共享锁,直到事务结束才释放

事务1读取表A的数据:事务2可以对表A进行查询,但是不能更新,直到事务1结束。

  • 事务对当前读取的数据添加表级排他锁,直到事务结束才释放

事务1更新表A中的数据:事务2不能读取表A中的数据,更不能进行更新,直到事务1结束。

相关文章

  • 搞懂Redis(四)-Redis事务

    事务本质:一组命令的集合 数据库事务与Redis事务 数据库事务数据库事务通过ACID(原子性.一致性.隔离性.持...

  • 百度外卖PHP面试

    数据库事务的四个特性原子性一致性隔离性持久性 数据库事务的隔离级别事务执行过程中,可能会出现以下几种情况:更新丢失...

  • MySQL系统学习(05):事务隔离性与隔离级别

    原文:MySQL系统学习(05):事务隔离性与隔离级别 数据库事务 提到事务,大家都不陌生。在刚开始学习数据库的时...

  • mysql事务

    一、事物的概念事务----一组有序的数据库操作。原子性:事务不可分割。隔离性:多个事务彼此隔离不受影响。一致性:状...

  • 3、事务

    事务具有四大特性:原子性、一致性、隔离性、持久性;两大属性:隔离级别、传播行为。1、事务四大特性数据库如果支持事务...

  • activeMQ-07消息的事务

    提到事务就会回想起,数据库的事务:ACID(原子性、一致性、隔离性、持续性);当然activeMQ也是有事务支持的...

  • MySQL事务隔离级别和实现原理,看这一篇就够了!!!

    经常提到数据库的事务,那你知道数据库还有事务隔离的说法吗,事务隔离还有隔离级别,那什么是事务隔离,隔离级别又是什么...

  • MySQL隔离级别

    隔离级别是针对数据库 ACID 中的I(隔离性)来说的 原子性 一致性 隔离性 持久性 隔离性 通常来说,一个事务...

  • mysql 事务 spring事务处理

    数据库事务 原子性 (Atomic) 一致性(Consistent) 隔离性(Insulation) 持久性(...

  • 面试题组织

    数据库 数据库事务特性 原子性(Atomicity )、一致性( Consistency )、隔离性或独立性( I...

网友评论

      本文标题:数据库事务的隔离性

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