db2 lock

表一: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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章