事务隔离级别这词想必大家都听过,但要说个明明白白,可能不是每个人都能做到的,那就重温一下。
隔离级别的提出主要是为了有效保证并发读取数据的正确性,隔离级别主要有以下几种:
假设有一条数据A
一、读未提交(Read Uncommitted)也叫做未授权读取:
如果一个事务已经开始写数据A,则另外一个事务不允许同时对A进行写操作,但允许其他事务读A这条数据。通俗的说就是这条数据在任何时候都可以被读取到。
该种隔离级别会出现脏读取,但能保证更新不丢失。
二、读提交(Read Committed)也称为授权读取:
可以有多个读取事同时访问数据A,但若有一个写的事务正在操作数据A,则将会禁止其他任务事务访问A这条数据。
此种隔离级别不会出现脏读取,但会出现不可重复读取。
三、可重复读取(Repeatable Read):
可以有多个读取事同时访问数据A,但若有一读的事务正在访问A,则禁止其它写事务操作A 这条数据。若有写事务正在操作数据A则禁止任务事务访问A。
此种隔离级别可以防止不可重复读取和脏读取,但有可能出现幻读。
四、序列化(Serializable):
提供严格的事务隔离。它要求事务序列化执行,事务只能一个接着一个地去访问A,不能并发执行。此种隔离级别能防止不可重复读取、脏读取和幻读
隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。对于多数应用程序,可以优先考虑把数据库系统的隔离级别设为Read Committed。它能够避免脏读取,而且具有较好的并发性能。尽管它会导致不可重复读、虚读和第二类丢失更新这些并发问题,在可能出现这类问题的个别场合,可以由应用程序采用悲观锁或乐观锁来控制。
什么是脏读、不可重复读、幻读?
脏读:
例如一个写的事务T1在操作数据A,尚未提交,另一个读的事务T2又来读取A,此时事务T2读到的是未提交前的数据,待T1事务提交后,T2拿到的数据显然不是最新的数据,这时就造成脏读取的发生。
不可重复读:
例如事务T1第一次读到A的值为1后,另一个事务修改A的值为2,T1事务又重新读取A这条数据时得到的值为2,两次读取的值不一致,因此导致不可重复读的发生。
幻读:
例如事务T1按一定的条件查到A这条数据后,另一个事务又插入了一条符合该条件的数据B,当T1事务再次根据同样的条件查询时就会取得两条数据A和B,造成两次读取的结果不一致,出现幻读,也可称作不可重复读。
Oracle、DB2、MySql、SqlServer主流数据库的事务隔离级别
分享到:
相关推荐
7、分布式事务隔离级别的功能效果及测试验证方法 8、分布式事务原子性的功能效果及测试验证方法 9、分布式事务读一致性的功能效果及测试验证方法 10、分布式事务写一致性的功能效果及测试验证方法 11、分布式锁...
性,它保证同一事务内的可重复读,为此提供用户多种手动上锁语句,和设置事务隔离级别 第1章结构化查询语言简介 语句 所支持的数据类型 数据类型是可表示值的集。值的逻辑表示是字值。值的物理表示依赖于实现。...
另一个是新事务隔离级别(快照),增强系统" " " "的并发管理 " " " "支持在同一个硬件服务器上运行多个数据库实例 " " " "支持同一个实例上运行多个数据库,同一管理控制" " " "台完成所有管理工作,工具易于理解、...
当前数据库系统的主流是(关系数据库系统)。 8.DBMS的中文意思是(数据库管理系统)。 9.DBMS允许用户把一个或多个数据库操作组成(事务),它是一组按顺序执行的操作单位。 10.在E-R图中,实体用(矩形)表示,...
实现多数SQL92的标准,包括事务(原子性、一致性、隔离性和持久性)、触发器和大多数的复杂查询。 不对插入或者更新的数据进行类型检查,你可以将字符串插入到整数列中(这个可能让有些用户不太适应)。 支持...
关键词: ACID , AUTOCOMMIT ,事务隔离级别死锁,死锁,分布分布式事务 :hammer:其他关系型数据库Nosql数据库整理主流Nosql数据库知识点。 :books: :hundred_points: :high_voltage: -关键词:内存淘汰,事件,...
SQLite 数据库简介 ...这里的ACID是指数据库事务正确执行的4个基本要素,即原子性(Atomicity)、致性 ( Consistency)、 隔离性( lolation). 持久性( Durabilily )。它能够支持Windows/Linux/UNIX等主流的操作系统,
为了应对这些问题,主流数据库都提供了锁机制,并引入了事务隔离级别的概念。 这里我们都不作解释了,拿这些关键词一搜,网上大把大把的。 但是,就于具体开发过程而言,一般分为悲观锁和乐观锁两种方式来解决并发...
10.3.3 事务的隔离级别 10.3.4 事务的使用 10.4 自动增长字段 10.4.1 MySQL中的自动增长字段 10.4.2 MS SQL Server中的自动增长字段 10.4.3 Oracle中的自动增长字段 10.4.4 DB2中的自动增长字段 ...
10.3.3 事务的隔离级别 10.3.4 事务的使用 10.4 自动增长字段 10.4.1 MySQL中的自动增长字段 10.4.2 MS SQL Server中的自动增长字段 10.4.3 Oracle中的自动增长字段 10.4.4 DB2中的自动增长字段 ...
10.3.3 事务的隔离级别 10.3.4 事务的使用 10.4 自动增长字段 10.4.1 MySQL中的自动增长字段 10.4.2 MS SQL Server中的自动增长字段 10.4.3 Oracle中的自动增长字段 10.4.4 DB2中的自动增长字段 ...
10.3.3 事务的隔离级别 10.3.4 事务的使用 10.4 自动增长字段 10.4.1 MySQL中的自动增长字段 10.4.2 MS SQL Server中的自动增长字段 10.4.3 Oracle中的自动增长字段 10.4.4 DB2中的自动增长字段 ...
10.3.3 事务的隔离级别 10.3.4 事务的使用 10.4 自动增长字段 10.4.1 MySQL中的自动增长字段 10.4.2 MS SQL Server中的自动增长字段 10.4.3 Oracle中的自动增长字段 10.4.4 DB2中的自动增长字段 ...
核心产品包括应用开发和应用工具,数据库服务器以及中间件。所有的产品都基于ANSI标准的SQL。 l Informix的一系列众多的应用开发和应用工具适用于各种不同的应用类型和开发组织。 l Informix的服务器和中间件产品...
TranswarpInceptor可提供完整的SQL支持,支持主流的SQL模块化扩展,兼容通用开发框架和工具,支持事务 特性保证数据的准确性,允许多租户的隔离与管理,且能够利用内存或者SSD来加速数据的读取,支持与关系 型数据库...
另一台服务器放置在内网,向省公司用户提供WEB服务,一台数据库服务器放 置在内网,与内网的WEB服务器放置在同一网段,负责为内网与外网提供数据服务,外网 Web服务不允许直接访问数据库,而是通过隔离设备。...
4.3 事务隔离、传播属性的设置 198 4.3.1 并发访问和隔离 198 4.3.2 事务属性 199 4.4 EJB的事务管理 201 4.4.1 容器管理事务(CMT) 201 4.4.2 Bean管理事务(BMT) 201 4.5 事务超时设置 201 4.6 本章小结 203 第5章 ...
Mysql是主流的开源关系型数据库,提供高性能的数据存储服务。在做后端开发时,有时会遇到性能瓶颈,这些瓶颈有时并不是来自应用本身,而是来自数据库层面。 所以所以掌握Mysql的一些底层原理有助于我们更好地理解...
Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。 ☆ Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图...