db2 lock

来源:互联网 发布:门罗币挖矿软件知乎 编辑:程序博客网 时间:2024/06/16 05:38
表一:DB2数据库表锁的模式  

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

#show all the switches
db2 get monitor switches

#switch-name:
BUFFERPOOL、LOCK、SORT、STATEMENT、TABLE、TIMESTAMP 和 UOW

#set the switches ON/OFF
db2 update monitor switches using table off

#DB2 snapshot 用于锁定位(管理视图)
db2 get snapshot for locks on lgxswfc

Select substr(tabschema,1,8) as tabschema, substr(tabname,1,15) as tabname,lock_object_type,
           lock_mode, lock_mode_requested, agent_id_holding_lk 
From sysibmadm.lockwaits

注:db2 +c为不自动提交(commit)SQL语句,也可以通过 db2 update command options using c off关闭自动提交

(autocommit,缺省是自动提交)
db2 +c insert into lgxswfc values(2)
+++++++++++++ExAMPLE+++++++++++
#session1

db2 +c insert into lgxswfc values(2) #session2

db2 select * from lgxswfc
#此时session2 挂起#session3
Select substr(tabschema,1,8) as tabschema, substr(tabname,1,15) as tabname,lock_object_type,
           lock_mode, lock_mode_requested, agent_id_holding_lk 
From sysibmadm.lockwaits


db2 FORCE APPLICATION(agent_id_holding_lk);总的来说,DB2的锁和Oracle的锁主要有以下大的区别:

  1.Oracle通过具有意向锁的多粒度封锁机制进行并发控制,保证数据的一致性。其DML锁(数据锁)分为两个层

次(粒度):即表级和行级。通常的DML操作在表级获得的只是意向锁(RS或RX),其真正的封锁粒度还是在行级;DB2

也是通过具有意向锁的多粒度封锁机制进行并发控制,保证数据的一致性。其DML锁(数据锁)分为两个层次(粒度)

:即表级和行级。通常的DML操作在表级获得的只是意向锁(IS,SIX或IX),其真正的封锁粒度也是在行级;另外,

在Oracle数据库中,单纯地读数据(SELECT)并不加锁,这些都提高了系统的并发程度,Oracle强调的是能够"读"到

数据,并且能够快速的进行数据读取。而DB2的锁强调的是"读一致性",进行读数据(SELECT)时会根据不同的隔离

级别(RR,RS,CS)而分别加S,IS,IS锁,只有在使用UR隔离级别时才不加锁。从而保证不同应用程序和用户读取的数

据是一致的。

  2. 在支持高并发度的同时,DB2和Oracle对锁的操纵机制有所不同:Oracle利用意向锁及数据行上加锁标志位

等设计技巧,减小了Oracle维护行级锁的开销,使其在数据库并发控制方面有着一定的优势。而DB2中对每个锁会

在锁的内存(locklist)中申请分配一定字节的内存空间,具体是X锁64字节内存,S锁32字节内存(注:DB2 V8之前

是X锁72字节内存而S锁36字节内存)。

  3. Oracle数据库中不存在锁升级,而DB2数据库中当数据库表中行级锁的使用超过locklist*maxlocks会发生

锁升级。

  4. 在Oracle中当一个session对表进行insert,update,delete时候,另外一个session仍然可以从Orace回滚

段或者还原表空间中读取该表的前映象(before image); 而在DB2中当一个session对表进

行insert,update,delete时候,另外一个session仍然在读取该表数据时候会处于lock wait状态,除非使用UR隔

离级别可以读取第一个session的未提交的值;所以Oracle同一时刻不同的session有读不一致的现象,而DB2在同一

时刻所有的session都是"读一致"的。
+++++++++++++ExAMPLE+++++++++++

用于监控和DB2疑难分析
非侵入式工具,对DB2的性能影响小
-applications -agents -transactions -bufferpools -logs -locks
-tablespaces -dynamic -static -fcm -mempools -memsets -dbmcfg
-dbcfg -catalogcache -sysplex -tcbstats -reorg -recovery -reopt -osinfo

db2 -db lgxswfc -locks

0 0
原创粉丝点击