数据库原理-事务基本概念

2018-1-9 by Atlas

  • 数据库访问

read(X):把数据X,从磁盘的数据库中读到内存的缓冲区中。
write(X):把数据X,从内存的缓存区写回磁盘的数据库。

  • ACID性质

1、原子性(Atomicity)
一个事务对数据的所有操作,是一个不可分割的工作单元。这些操作要么全部执行,要么什么也不做(就对DB的效果而言)。
保证原子性是数据库系统本身的职责,由DBMS的事务管理子系统实现。
2、一致性(Consistency)
一个事务独立执行的结果,应保持数据库的一致性,即数据不会因事务的执行而遭受破坏。
确保单个事务的一致性是编写事务的应用程序员的职责,在系统运行时,由DBMS的完整性子系统执行测试任务。
3、隔离性(Isolation)
在多个事务并发执行时,系统应保证与这些事务先后单独执行时的结果一样,此时称事务达到了隔离性的要求。也就是在多个事务并发执行时,保证执行结果是正确的,如同单用户环境一样。
隔离性是由DBMS的并发控制子系统实现的。
4、持久性(Durability)
一个事务一旦完成全部操作后,它对数据库的所有更新应永久地反映在数据库中,不会丢失。即使以后系统发生故障,也是如此。
持久性由DBMS的恢复管理子系统实现的。

  • 检查点技术

REDO(重做)和UNDO(撤销)处理,实际上是采用检查点(Checkpoint)方法实现的。
两次检查点和其中间故障点把事务分为五类:
T1:事务到达第一次检查点前已经完成。
T2:事务在第一次检查点前开始直到故障点前已经完成。
T3:事务在第一次检查点前开始直到故障点没有完成。
T4:事务在第一次检查点后开始直到故障点前已经完成。
T5:事务在第一次检查点后开始直到故障点没有完成。
故障处理:

  • 事务T1不必恢复。因为它们的更新已经在第一次检查点时写到数据库中了。
  • 事务T2和事务T4必须重做(REDO)。因为它们结束在下一个检查点之前。它们对DB的修改仍在内存缓冲区,还未写到磁盘。
  • 事务T3和事务T5必须撤销(UNDO)。因为它们还未做完,必须撤销事务已对DB作的修改。
  • 数据库并发操作问题
  • 丢失更新问题:
    数据库中A的初值是100,事务T1对A的值减30,事务T2对A的值增加1倍。如果执行次序是先T1后T2,那么结果A的值是140。如果先执行T2后T1,那么A的值是170。这两种情况都应该是正确的。但事务T1读A的值执行中事务T2也读A的值执行,先执行完的事务更新的值被后执行完的事务更新的值覆盖,结果丢失了先执行完的事务对数据库的更新操作。因而这个并发操作是不正确的。
  • 读脏数据问题:
    (1)数据库中A的初值是100,事务T1把A的值修改为70,但尚未提交(即未做COMMIT操作),事务T2紧跟着读未提交的A值(70)。随后,事务T1做ROLLBACK操作,把A的值恢复为100。而事务T2仍在使用被撤销了的A值(70)。在数据库技术中,把未提交的随后被撤销的数据称为“脏数据”。
    (2)数据库中A的初值是100,事务T1把A的值修改为70,但尚未提交(即未做COMMIT操作),事务T2紧跟着读未提交的A值(70)。事务T2对A的值增加1倍,执行完的事务T2对数据库作更新操作。随后,事务T1做ROLLBACK操作,把A的值恢复为100。结果丢失了事务T2对数据库的更新操作。破坏了数据库的完整性。
  • 不可重复读问题:
    数据库中A的初值是100,事务T1需要两次读取同一数据项A,但是在两次读操作的间隔中,另一个事务T2改变了A的值。因此,T1在两次读同一数据项A时却读出了不同的值。
  • 封锁技术

