数据库中事务的隔离性

在标准SQL规范中,定义了四个事务隔离级别。

1.读未提交

read uncommitted.
可以读到数据在别的事务处理期间的所有可能值。

2.读已提交

read committed.
别的事务已提交的值都可以被读到。

3.可重复读

repeatable read.
只能读到该事务开始前的值。忽略其他事务的修改。

4.串行化

serializable.
是最严格的事务隔离级别,它要求所有的事务都被串行执行。

5.例子

为了方便说明问题,定义事务A:不断的读小明的语文成绩。事务B:将小明的语文成绩从原本的100分开始,不断加1,最终达到130分后提交事务。
t1时刻,事务A开始;t2时刻,事务B开始;t3时刻,事务B结束;t4时刻,事务A结束。
在整个过程中,事务A在各个隔离级别可能读到的情况见下表。

隔离级别 事务A可能读到的数据
读未提交 [100,130]中的任意值
读已提交 只可能读到100与130
可重复读 只能读到100
串行化 不可访问
时间: 2024-10-23 21:59:34

数据库中事务的隔离性的相关文章

Android数据库中事务操作方法之银行转账示例

本文实例讲述了Android数据库中事务操作方法之银行转账功能.分享给大家供大家参考,具体如下: 主java package com.itheima.transtation; import com.itheima.transtation.db.BankOpenHelper; import android.os.Bundle; import android.app.Activity; import android.database.sqlite.SQLiteDatabase; import and

深入分析MSSQL数据库中事务隔离级别和锁机制_MsSql

锁机制 NOLOCK和READPAST的区别. 1.       开启一个事务执行插入数据的操作. BEGIN TRAN t INSERT INTO Customer SELECT 'a','a' 2.       执行一条查询语句. SELECT * FROM Customer WITH (NOLOCK) 结果中显示"a"和"a".当1中事务回滚后,那么a将成为脏数据.(注:1中的事务未提交) .NOLOCK表明没有对数据表添加共享锁以阻止其它事务对数据表数据的修

深入分析MSSQL数据库中事务隔离级别和锁机制

锁机制 NOLOCK和READPAST的区别. 1.       开启一个事务执行插入数据的操作. BEGIN TRAN t INSERT INTO Customer SELECT 'a','a' 2.       执行一条查询语句. SELECT * FROM Customer WITH (NOLOCK) 结果中显示"a"和"a".当1中事务回滚后,那么a将成为脏数据.(注:1中的事务未提交) .NOLOCK表明没有对数据表添加共享锁以阻止其它事务对数据表数据的修

删除SQL数据库中事务日志方法

  DUMP TRANSACTION [数据库名] WITH NO_LOG BACKUP LOG [数据库名] WITH NO_LOG DBCC SHRINKDATABASE([数据库名])

数据库事务以及事务的隔离级别

事务:一个逻辑工作单元要成为事务 事务的四个属性:原子性(atomicity).一致性(consistency).隔离性(isolation)和持久性(durability). 1.原子性(Atomic)     最重要的原则,也是最容易理解的原则.被事务管理的所有方法,要么一起被提交,要么一起回滚. 2.一致性(Consistency)     事务在系统完整性中实施一致性,如果事务成功地完成,那么系统中所有变化将正确地应用,系统处于新有效状态.如果在事务中出现错误,那么系统中的所有变化将自动

事务的4个特性——ACID(原子性、一致性、隔离性和持久性)、更新丢失问题

事务的4个特性--ACID(原子性.一致性.隔离性和持久性) 事务是一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.事务通常以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK操作结束,COMMIT即提交,提交事务中所有的操作.事务正常结束.ROLLBACK即回滚,撤消已做的所有操作,回滚到事务开始时的状态. 对于事务可以举一个简单的例子:转账,有A和B两个用户,A用户转100到B用户,如下所示: A:---->支出100,则 A-100 B:----

SQLServer数据库中开启CDC导致事务日志空间被占满的原因

SQLServer中开启CDC之后,在某些情况下会导致事务日志空间被占满的现象为: 在执行增删改语句(产生事务日志)的过程中提示,The transaction log for database '***' is full due to 'REPLICATION'(数据库"***"的事务日志已满,原因为"REPLICATION"). CDC以及复制的基本原理粗略地讲,对于日志的使用步骤如下: 1,每当基础表(开启了CDC或者replication的表)产生事务性操作

SQL 数据库中的事务

11.4.1 事务的由来使用DELETE 命令或UPDATE 命令对数据库进行更新时一次只能操作一个表,这会带来数据库的数据不一致的问题.例如:企业取消了后勤部,需要将'后勤部'从department表中删除,要修改department 表,而employee 表中的部门编号与后勤部相对应的员工也应删除.因此,两个表都需要修,改这种修改只能通过两条DELETE 语句进行.假设后勤部编号为'1012' 第一条DELETE 语句修改department 表delete from department

数据库原理:事务的隔离等级 (ANSI标准)

并发与数据读取 当多个会话同时访问(操作)相同的数据时,将会出现一些意想不到的结果 ,这包括: – 脏读 -- Dirty reads – 不可重复度-- Non-repeatable reads – 幻读 -- Phantom reads 1.脏读 脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这 种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据.因为这个 数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据.看下面这个图示可能更好理解 :