美文网首页
事务处理、隔离级别,事务调度算法

事务处理、隔离级别,事务调度算法

作者: FrankXu0808 | 来源:发表于2020-04-01 23:38 被阅读0次

事务特性:

ACID特性

1.原子性atomicuty

即是事务在提交的过程中,要么全部提交,要么全部不提交,成功提交之后,持久化更新;提交失败,本次事务全部回滚。【非0即1】这是保证数据一致性的关键

2.一致性consistency

在事务提交之后,数据处于一致性的状态。

3.隔离性isolation

每一个事务相对其他事务来说是黑盒的,透明的,独立的。各个事务之间的执行是不会交叉的。

4.持久性durability

在一次事务提交之后,对数据表的影响就是永久的,直到被其他事务再次修改。
事务隔离级别:
数据库系统有4个隔离级别,从低到高分别是:未提交读、已提交读、可重复读、串行化。

1、未提交读Read uncommited,问题:脏读。

不添加共享锁。分为2种情况:

①情况1:事务B可以在事务A对记录的读取过程中修改同一记录,可能会导致事务A读取的数据是一个被破坏的或者是不完整不正确的数据。

②情况2:在事务A中可以读取到事务B中修改过的数据,但此时事务B尚未提交。可能会发生的问题就是脏读。

2、已提交读Read commited,问题:不可重复读。

在事务A中读取数据时对记录添加共享锁,待读取结束后才会立即释放该锁。那么事务B对该数据的修改要一直等待,直到A中的读取过程结束,但不是整个事务A的结束。所以,可能发生的问题就是事务A在不同阶段对同一记录的读取结果可能是不同的。

3、可重复读Repeatable read,问题:幻读。

对于读出的记录,添加共享锁直到事务A结束。事务B试图对这个记录的修改会一直等待,直到整个事务A结束。InnoDB 默认的事务隔离级别就是可重复读。可能发生的问题:当执行一个范围查询时,可能会发生幻读(解决幻读的方法:增加范围锁RangeS,锁定检索范围为只读,这样就避免了幻读)。

4、串行化Serializable,问题:没有问题,上述3种级别中的脏读、不可重复读、幻读都不会发生。

添加范围锁(比如表锁,页锁等),直到事务A结束。以此阻止事务B对此范围内的修改操作。

(原文链接:https://blog.csdn.net/u012556994/article/details/81154022

事务隔离级别与并发问题

事务隔离级别
image.png

调度算法:
锁技术控制并发操作
锁类型:

X锁,写锁,排他锁,exclusive locks用于数据写操作前进行锁定。如果事务T对数据A加上X锁,就只允许事务T读取和修改数据A,其他事务不能对数据A再加任何锁,但可以读。直到事务T释放A上的锁才能

S锁,读锁,共享锁,share locks 用于数据读操作前进行锁定。如果事务T对数据A加上了S锁,事务T就只能读取数据A但不可以修改,其他事务可以再对数据A加S锁执行读取操作,只要数据A上有S锁,任何事物都只能对其加S锁而不能加X锁修改。

相关文章

  • 事务处理、隔离级别,事务调度算法

    事务特性: ACID特性 1.原子性atomicuty 即是事务在提交的过程中,要么全部提交,要么全部不提交,成功...

  • 关于Spring的事务Transactional,锁同步,并发线

    Spring事务传播机制和数据库隔离级别 在标准SQL规范中定义了4个事务隔离级别,不同隔离级别对事务处理不同 。...

  • 数据库锁及事务整理

    参考文档 MySQL的事务和隔离级别理解事务 - MySQL 事务处理机制《MySQL技术内幕》读书笔记一文说尽M...

  • Spring 中的事务隔离级别

    什么是事务隔离级别? 事务隔离级别是对事务 4 大特性中隔离性的具体体现,使用事务隔离级别可以控制并发事务在同时执...

  • MySQL_tx_isolation

    事务隔离级别 一、数据库事务隔离级别数据库事务的隔离级别有4个,由低到高依次为Read uncommitted 、...

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

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

  • 面试题

    基础知识 1、事务隔离级别 补充: 1、事务隔离级别为读提交时,写数据只会锁住相应的行 2、事务隔离级别为可重复读...

  • 数据库事务相关

    事务隔离级别(tx_isolation)mysql 有四级事务隔离级别 每个级别都有字符或数字编号 级别symbo...

  • Mysql事务

    事务隔离级别 事务隔离级别有四种:read-uncomitted,read-commited,repeatable...

  • mysql事务-2020-11-21

    use test查询事务隔离级别:select @@tx_isolation; 设置事务隔离级别://全局的set...

网友评论

      本文标题:事务处理、隔离级别,事务调度算法

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