锁(Lock)是一个与数据项相关的变量,对可能应用于该数据项上的操作而言,锁描述了该数据项的状态。
通常在数据库中每个数据项都有一个锁。锁的作用是使并发事务对数据库中数据项的访问能够同步。封锁技术中主要有两种封锁:排他型封锁和共享型封锁。

  • 排他型封锁(X锁):
    Exclusive Lock 简称X锁,又称写锁。
    定义:如果事务T对某个数据R(可以是数据项、记录、数据集乃至整个数据库)实现了X锁,那么在T对数据R解除封锁之前,不允许其他事务T再对该数据加任何类型的锁。这种锁称为“X锁”。
    使用X锁的操作有两个:
    (1)申请X锁操作“XFIND R”:表示事务对数据R申请加X锁,若成功,则可以读或写数据R;如果不成功,那么这个事务将进入等待队列,一直到获准X锁,事务才能继续做下去。
    (2)解除X锁操作“XRELEASE R”:表示事务要解除对数据R的X锁。
    在一个事务对数据加上X锁后,并且对数据进行了修改,如果过早地解锁,有可能使其他事务读了未提交数据(且随后被回退),引起丢失其他事务的更新。为了解决这个问题,X锁的解除操作应该合并到事务的结束(COMMIT或ROLLBACK)操作中。也就是系统中没有解除X锁操作的语句,在COMMIT语句和ROLLBACK语句中包含了解除X锁的操作。
  • 共享型封锁(S锁):
    Shared Lock 简称S锁,又称读锁。
    定义:如果事务T对某数据加上S锁后,仍允许其他事务再对该数据加S锁,但在对数据的所有S锁都解除之前决不允许任何事务对该数据加X锁。
    使用S锁的操作有三个:
    (1)申请S锁操作“SFIND R”:表示事务对数据R申请加S锁,若成功,则可以读数据R,但不可以写数据R;如果不成功,那么这个事务将进入等待队列,一直到获准S锁,事务才能继续做下去。
    (2)升级和写操作“UPDX R”:表示事务要把对数据R的S锁升级为X锁,若成功则更新数据R,否则这个事务进入等待队列。
    (3)解除S锁操作“SRELEASE R”:表示事务要解除对数据R的S锁。
    可以看出,获准S锁的事务只能读数据,不能更新数据,若有更新,则先要把S锁升级为X锁。另外,由于S锁只允许读数据,因此解除S锁的操作不必要合并到事务的结束操作中去,可以随时根据需要解除S锁。
  • 封锁粒度:
    定义:封锁对象的大小称为封锁粒度。
    封锁的对象可以是逻辑单元,也可以是物理单元。在数据库中,封锁对象可以是属性值、属性值集合、元组、关系、索引项、整个索引、整个数据库等逻辑单元;也可以是页(数据页或索引页)、块等物理单元。
    封锁粒度与系统的并发度和并发控制的开销密切相关。封锁的粒度越大,并发度也就越小,但同时系统的开销也就越小;相反,封锁的粒度越小,并发度越高,但系统的开销也就越大。
  • 事务的存取模式

(1)READ ONLY(只读型):事务对数据库的操作只能是读操作。定义这个模式后,表示随后的事务均是只读型。
(2)READ WRITE(读写型):事务对数据的操作可以是读操作,也可以是写操作。定义这个模式后,表示随后的事务均是读写型。在程序开始时默认这种模式。

  • 事务的隔离级别

(1)SERIALIZEABLE(可串行化):允许事务与其他事务并发执行,但系统必须保证并发调用是可串行化,不致发生错误。
(2)REPEATABLE READ(可重复读):只允许事务读已提交的数据,并且在两次读同一数据时不允许其他事务修改此数据。
(3)READ COMMITTED(读提交数据):允许事务读已提交的数据,但不要求“可重复读”。
(4)READ UNCOMMITTED(可以读未提交数据):允许事务读已提交或未提交的数据。

  • 语句定义:
    SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
    SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
    SET TRANSACTION ISOLATION LEVEL READ COMMITTED
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

摘抄自:《数据库原理》

原文地址:http://blog.51cto.com/damon188/2059227

时间: 2024-08-01 12:46:25

数据库原理-事务基本概念的相关文章

数据库原理--事务(一)

一.什么是事务 通俗的讲,事务是指一组数据库操作. 二.事物的基本性质 ACID A(atom)原子性:事务要么都做,要么都不做 C(consistency)一致性:事务的结果必须是从一个一致性状态到另外一个一致性状态,中间出现故障就回滚 I(Isolation)隔离性:各个事务间不能有干扰 D()持续性:事务作用的结果写回到数据库后就一直保存

数据库原理--事务并发控制

事务并发:指事务能够在同一时间同时执行 存在的问题: 1.丢失修改(T1和T2同时修改,T2的结果将T1的结果覆盖) 2.读脏数据(T1修改后,T2读取,但是T1撤销修改) 3.不能重复读(T1前后读的数据不同) 并发控制: 锁:互斥锁(X).共享锁(S).U锁 2段锁协议:分两个阶段,第一阶段只能申请锁:第二阶段只能释放锁 注意:2段锁并不是和一次性封锁一样,一次性对所有数据加锁,所以可能存在死锁出现

