- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
当并发遇到隔离的时候
周光辉
E-mail:symbol@21
2003 年9 月
摘要:在多用户数据库环境中,一个数据库中的多个事务可以并发地执行,同时地存取同一数据,如果不加以控制,
则每个事务都有可能与其它正在运行的事务发生冲突,进而出现一些特殊的“现象”(Phenomena),破坏数据库的完
整性。本文首先简单介绍一下与并发控制相关的一些基本概念,接着通过举例说明并发事务可能出现的特殊“现象”,
而后介绍与避免这些 “现象”出现有关的SQL-92 隔离级别,最后再阐述DB2 UDB 对SQL-92 隔离级别的具体实现及
其锁机制。本文主要面向关系数据库,且假设你已经熟悉数据库事务概念,熟悉使用基本SQL DML (SELECT、INSERT、
UPDATE、DELETE)。
关键词:并发性/并发控制;隔离级别;锁;一致性/完整性
基础概念
并发性:维护数据库一致性和数据完整性,但又允许多个应用程序同时访问同一数据,这样的特性称为并发性。
锁:是一种用来将数据资源(行、表、表空间等)与单个事务关联起来的机制,其用途是当某个资源与拥有它
的事务关联在一起时,控制其它事务如何与该资源交互。基本的锁类型有两种:共享锁(Share locks 简记为S 锁)
和互斥锁(Exclusive locks 简记为X 锁)。
粒度:锁定对象的大小称为锁定的粒度(granularity)。在关系数据库中,可以是这样一些逻辑单元(粒度从
小到大):行、表、表空间等。
短期锁:对某数据资源加锁后,对该数据资源的读、写操作结束后立即释放。
长期锁:对某数据资源加锁后一直保留到事务提交才释放。
锁兼容性:如果某一数据资源在被一事务加A 类型锁后,仍然允许另外的事务同时对其加B 类型锁,则认为这
A、B 两种锁是兼容的,否则则认为这两种锁不兼容。
并发事务会出现什么“现象”?
实验环境:Win2000 Server、IBM® DB2® Universal Database™ for Windows® V7.1+补丁包9 。
以下操作如无特殊说明均在DB2CLP (DB2 命令行处理器)中执行命令。
我们先举例子说明数据库的并发事务访问同一数据资源时会出现什么特殊“现象”。在这里,我们假设一个银行
系统数据库DB_BANK 中有以下两个表:
ACCOUNTS:帐号表,主要存放各帐号余额,主要信息有 (支行编号、帐号、余额等)
BRANCH_TOTALS:支行余额汇总表,主要存放个支行的总余额,主要信息有(支行编号、总余额等)
正常情况下,表ACCOUNTS 中属于某一支行的帐号余额总和会等于表BRANCH_TOTALS 中对应支行的总余额
CREATE DB DB_BANK
CONNECT TO DB_BANK
CREATE TABLE ACCOUNTS (BRANCH_ID VARCHAR(9),ACCT_ID VARCHAR(9) NOT NULL,BALANCE DECIMAL(9,2),PRIMARY KEY(ACCT_ID))
CREATE TABLE BRANCH_TOTALS (BRANCH_ID VARCHAR(9) NOT NULL,TOTAL_BALANCE DECIMAL(9,2),PRIMARY KEY(BRANCH_ID))
INSERT INTO ACCOUNTS VALUES(支行1, 帐号1,100)
INSERT INTO ACCOUNTS VALUES(支行1, 帐号2,200)
INSERT INTO ACCOUNTS VALUES(支行2, 帐号3,300)
INSERT INTO BRANCH_TOTALS(BRANCH_ID,TOTAL_BALANCE) (SELECT BRANCH_ID,SUM(BALANCE) FROM ACCOUNTS GROUP
1
BY BRANCH_ID)
现在我们开始举例说明并发事务可能出现的特殊“现象”。在开始之前,有必要强调一下,下来要描述的3 种“现
象”并不能称之为错误,而仅是“现象”,在有些应用中,这些“现象”是允许存在的。好,现在让我们开始,以下
红色部分代表事务1,蓝色部分代表事务2:
1)脏读(Dirty Read)
打开一个DB2CLP1,将表ACCOUNTS 中帐号1的余额加10
UPDATE COMMAND OPTIONS USING
您可能关注的文档
- 检验专业实践技能300题目.doc
- 2017执业医师考试真题和答案【600题】4.pdf
- 检体诊断试题目库.doc
- 机械加工固定工作体位对慢性肌肉骨骼损伤影响调查研究.pdf
- 马敏 SY-K膨胀纤维抗裂防水剂抗裂方案教案.doc
- 羊水栓塞及子宫破裂.ppt
- 呼吸系统必做题目.pdf
- 15执业药师考试大纲.docx
- 万学海文14考研农学大纲详解:动物生理.doc
- 第2章 PowerPoint 演示文稿 - 上海第二医科大学.ppt
- 陕西省延安市(新版)2024小学语文统编版小升初测试(评估卷)完整试卷(含答案).docx
- 陕西省宝鸡市(新版)2024小学语文统编版(五四制)小升初模拟(评估卷)完整试卷(含答案).docx
- 陕西省榆林市(新版)2024小学语文人教版小升初真题(强化卷)完整试卷(含答案).docx
- 青海省果洛藏族自治州(新版)2024小学语文统编版(五四制)小升初测试(备考卷)完整试卷(含答案).docx
- 青海省海北藏族自治州(新版)2024小学语文统编版小升初考试(强化卷)完整试卷(含答案).docx
- 陕西省西安市(新版)2024小学语文苏教版小升初核心能力评测(提分卷)完整试卷(含答案).docx
- 陕西省榆林市(新版)2024小学语文人教版小升初核心能力评测(冲刺卷)完整试卷(含答案).docx
- 陕西省延安市(新版)2024小学语文统编版(五四制)小升初测试(拓展卷)完整试卷(含答案).docx
- 陕西省榆林市(新版)2024小学语文人教版小升初质量检测(评估卷)完整试卷(含答案).docx
- 陕西省延安市(新版)2024小学语文苏教版小升初摸底(培优卷)完整试卷(含答案).docx
文档评论(0)