`
zwt2001267
  • 浏览: 435243 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

DB2数据库中的锁和并发性控制

阅读更多

现在的DB2 UDB系统中, 主要通过锁和隔离级别这两个主要的工具来控制并发连接,维护数据库中的数据在高并发的环境下的安全。

我们在这里将简要的阐述一下锁和隔离级别。

锁:

DB2 UDB中, 锁的主要作用对象是表和行, 其他如表空间和索引也是锁的对象, 但是因为其多为系统控制, 管理员和用户使用较少,在这里就不涉及了。

对于行级锁和表级锁, 它们的区别不言而喻, 主要是锁的对象不同。 当然锁对象的不同连带也会影响DB2的并发能力。

DB2中的表级锁主要有以下几种:

1. IS锁: 此锁作用于整个表,表示拥有此锁的应用连接要读取表中的某些数据, 但是在此应用连接读取具体的数据时, 还必须获得该行的行级锁;

2. IX锁: 此锁作用于整个表,表示拥有此锁的应用连接需要独占使用表中的某些数据, 但是在此应用连接独占使用具体的数据时, 还必须获得该行上相应的行级锁;

3. SIX锁: 此锁是锁转换的产物,表示应用连接拥有S和IX锁的特性;

4. S锁: 此锁作用于整个表, 拥有此锁的应用连接可以读取表中的任何纪录;

5. U锁: 此锁作用于整个表, 拥有此锁的应用连接可以读取表中的任何纪录,也可以更新表中的纪录, 但是更新时需要再获得X锁; 此锁主要在“select … with update”语句建立的可更新游标中起作用, 其他的应用可以读取表中的纪录, 但是不能更新它;

6. X锁: 此锁作用于整个表, 拥有此锁的应用连接独占的使用表中的任何纪录;可以进行更新或其他操作;

7. Z锁: 此锁作用于整个表, 也称超级独占锁,主要是在象修改表的定义、 删除表这一类的语句中会使用。 拥有此锁的应用连接对该表有完全的控制权。 其他的任何应用不能读取或更新表中的任何纪录。

在这里我们主要要看一下 IS/IX/SIX这三个锁。 在这三个锁中IS/IX本身并不具备使得应用连接可以读取或更新纪录的能力,应用连接要读取和更新纪录时, 需要再得到相应的行级锁; 反之亦然, 任何应用要获得行级锁操作数据记录之前, 也必须获得某个相应的表级锁。 SIX锁也是类似的情况。这就是为什麽在很多情况下我们使用的是行级锁, 但是用快照(SNAPSHOT)等工具却能够看到有表级锁存在的原因。

那麽DB2中又有哪些行级锁呢? 让我们来看下面的这张图:

那麽DB2中又有哪些行级锁呢?

此图中列出了DB2中包含的行级锁。 表中的第三列指出, 要获得此行级锁之前, 需要预先获得的表级锁, 这里列出的是最低要求。

这六个行级锁的主要功能如下:

1. S锁:此行级锁的拥有者可以读取该行的信息;

2. U锁:此行级锁的拥有者可以读取该行的信息,如果要更新该行,则仍然需要一个行级的X锁;其他的应用只能读取该行的信息;此锁主要是用于FOR UPDATE的游标。

3. X锁:此行级锁的拥有者可以更新该行的纪录,其他的应用不能连接此行的信息;

4. W锁:此锁和X锁类似,不同之处是此锁和NW锁兼容;

5. NS锁:类似于S锁,用于Next Key;

6. NW锁:类似于W锁,用于Next Key;

在DB2数据库中, 是通过行级锁和表级锁协调作用来提供较好的并发性, 同时保证数据库中数据的安全。 在DB2中缺省情况下使用行级锁(当然需要IS/IX锁配合),只有当出现锁资源不足, 或者是用命令指定使用表级锁的情况下, 才会在应用连接中使用表级锁。 对锁资源分配有兴趣的读者可以参考DB2的管理手册, 查找其中关于locklist和maxlocks参数的论述。对于用命令指定表级锁的情况, 可以参考DB2的命令手册中的lock table命令, 此命令用于直接锁表。

隔离级别:

下面让我们来看一下隔离级别。 隔离级别主要用于控制在DB2根据应用提交的SQL语句向DB2数据库中的相应对象加锁时, 会锁住哪些纪录, 也就是锁定的范围。 隔离级别的不同, 锁定的纪录的范围可能会有很大的差别。

隔离级别分为RR/RS/CS/UR这四个级别。 下面让我们来逐一论述:

1. RR隔离级别: 在此隔离级别下, DB2会锁住所有相关的纪录。 在一个SQL语句执行期间, 所有执行此语句扫描过的纪录都会被加上相应的锁。 具体的锁的类型还是由操作的类型来决定, 如果是读取,则加共享锁; 如果是更新, 则加独占锁。 由于会锁定所有为获得SQL语句的结果而扫描的纪录, 所以锁的数量可能会很庞大, 这个时候, 索引的增加可能会对SQL语句的执行有很大的影响,因为索引会影响SQL语句扫描的纪录数量。

2. RS隔离级别: 此隔离级别的要求比RR隔离级别稍弱,此隔离级别下会锁定所有符合条件的纪录。 不论是读取, 还是更新, 如果SQL语句中包含查询条件, 则会对所有符合条件的纪录加相应的锁。 如果没有条件语句, 也就是对表中的所有记录进行处理,则会对所有的纪录加锁。

3. CS隔离级别: 此隔离级别仅锁住当前处理的纪录。

4. UR隔离级别:此隔离级别下,如果是读取操作,不会出现任何的行级锁。对于非只读的操作,它的锁处理和CS相同。

在这四种隔离级别中, CS是缺省值。 这四种隔离级别均可以保证DB2数据库在并发的环境下不会有数据丢失的情况发生。 要注意的是如果对纪录进行了修改,需要在相应的纪录上加独占类型的锁, 这些独占类型的锁直到交易结束时才会被释放, 这一点在四种隔离级别下都是相同的。

分享到:
评论

相关推荐

    DB2数据库性能调整和优化 牛新庄 PDF

    深刻理解DB2的锁及并发机制、索引原理、数据库参数、优化器原理、SQL语句调优等内部机理才能针对性地快速提出解决问题的方法;快照、db2pd、db2expln及事件监控器等则是必须熟练掌握的工具。《DB2数据库性能调整和...

    DB2-730中文教材--适合数据库开发人员以及对数据库有兴趣的人

    • 第 6 部分:数据并发性 本教程讲解数据一致性的概念以及 DB2 在单用户和多用户环境中用来维护一致性的各种机制。 • 第 7 部分:XQuery 简介 本教程将解释几个基本的 XQuery 概念,并讲解如何编写处理 DB2 XML ...

    DB2数据库相关管理资料

    第一章 UDB概况 第二章 UDB的图形用户界面 第三章 数据存放 第四章 使用SQL语言创建数据对象 第五章 数据移动 第六章 数据库恢复 ...第八章 数据库的并发性控制 第九章 安全性控制 第十章 建立客户机服务器连接

    牛新庄: 循序渐进DB2:DBA系统管理、运维与应用案例 001

    客户端连通性、实例、数据库、表空间和缓冲池、数据移动、备份恢复、故障诊断、锁与并发,以及数据库安全都是本书关注的重点。在介绍这些DB2对象和概念的同时,作者尽可能从DBA日常工作的角度探究DB2数据库常规维护...

    数据库并发控制机制.docx

    DB2,Mysql,Oracle中的并发控制机制,数据库的并发控制机制,顾名思义,是用来控制数据库的并发操作的机制。控制的目的是为了保证数据完整和数据一致性。

    db2 9 730 中文教程

    • 第 6 部分:数据并发性 本教程讲解数据一致性的概念以及 DB2 在单用户和多用户环境中用来维护一致性的各种机制。 • 第 7 部分:XQuery 简介 本教程将解释几个基本的 XQuery 概念,并讲解如何编写处理 DB2 XML ...

    牛新庄: 循序渐进DB2:DBA系统管理、运维与应用案例 002

    客户端连通性、实例、数据库、表空间和缓冲池、数据移动、备份恢复、故障诊断、锁与并发,以及数据库安全都是本书关注的重点。在介绍这些DB2对象和概念的同时,作者尽可能从DBA日常工作的角度探究DB2数据库常规维护...

    循序渐进DB2.DBA系统管理、运维与应用案例.part1

    客户端连通性、实例、数据库、表空间和缓冲池、数据移动、备份恢复、故障诊断、锁与并发,以及数据库安全都是本书关注的重点。在介绍这些DB2对象和概念的同时,作者尽可能从DBA日常工作的角度探究DB2数据库常规维护...

    循序渐进DB2.DBA系统管理、运维与应用案例.part2

    客户端连通性、实例、数据库、表空间和缓冲池、数据移动、备份恢复、故障诊断、锁与并发,以及数据库安全都是本书关注的重点。在介绍这些DB2对象和概念的同时,作者尽可能从DBA日常工作的角度探究DB2数据库常规维护...

    DB2和 Oracle的并发控制(锁)的比较

    关系数据库为了确保并发用户在存取同一数据库对象时的正确性(即无丢失更新、可重复读、不读”脏”数据,无”幻像”读),数据库中引入了并发(锁)机制。基本的锁类型有两种:排它锁(Exclusive locks记为X锁)和...

    循序渐进DB2.DBA系统管理、运维与应用案例

    客户端连通性、实例、数据库、表空间和缓冲池、数据移动、备份恢复、故障诊断、锁与并发,以及数据库安全都是本书关注的重点。在介绍这些DB2对象和概念的同时,作者尽可能从DBA日常工作的角度探究DB2数据库常规维护...

    MySQL数据库:数据库管理系统.pptx

    连接性和安全性,MySQL是完全网络化的,其数据库可在因特网上访问,因此,可以和任何地方的任何人共享数据库,而且MySQL还能进行访问控制,能够控制特定用户不允许其访问数据。 可移植性,MySQL可运行在各种版本的UNIX...

    数据库原理(第5版)

    本章探讨了并发控制、安全性、备份及恢复技术。数据库管理主题很重要,因为它适用于所有数据库,即使是个人或单用户数据库也是如此。事实上,在某些方面这些主题对于小型数据库更重要,因为它们没有专业的数据库管理...

    深入解析DB2--高级管理,内部体系结构与诊断案例.part1.rar

    7.5 最大化并发性 7.6 锁相关的性能问题总结 7.7 锁与应用程序开发 7.8 本章小结 第8章 索引设计与优化 8.1 索引概念 8.2 索引结构 8.3 理解索引访问机制 8.4 索引设计 8.5 索引创建原则与示例 8.6 影响索引性能...

    构建DB2+DPF大型数据仓库经验谈

    DB2 DPF DB2多分区数据库.集群数据库,类似于ORACLE的RAC.但在架构上跟ORACLE RAC 存在很大的不同. DB2 DPF 采用非共享体系架构(Share-nothing)每个节点独立处理单一任务的能力,每个子 任务处理一部份数据.分区间...

    数据库系统概论自己版.xmind

    并发访问和鲁棒性(恢复) 模式(Schema):数据库的总体设计 物理模式 物理数据独立性 :修改物理结构而不需要改变逻辑结构的能力 应用程序独立于数据的结构和存储 逻辑模式 逻辑数据独立性:...

    Oracle数据库学习指南

    45. 在ORACLE7数据库并发控制技术的研究及其应用 46. 在SQLPlus中insert进的都是中文的,为什么一存入服务器后,再select出的就是???了 47. 在客户端处理Oracle的数据行加锁问题 48. 怎样查看init_ora文件 49. ...

    数据库管理系统DBMS在企业管理中的应用.doc

    它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过dbm s访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作。它可使多个应 用程序和用户用不同的方法在同时或不同时刻去建立,...

    DB2基础 学习资料

    资料有10个word文档,介绍得非常详细,对于自学DB2的朋友很有帮助 分为以下章节: 1、UDB概况 2、UBD的图形用户界面 3、数据存放 ...8、数据库的并发性控制 9、安全性控制 10、建立客户机服务器连接

    网络内存数据库

    接访问数据,从而获得极高的存取速度和极强的并发访问能力的数据库管理系统,在设计风格上兼容主流数据库(MS SQL SERVER、SYBASE)的特点,客户端通过TCP网络的方式来访问Cache Server。 Cache Server网络内存...

Global site tag (gtag.js) - Google Analytics