数据库原理相关知识

数据库原理相关知识 made by @杨领well([email protected]) 一.基础知识 1. 简述数据库系统的特点. 数据结构化 : 这是数据库系统与文件系统的本质区别. 数据的共享性高.冗余度低且易扩充 : 数据共享可以大大减少数据冗余, 节约存储空间.数据共享还能够避免数据之间的不相容性和不一致性. 数据的独立性高 : 数据独立性包括物理独立性和逻辑独立性. 数据由数据库管理系统统一管理和控制 : 数据的安全性保护(保护数据以防止不合法使用造成的数据泄密和破坏).数据的完整性

数据库事务的概念及其实现原理

目录 前言 1. 认识事务 1.1 为什么需要数据库事务 1.2 什么是数据库事务 1.3 事务如何解决问题 1.4 事务的ACID特性以及实现原理概述 2.并发异常与并发控制技术 2.1 常见的并发异常 2.2 事务的隔离级别 2.3 事务隔离性的实现--常见的并发控制技术 3. 故障与故障恢复技术 3.1 为什么需要故障恢复技术 3.2 事务的执行过程以及可能产生的问题 3.3 日志的种类和格式 3.4 日志恢复的核心思想 3.5 事务故障中止/正常回滚的恢复流程 3.6 系统崩溃时的恢复过

4.事务提交过程,事务基本概念,Oracle中的事务生命周期,保存点savepoint,数据库的隔离级别

 事务提交过程 事务 基本概念 概念:一个或者多个DML语言组成 特点:要么都成功,要么都失败 事务的隔离性:多个客户端同时操作数据库的时候,要隔离它们的操作, 否则出现:脏读  不可重复读  幻读 Oracle默认情况下,事务是打开的 commit案例: SQL> create table t1(tid int,tname varchar2(20)); 表已创建. SQL> select * from tab; TNAME                          TABTYPE

《数据库原理》复习总结

<数据库原理>复习总结 数据库技术就是主要研究如何科学的组织和存储数据,高效的获取和处理数据,并可以满足用户各种不同的信息需求的技术,因为对数据库技术的需求非常大,所以学习这门课的知识和技术是非常必要的,应熟练弄清,掌握数据,数据管理,数据库,数据模型和概念模型的等专业术语的内涵. 第1章 绪论 1.掌握数据库.数据库管理系统.数据库系统(组成)的概念 2.了解数据库技术发展的三个阶段 3.掌握三级模式及二级映像的概念 4.理解数据库管理系统的主要功能 知识点: 数据:数据库系统研究和处理的对

《数据库原理与应用》复习试题归纳

  <数据库原理与应用>复习试题归纳 一.单项选择题(每小题1分,共20分) 1.数据库的三个模式中,真正存储数据的是( )A.内模式  B.模式  C.外模式  D.三者皆存储数据 2.在数据库的三个模式中(  ) A.内模式只有一个,而模式和外模式可以有多个 B.模式只有一个,而内模式和外模式可以有多个 C.模式和内模式只有一个,而外模式可以有多个 D.均只有一个 3.关于模式,下列说法中错误的是(   ) A.数据库的全局逻辑结构描述   B.数据库的框架 C.一组模式的集合      

数据库原理常见问答

常见问答 1.    试述数据库系统有哪些特点(特别是相对于文件系统)? ①数据共享,特别是实现数据字段的共享.②较高的数据独立性.③面向整体的数据结构话模型.④可控冗余度.⑤数据的统一管理和控制. 2.    简述关系的性质? ①任意两个元组不能全同.②元组是非排序的.③属性是非排序的.④属性必须有不同的名称,而不同属性可以来自一个域.⑤同一属性名处的诸属性值(同列)是同类型数据,且必须来自同一个域. 3.数据库设计过程包括哪几个主要阶段?哪些阶段独立于数据库管理系统? 哪些阶段依赖于数据库管

数据库原理分析(强烈推荐)

转自:https://blog.csdn.net/ptsx0607/article/details/68941750 一提到关系型数据库,我禁不住想:有些东西被忽视了.关系型数据库无处不在,而且种类繁多,从小巧实用的 SQLite 到强大的 Teradata .但很少有文章讲解数据库是如何工作的.你可以自己谷歌/百度一下『关系型数据库原理』,看看结果多么的稀少[译者注:百度为您找到相关结果约1,850,000个-] ,而且找到的那些文章都很短.现在如果你查找最近时髦的技术(大数据.NoSQL或J