基本信息
摘要:在DB2中,共有四种隔离级:RS,RR,CS,UR.以下对四种隔离级进行一些描述,同时附上个人做试验的结果。隔离级是影响加锁策略的重要环节,它直接影响加锁的范围及锁的持续时间。两个应用程序即使执行的相同的操作,也可能由于选择的隔离级的不同而造成加锁的结果不同。
隔离级解读和试验
隔离级是影响加锁策略的重要环节,它直接影响加锁的范围及锁的持续时间。两个应用程序即使执行的相同的操作,也可能由于选择的隔离级的不同而造成加锁的结果不同。在DB2中,共有四种隔离级:RS,RR,CS,UR.以下对四种隔离级进行一些描述,同时附上个人做试验的结果。
读可靠性(RS-Read Stability)
如果使用这种隔离级,在一个事务中所有被读取过的行上都会被加上NS锁,直到该事务被提交或回滚,行上的锁才会被释放。这样可以保证在一个事务中即使多次读取同一行,得到的值不会改变。
但是,如果使用这种隔离级,在一个事务中,如果使用同样的搜索标准重新打开已被处理过的游标,则结果集可能改变。(可能会增加某些行,这些行被称为幻影行(Phantom))。这是因为RS隔离级不能阻止通过插入或更新操作在结果集中加入新行。
个人笔记:
根据实际测试情况,RS模式下:查询完毕以后,满足条件的结果集中的记录被锁定,不满足条件的不被锁定。
可以对不满足条件的记录更新,也可以插入新的记录。其他人可以查询满足已经锁定的记录,但不可以更新。
重复读(RR-Repeat Read)
如果使用这种隔离级,在一个事务中所有被读取过的行上都会被加上S锁,知道该事务被提交或回滚,行上的锁才会被释放。这样可以保证在一个事务中即使多次读取同一行,得到的值不会改变。
另外,在同一事务中如果以同样的搜索标准重新打开已被处理过的游标,得到的结果集不会改变。重复读相对于读可靠性而言,加锁的范围更大。
对于读可靠性,应用程序只对符合要求的所有行加锁,而对于重复读,应用程序将对所有被扫描过的行都加锁。例如,如果一个应用程序对一个表中的 10000行数据进行扫描,最终找到了100条符合搜索条件的结果行。如果该应用程序使用的是读可靠性隔离级,应用程序将只对这符合条件的100行加锁;如果该应用程序使用的是重复读隔离级,应用程序将对被扫描过的10000行都加锁。
个人笔记
根据实际测试情况,RR模式下:查询完毕以后,不可以对不满足条件的进行更新,也不可以插入新记录。可能原因是:如果允许别人更新记录或者插入新记录的话,则可能造成原来结果集的破坏,重新读的时候和以前不同。
select for update with rr/rs 是可以用来实现记录锁。是一种特殊情况。即便是RR,仍然可以对其他记录操作。
游标可靠性(CS-Cursor Stability)
如果使用这种隔离级,在一个事务中,结果集中只有正在被读取的那一行(游标指向的行)将被加上NS锁,其他未被处理的行上不被加锁。这种隔离级只能保证正在被处理的行的值不会被其他并发的程序所改变。该隔离级是DB2缺省的隔离级。
个人笔记
仅仅在游标在该行的时候锁定,这是一种非常弱的隔离状态。
未提交读(UR-Uncommitted Read)
如果使用这种隔离级,对于只读操作,不加行锁。典型的只读操作包括:
SELECT语句的结果集只读(比如语句中包括ORDER BY子句);
定义游标是指明起为FOR FETCH ONLY。
该隔离级可以改善应用程序的性能,同时可以最大程度的允许并发。但是,应用程序的数据完整性将受到威胁。如果需要读取未提交的数据,该隔离级是唯一选择。
个人笔记
读的时候完全不受限制,对于同一行记录的完整性也无法保证。
总结
以上我们所提的隔离级的加锁范围和持续时间都是针对于读操作而言的。
对于更改操作,被修改的行上会被加上X锁,不论使用何种隔离级,X锁直到提交或回滚之后才会被释放。
分享到:
相关推荐
DB2是IBM公司开发的一款关系型数据库管理系统,广泛应用于企业级数据存储和管理。本压缩包包含DB2数据库的安装包以及链接服务器驱动,对于理解DB2数据库的安装过程和使用至关重要。 首先,我们来详细了解DB2数据库...
这个试验涉及使用IBM的DB2_ESC_97_x64版本,这是一个64位的企业级数据库管理系统,适合大规模数据存储和处理。同时,开发工作是在Eclipse集成开发环境中进行的,这是一款广泛使用的Java开发工具,支持多种编程语言,...
DB2数据库系统命令与配置参数手册 本手册主要介绍了DB2数据库系统的命令和配置参数,涵盖了DB2管理服务器、实例、数据库、表、索引、视图、存储过程、触发器、函数等方面的知识点。下面将逐一详细介绍这些知识点。 ...
DB2数据库性能调整和优化(第2版)侧重于介绍DB2数据库的性能调优。性能调优是一个系统工程:全面监控分析操作系统、I/O性能、内存、应用及数据库才能快速找到问题根源;深刻理解DB2的锁及并发机制、索引原理、数据库...
SQuirreL SQL Client通过JDBC(Java Database Connectivity)接口与数据库进行通信,这意味着只要数据库提供JDBC驱动,它就能连接。DB2数据库提供了JDBC驱动,使得SQuirreL能够支持DB2的连接和操作。 使用SQuirreL...
DB2 数据库目录结构 DB2 数据库目录结构是 DB2 数据库的核心组件之一,它是 DB2 数据库的存储和管理的基础。DB2 数据库目录结构主要包括以下几个部分:实例目录、数据库目录、日志目录、恢复历史文件、缓冲池文件、...
在IT行业中,数据库管理系统是核心组成部分之一,而IBM的DB2是企业级广泛使用的数据库解决方案。本文将深入探讨如何通过命令行界面登录到DB2数据库,这对于系统管理员和开发人员来说是一项基本技能。 首先,我们...
首先,重启db2数据库之前,必须确保没有任何应用程序正在与数据库进行连接。你可以通过执行`db2 list applications for db db_name`命令来检查当前是否有活动的链接。如果有活动链接,你需要终止它们,这可以通过`...
DB2数据库系统安全配置基线是一份详细的指南,旨在确保DB2数据库系统的安全性,遵循最佳实践,以防止未授权访问和潜在的数据泄露。本指南涵盖了多个关键领域,包括账号管理、口令策略、权限控制以及认证和审计机制。...
DB2 数据库安装、数据库创建步骤 DB2 数据库安装步骤是指将 DB2 数据库软件安装到计算机上,并创建一个新的数据库实例,以便存储和管理数据。下面是 DB2 数据库安装和创建步骤的详细过程: 一、安装 DB2 数据库...
DB2数据库安装教程 DB2数据库安装教程详细描述了DB2数据库在Linux环境中的安装。以下是安装过程中涉及到的知识点: 1. 用户和用户组的创建:在安装DB2之前,需要创建相应的用户和用户组,例如db2iadm1、db2fadm1和...
Db2数据库操作的常用命令列表 Db2数据库操作的常用命令列表中包含了多个重要的数据库操作命令,这些命令对Db2数据库的管理和维护至关重要。本文将对这些命令进行详细的解释和分析,帮助读者更好地理解和掌握Db2...
DB2数据库SQL注入手册 DB2数据库SQL注入手册是指在使用DB2数据库时,如何检测和防止SQL注入攻击的一份指南。SQL注入是一种常见的Web应用程序安全漏洞,攻击者可以通过在输入字段中 inject恶意SQL代码来访问或控制...
- 类型4:也是完全基于Java,但提供与类型3相似的性能,同时直接与数据库服务器通信,不需要中间层。 4. **配置与使用**: 要在Java应用程序中使用这些驱动,首先需要将`db2jcc.jar`或`db2jcc4.jar`添加到项目的...
DB2作为一款成熟的企业级数据库管理系统,提供了丰富的功能和工具,满足了复杂业务场景下的数据存储和管理需求。从基础安装到实例管理,再到数据库对象的创建与访问,DB2展现了其强大且灵活的特性。深入理解DB2的...
在Java编程环境中,为了能够与DB2数据库进行交互,如执行SQL查询、更新数据或管理数据库对象,需要引入特定的驱动程序。在这个案例中,我们有两个主要的JAR文件:db2jcc4.jar和db2jcc.jar。 1. **db2jcc4.jar** - ...
远程连接db2数据库远程连接db2数据库远程连接db2数据库远程连接db2数据库远程连接db2数据库远程连接db2数据库远程连接db2数据库远程连接db2数据库远程连接db2数据库
DB2数据库是一款由IBM开发的关系型数据库管理系统,广泛应用于企业级的数据存储和处理。本教程主要涵盖DB2的高级主题,包括数据恢复、高可用性、安全性、性能优化以及安装和管理等方面,旨在帮助读者深入理解和掌握...
DB2数据库与SQLServer数据库的异同 DB2、Oracle、SQLServer数据库可以说是数据库领域的三座大山。这三座大山各有各的 特色。为此企业在选型的时候往往会在这三个数据库之间犹豫,不知道该选哪个数据库 好。笔者这里...
"DB2数据库系统加固规范" DB2数据库系统加固规范是指对DB2数据库系统进行安全加固的规范和要求,该规范旨在确保DB2数据库系统的安全性和可靠性。本规范涵盖了账号管理、认证授权、日志配置、设备其他安全要求等多个...