数据库四种事务隔离级别详解

四种数据库隔离级别如下所示:

1.READ-UNCOMMITTED(读取未提交内容)

由于在该隔离级别下即使事务未提交所做的修改也会对其他事务产生影响。所以该级别会出现数据脏读的发生。脏读:一个事务读取了另一个未提交的并行事务写的数据。

举例:老板给员工发工资,老板开启事务,然后想员工的账户转钱10000元。此时员工开启事务,查看账户余额发现多了10000元,然后提交事务。但是老板发现转多了,于是修改为转5000元,然后提交事务。最终员工账户多5000元而不是10000元,所以之前员工看到的10000元是脏数据。

2. READ-COMMITTED(读取提交内容)

在该隔离级别下事务没有提交是不会对其他事务产生影响的,只有提交的事务才会影响其他事务。所以避免了读脏数据。但是该级别会出现两次读取数据库数据不一致的情况(不可重复读)。

不可重复读:一个事务重新读取前面读取过的数据,发现两次读取数据不一样(该数据已经被另一个已提交的事务修改过)。

举例:老板给员工发工资。老板开启事务,然后向员工的账户里面转钱一万元,暂不提交事务。员工此时开启事务,查看账户余额,发现账户余额是0元,即老板尚未转钱。紧接着老板提交事务。然后员工觉得不对劲又查看了一次(员工的事务尚未提交),发现现在余额是一万元。即员工同一事务下两次相同查看操作得到的结果不一致。

3. REPEATABLE-READ(可重复读)在该隔离级别下两个事务同时进行,其中一个事务修改数据不会对另一个事务造成影响,即使修改的事务已经提交也不会对另一个事务造成影响。因此,该隔离级别不会出现不可重复读的情况。但是,该级别下会出现幻读。

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

举例:目前分数为90分以上的的学生有15人,事务A开启,并读取所有分数为90分以上的的学生人数,发现有15人,暂不提交事务。此时,事务B开启,并插入一条分数为99的学生记录,然后提交事务。此时,事务A再次读取90分以上的的学生,发现记录为16人,多了一个人。此时产生了幻读。

4.SERIERLIZED(可串行化)该事务隔离级别最严厉,在进行查询时就会对表或行加上共享锁,其他事务对该表将只能进行读操作,而不能进行写操作。

时间: 2024-08-06 03:45:03

数据库四种事务隔离级别详解的相关文章

SQL Server 事务隔离级别详解

原文:SQL Server 事务隔离级别详解 标签: SQL SEERVER/MSSQL SERVER/SQL/事务隔离级别选项/设计数据库事务级别 SQL 事务隔离级别 概述 隔离级别用于决定如果控制并发用户如何读写数据的操作,同时对性能也有一定的影响作用. 步骤 事务隔离级别通过影响读操作来间接地影响写操作:可以在回话级别上设置事务隔离级别也可以在查询(表级别)级别上设置事务隔离级别.事务隔离级别总共有6个隔离级别:READ UNCOMMITTED(未提交读,读脏),相当于(NOLOCK)R

MySQL事务隔离级别详解

SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的.低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销.Read Uncommitted(读取未提交内容) 在该隔离级别,所有事务都可以看到其他未提交事务的执行结果.本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少.读取未提交的数据,也被称之为脏读(Dirty Read).Read Committed(读取提交内容) 这是大多数数据库系统的默认隔离级别(但不是MySQL默认的).

四种事务隔离级别

面试白话文,事务隔离级别 事务具有原子性.一致性.隔离型.持久性. 使用Mysql数据库说明事务隔离级别: mysql支持事务的常用引擎是InnoDB mysql默认事务隔离级别可重复读(REPEATABLE-READ):使用show variables like 'tx_isolation' 查看 注:以下第二个事务,处于开启,未提交状态. 第一种:读未提交(read uncommitted) 第一个事务未提交更新的数据,第二个事务可以读到,这是读未提交. 第一个事务未提交更新的数据回滚,第二

MySQL的四种事务隔离级别

一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节.事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样.也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位. 2.一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 .比如A向B转账,不可能A扣了钱,B却没收到. 3.隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不

MySQL的四种事务隔离级别【转】

本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节.事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样.也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位.  2.一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 .比如A向B转账,不可能A扣了钱

mysql MySQL的四种事务隔离级别

一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节.事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样.也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位.  2.一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 .比如A向B转账,不可能A扣了钱,B却没收到. 3.隔离性(Isolation):同一时间,只允许一个事务请求同一数据,

MySQL四种事务隔离级别

一.事务(Transaction)的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节.事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样.也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位. 2.一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 .比如A向B转账,不可能A扣了钱,B却没收到. 3.隔离性(Isolation):同一时间,只允

30秒读懂mysql四种事务隔离级别

一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节.事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样.也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位.  2.一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 .比如A向B转账,不可能A扣了钱,B却没收到. 3.隔离性(Isolation):同一时间,只允许一个事务请求同一数据,

事务隔离级别详解

一.读未提交.(A事务能够读取到B事务对数据的增删改操作) 该事务级别会出现脏读问题. 二.读已提交.(该事务级别不会出现脏读问题) 只要一个事务A提交了,那么事务A中对数据库表的增删改操作,都会直接反映到事务B上,因此事务B中可以查看到最新的数据. 三.可重复读.(解决了不可重复读,即其他事务的提交,在该事务中看不见,也就是select时,别的事务提交不会影响select语句的结果,但是因为别的事务已经提交了,所以在数据库中是真实存在的,只是在该事务中给屏蔽了一眼,相当于障眼法,如果此时针对别