DB2锁类型

锁状态确定了对锁的所有者允许的访问类型,以及对锁定数据资源的并发用户许可的访问类型。下面的列表说明了可用的锁状态,按照递增控制排序:

锁状态(模式):  意向无(Intent None,IN)

适用对象:  表空间和表

描述:  锁的拥有者可以读取锁定表中的数据(包括未提交数据),但不能更改这些数据。在这种模式中,锁的拥有者不获取行级别的锁;因此,其它并发应用程序可以读取和更改表中的数据。

锁状态(模式):  意向共享(Intent Share,IS)

适用对象:  表空间和表

描述:  锁的拥有者可以读取锁定表中的数据,但不能更改这些数据。同样,因为锁的拥有者不获取行级别锁;所以,其它并发的应用程序仍可以读取和更改表中的数据。(当事务拥有表上的意向共享锁时,就在它所读取的每个行上进行共享锁定。)当事务不传达更新表中行的意图时,就获取这种锁。

锁状态(模式):  下一键共享(Next Key Share,NS)

适用对象:  行

描述:  锁拥有者和所有并发的事务都可以读(但不能更改)锁定行中的数据。这种锁用来在使用“读稳定性”或“游标稳定性”事务隔离级别读取的数据上代替共享锁。

锁状态(模式):  共享(S)

适用对象:  表和行

描述:  锁拥有者和任何其它并发的事务都可以读(但不能更改)锁定的表或行中的数据。只要表不是使用共享锁锁定的,那么该表中的单个行可以使用共享锁锁定。但是,如果表是用共享锁定的,则锁拥有者不能在该表中获取行级别的共享锁。如果表或行是用共享锁锁定的,则其它并发事务可以读取数据,但不能对它进行更改。

锁状态(模式):  意向互斥(Intent Exclusive,IX)

适用对象:  表空间和表

描述:  锁拥有者和任何其它并发的应用程序都可以读取和更改被锁定表中的数据。当锁拥有者从表读取数据时,它在所读取的每一行上获取一个共享锁,而在它更新的每一行上获取更新和互斥锁。其它并发的应用程序可以读取和更新锁定的表。当事务传达更新表中行的意图时,就获取这种锁。(SELECT FOR UPDATE、UPDATE ... WHERE 和 INSERT 语句传达更新的意图。)

锁状态(模式):  带意向互斥的共享(Share With Intent Exclusive,SIX)

适用对象:  表

描述:  锁拥有者可以读取和更改被锁定表中的数据。锁拥有者在它更新的行上获取互斥锁,但不获取它读取的行上的锁;因此,其它并发的应用程序可以读取但不能更新被锁定表中的数据。

锁状态(模式):  更新(Update,U)

适用对象:  表和行

描述:  锁的拥有者可以更新被锁定表中的数据,并且锁的拥有者在它所更新的任何行上自动获得互斥锁。其它并发的应用程序可以但不能更新被锁定表中的数据。

锁状态(模式):  下一键互斥(Next Key Exclusive,NX)

适用对象:  行

描述:  锁的拥有者可以读取但不能更新被锁定的行。当在表的索引中插入或删除行时,表中的下一行上将获得这种锁。

锁状态(模式):  下一键弱互斥(Next Key Weak Exclusive,NW)

适用对象:  行

描述:  锁的拥有者可以读取但不能更新被锁定的行。当向非目录表的索引插入行时,表中下一行上就获得这种锁。

锁状态(模式):  互斥(Exclusive,X)

适用对象:  表和行

描述:  锁的拥有者可以读取和更改被锁定的表或行中的数据。如果获取了互斥锁,则只允许使用“未提交的读”隔离级别的应用程序访问被锁定的表或行(多行)。对于用 INSERT、UPDATE 和/或 DELETE 语句操作的数据资源,将获取互斥锁。

锁状态(模式):  弱互斥(Weak Exclusive,WE)

适用对象:  行

描述:  锁的拥有者可以读取和更改被锁定的行。当向非目录表中插入行时,该行上将获得这种锁。

锁状态(模式):  超级互斥(Super Exclusive,Z)

适用对象:  表空间和表

描述:  锁的拥有者可以更改表、删除表、创建索引或删除索引。当事务尝试执行上述任何一种操作时,表上就自动获得这种锁。在除去这个锁之前,不允许其它并发事务读取或更新该表。

-----------------------------------

详解:

表一:DB2数据库表锁的模式

表二:DB2数据库行锁的模式

表三:DB2数据库表锁的相容矩阵

表四:DB2数据库行锁的相容矩阵

表五:DB2数据库锁产生的SQL语句示例

时间: 2024-10-09 12:38:17

DB2锁类型的相关文章

sql 锁类型与锁机制

