以前自己看过以为自己 了解了,但在工作当中运用的时候还是非常模糊,先记录一下备查.
事务的四个属性:
原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。
1.原子性 (Atomic)
最重要的原则,也是最容易理解的原则。被事务管理的所有方法,要么一起被提交,要么一起回滚。
2.一致性 (Consistency)
事务在系统完整性中实施一致性,如果事务成功地完成,那么系统中所有变化将正确地应用,系统处于新有效状态。如果在事务中出现错误,那么系统中的所有变化将自动地回滚,系统返回到原始状态。
3.隔离性 (Isolation)
在隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。重要的是,在隔离状态执行事务,系统的状态有可能是不一致的,在结束事务前,应确保系统处于一致状态。但是在每个单独的事务中,系统的状态可能会发生变化。如果事务不是在隔离状态运行,它就可能从系统中访问数据,而系统可能处于不一致状态。通过提供事务隔离,可以阻止这类事件的发生。
4.持久性 (Durability)
持久性意味着一旦事务执行成功,在系统中产生的所有变化将是永久的。应该存在一些检查点防止在系统失败时丢失信息。甚至硬件本身失败,系统的状态仍能通过在日志中记录事务完成的任务进行重建。
数据库锁概念:
在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改。加了共享锁的数据对象可以被其他事务读取,但不能修改。数据库利用这两种基本的锁类型来对数据库的事务进行并发控制。
从程序员的角度看,锁分为以下两种类型:
1.乐观锁(Optimistic Lock)
乐观锁假定在处理数据时,不需要在应用程序的代码中做任何事情就可以直接在记录上加锁、即完全依靠数据库来管理锁的工作。一般情况下,当执行事务处理时SQL Server会自动对事务处理范围内更新到的表做锁定。
2.悲观锁(Pessimistic Lock)
悲观锁对数据库系统的自动管理不感冒,需要程序员直接管理数据或对象上的加锁处理,并负责获取、共享和放弃正在使用的数据上的任何锁。
事务隔离级别
一个事务必须与其它事务进行隔离的程度。较低的隔离级别可以增加并发,但代价是降低数据的正确性。相反,较高的隔离级别可以确保数据的正确性,但可能对并发产生负面影响。
数据库并发操作存在的异常情况:
1. 更新丢失(Lost update):两个事务都同时更新一行数据但是第二个事务却中途失败退出导致对数据两个修改都失效了这是系统没有执行任何锁操作因此并发事务并没有被隔离开来
2. 脏读取(Dirty Reads):一个事务开始读取了某行数据但是另外一个事务已经更新了此数据但没有能够及时提交。这是相当危险很可能所有操作都被回滚
3. 不可重复读取(Non-repeatable Reads):一个事务对同一行数据重复读取两次但是却得到了不同结果。例如在两次读取中途有另外一个事务对该行数据进行了修改并提交
4. 两次更新问题(Second lost updates problem):无法重复读取特例,有两个并发事务同时读取同一行数据然后其中一个对它进行修改提交而另一个也进行了修改提交这就会造成第一次写操作失效
5. 幻读(Phantom Reads):也称为幻像(幻影)。事务在操作过程中进行两次查询,第二次查询结果包含了第一次查询中未出现的数据(这里并不要求两次查询SQL语句相同)这是因为在两次查询过程中有另外一个事务插入数据造成的
为了避免上面出现几种情况在标准SQL规范中定义了4个事务隔离级别,不同隔离级别对事务处理不同
。
1.未授权读取(Read Uncommitted):也称未提交读。允许脏读取但不允许更新丢失,如果一个事务已经开始写数据则另外一个数据则不允许同时进行写操作但允许其他事务读此行数据。该隔离级别可以通过“排他写锁”实现。事务隔离的最低级别,仅可保证不读取物理损坏的数据。与READ COMMITTED 隔离级相反,它允许读取已经被其它用户修改但尚未提交确定的数据。
2. 授权读取(Read Committed):也称提交读。允许不可重复读取但不允许脏读取。这可以通过“瞬间共享读锁”和“排他写锁”实现,读取数据的事务允许其他事务继续访问该行数据,但是未提交写事务将会禁止其他事务访问该行。SQL Server 默认的级别。在此隔离级下,SELECT 命令不会返回尚未提交(Committed) 的数据,也不能返回脏数据。
3. 可重复读取(Repeatable Read):禁止不可重复读取和脏读取。但是有时可能出现幻影数据,这可以通过“共享读锁”和“排他写锁”实现,读取数据事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。在此隔离级下,用SELECT 命令读取的数据在整个命令执行过程中不会被更改。此选项会影响系统的效能,非必要情况最好不用此隔离级。
4. 串行(Serializable):也称可串行读。提供严格的事务隔离,它要求事务序列化执行,事务只能一个接着一个地执行,但不能并发执行。如果仅仅通过 “行级锁”是无法实现事务序列化的,必须通过其他机制保证新插入的数据不会被刚执行查询操作事务访问到。事务隔离的最高级别,事务之间完全隔离。如果事务在可串行读隔离级别上运行,则可以保证任何并发重叠事务均是串行的。
隔离级别 更新丢失 脏读取 重复读取 幻读
未授权读取 N Y Y Y
授权读取 N N Y Y
可重复读取 N N N Y
串行 N N N N
分享到:
相关推荐
首先,数据是描述事物的符号记录,包括数字、文字、图形、图像等各种形式。数据的语义与其表示密切相关,同一数值在不同情境下有不同的含义。例如,数字500可以代表价格、人数或重量。随着计算机技术的发展,数据...
涵盖了数据库系统的基本概念、数据库管理系统、数据库系统的特点、概念模型、实体、属性、码、域、实体型、实体集、联系、关系模型、关系数据模型、关系数据模型的操纵与完整性约束、数据库系统三级模式结构、外模式...
数据库原理是IT领域中至关重要的知识点,涉及到数据的组织、存储和管理,是现代信息技术的基石之一。以下是对给定文件中的数据库原理知识点的详细解析: ### 一、数据库概念 1. **数据**:数据库中存储的基本元素...
### 四级数据库知识点解析 #### 一、引论 ##### 1. 数据库技术的发展背景 - **数据库技术起源**:20世纪60年代,随着计算机技术的进步和社会信息化需求的增长,数据库技术应运而生,成为信息系统的核心技术之一。...
### 数据库概论知识点 #### 一、选择题解析 1. **删除操作**:“DELETE FROM 表名”表示从数据库的基本表...以上是对给定文件中的知识点进行了详细的解释和扩展,旨在帮助读者更好地理解和掌握数据库系统的相关知识。
数据库知识点数据库知识点.doc 数据库知识点是信息系统的核心技术和重要基础,它产生于20世纪60年代。计算机科学与技术学科划分为四个专业方向:计算机科学(CS)、计算机工程(CE)、软件工程(SE)、信息技术(IT...
### 数据库原理知识点总结 #### 一、数据库系统概述 **1. 数据**: 在这里指的是描述事物的符号记录,它可以是数字、文字、图形、图像、声音等多种形式。 **2. 数据库(DB)**: 是长期储存在计算机内的、有组织的...
### 数据库及应用知识要点详解 #### 数据管理的发展历程与特点 - **人工管理阶段**:数据不...通过对这些知识点的深入理解,我们可以更好地掌握数据库的基本原理和技术,从而在实际工作中有效地管理和利用数据资源。
### 数据库系统概论知识点详解 #### 一、基本概念 ...通过以上介绍,我们可以了解到数据库系统的基本概念、特点以及数据模型的相关知识点。这些基础知识对于理解现代数据库系统的架构和运作机制至关重要。
定义:描述事物的符号记录 种类:文字、图形、图像、声音 特点:数据与其语义是不可分的 1.1.2. 数据库(Database) 定义:数据库是长期存储在计算机内、有组织的、可大量共享的达两数据集合 特征 数据按一定的数据...
数据库技术及应用的知识点涵盖了从基本概念到实际应用的诸多方面。首先,我们要理解数据库的基本概念,数据是客观事物的抽象表示,而信息是对数据的加工处理,具有决策价值。数据库则是存储这些数据的集合,能够被多...
"大学数据库全面知识点资料整理.pdf" 本资源摘要信息涵盖大学数据库的全面知识点,包括数据库管理系统、数据库系统、数据库管理技术、数据结构、数据模型、数据操作、完整性约束、关系模型、实体联系图、数据独立性...
《数据库原理》的知识点涵盖了数据库的基本概念、数据管理技术的发展、数据模型、数据库系统结构、数据库管理系统以及关系数据库的相关理论。 1. **基本概念**: - **数据**:是描述客观事物的符号记录。 - **...
《数据库原理》的知识点涵盖了数据库的基础概念、发展历史、数据模型、数据库系统结构以及数据库管理系统的主要功能和组成。以下是对这些知识点的详细说明: 一、数据库基础知识 1. 数据:数据是描述客观事物的符号...
数据库知识点总结是数据库管理系统(DBMS)的核心部分,它包括数据库系统、数据库模型、数据模型分类、E-R图设计、范式设计、数据库安装、数据库管理、SQL语言分类等方面的知识点。 数据库系统是由数据库及其管理...
数据库技术与应用知识点总结 本文档总结了数据库技术与应用的知识点,涵盖了数据库基础、数据模型、关系模型、Access 数据库与表的操作、查询等方面的知识点。 数据库基础 数据库技术是指对客观事物的数量、属性...