SQL Server锁类型(SQL)收藏1. HOLDLOCK: 在该表上保持共享锁,直到整个事务结束,而不是在语句执行完立即释放所添加的锁.   2. NOLOCK:不添加共享锁和排它锁,当这个选项生效后,可能读到未提交读的数据或“脏数据”,这个选项仅仅应用于SELECT语句.   3. PAGLOCK:指定添加页锁(否则通常可能添加表锁).   4. READCOMMITTED用与运行在提交读隔离级别的事务相同的锁语义执行扫描.默认情况下,SQL Server 2000 在此隔离级别上操作.

java并发编程常见锁类型

锁是java并发编程中最重要的同步机制.锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息.锁是解决并发冲突的重要工具.在开发中我们会用到很多类型的锁,每种锁都有其自身的特点和适用范围.需要深刻理解锁的理念和区别,才能正确.合理地使用锁.常用锁类型乐观锁与悲观锁悲观锁对并发冲突持悲观态度,先取锁后访问数据,能够较大程度确保数据安全性.而乐观锁认为数据冲突的概率比较低,可以尽可能多地访问数据,只有在最终提交数据进行持久化时才获取锁.悲观锁总是先获取锁,会增加很多额外的开销,

DB2数据库中DB2字符串类型

DB2字符串是DB2数据库中的基础知识,下面就为您分类介绍DB2字符串,供您参考,如果您对DB2字符串方面刚兴趣的话,不妨一看. DB2字符串是字节序列.DB2字符串包括 CHAR(n) 类型的定长字符串和 VARCHAR(n).LONG VARCHAR 或 CLOB(n) 类型的变长字符串.字符串的长度就是序列中的字节数. *定长字符串,CHARACTER(n) 或 CHAR(n):定长字符串的长度介于 1 到 254 字节之间.如果没有指定长度,那么就认为是 1 个字节. *变长字符串,VA

DB2 锁问题分析与解释

DB2 应用中经常会遇到锁超时与死锁现象,那么这种现象产生的原因是什么呢.本文以试验的形式模拟锁等待.锁超时.死锁现象,并给出这些现象的根本原因. 试验环境: DB2 v9.7.0.6 AIX 6.1.0.0 采用默认的隔离级别CS STUDENT表的DDL与初始内容 ------------------------------------------------ -- DDL Statements for table "E97Q6C  "."STUDENT" --

SQL Server中的锁类型及用法

一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新 A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏读 A用户修改了数据,随后B用户又读出该数据,但A用户因为某些原因取消了对数据的修改,数据恢复原值,此时B得到的数据就与数据库内的数据产生了不一致 不可重复读 A用户读取数据,随后B用户读出该数据并修改,此时A用户再读取数据时发现前后两次的值不一致 并发控制的主要方法是封锁,锁就是在一段时间内禁止用户做某些

并发编程艺术-锁类型以及底层原理

Java并发编程艺术-并发机制的底层原理实现 1.Volatile 定义: Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致的更新,线程应该确保通过排他锁单独获得这个变量. volatile借助Java内存模型保证所有线程能够看到最新的值.(内存可见性) 实现原理: 将带有volatile变量操作的Java代码转换成汇编代码后,可以看到多了个lock前缀指令(X86平台CPU指令).这个lock指令是关键,在多核处理器下实现两个重要操作: 1.将当前处理器缓存行的数据写回到系

db2锁

1.首先把数据库监控开关打开: db2 update dbm cfg using DFT_MON_LOCK on DFT_MON_STMT on db2  update monitor switches using lock ON sort ON bufferpool ON uow ON table ON statement ON 2.利用DB2表函数编写一个监控SQL脚本. select AGENT_ID , substr(STMT_TEXT,1,100) as statement, STMT

db2 常用类型

DB2的常用数据类型包括以下几个: 一.数字型的. 1. SMALLINT          ---短整型,范围为-32768~+32767,一遍用的较少 2. INT/INTEGER    ---整型,4个字节,范围为-2147483648~+2147483647,一遍多用于做自动生成的序列,或者用作表记录的id使用. 3. BIGINT               ----大整型,8个字节,精度为19位,够大了,一般较少使用. 4. DECIMAL(P,S)  ---小数型,其中P为精度,S

MySQL锁类型(一致性是非锁定读、自增和外键)

1.一致性的非锁定读 一致性的非锁定读(consistent nonlocking read)是指InnoDB存储引擎通过行多版本控制(multi versionning)的方式来读取当前执行时间数据库中行的数据.如果读取的行正在执行DELETE或UPDATE操作,这时读取操作不会因此去等待行上锁的释放,相反地,InnoDB存储引擎会去读取行地一个快照数据. 快照数据是指该行地之前版本地数据,该实现是通过undo段来完成.而undo用来在事务中回滚数据,因此快照数据本身是没有额外地开销.此外,读