DB2数据库锁机制及问题

DB2数据库锁机制及问题

ID:38553690

大小:250.00 KB

页数:39页

时间:2019-06-14

DB2数据库锁机制及问题_第1页
DB2数据库锁机制及问题_第2页
DB2数据库锁机制及问题_第3页
DB2数据库锁机制及问题_第4页
DB2数据库锁机制及问题_第5页
资源描述:

《DB2数据库锁机制及问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、WelcometoHUAWEITechnologiespresentationDB2数据库锁机制简介及问题诊断电子支付研究院清算应用服务室牛天耘2007年07月DB2锁策略简介锁表原因分析和场景模拟定位锁问题的常见DB2命令相关编程建议1、DB2锁策略简介锁是数据库为了控制并发数据的完整性而引入的机制。锁定的对象锁定的模式(强度)锁定的长度锁定的对象数据库表格空间表记录锁定的模式(一)基本的锁类型有两种:排它锁(Exclusivelocks记为X锁)和共享锁(Sharelocks记为S锁)。排它锁:若事务T对数

2、据D加X锁,则其它任何事务都不能再对D加任何类型的锁,直至T释放D上的X锁;一般要求在修改数据前要向该数据加排它锁,所以排它锁又称为写锁。共享锁:若事务T对数据D加S锁,则其它事务只能对D加S锁,而不能加X锁,直至T释放D上的S锁;一般要求在读取数据前要向该数据加共享锁,所以共享锁又称为读锁。锁定的模式(二)--DB2数据库表锁的模式锁定的模式(三)--DB2数据库行锁的模式锁定的模式(四)--锁的兼容性锁定的模式(五)--DB2数据库表锁的兼容性锁定的模式(六)--DB2数据库行锁的兼容性锁定的模式(七)--

3、各SQL语句产生表锁的情况(假设缺省的隔离级别为CS)与实际情况可能有出入,仅供参考锁定的长度(一)--隔离级别(ISOLATIONLEVEL)写锁定(如X、W、NW、Z等)持续到事务结束(提交或是回滚)时释放读锁定(如S、NS、U等)RepeatableRead(RR)所有的读锁定在事务结束时才释放ReadStability(RS)在符合条件的记录上所读取得的读锁定,会持续到事务结束时才释放。而不符合条件的记录上的读锁定,则在读取下一笔记录时就立刻释放CursorStability(CS)目前所读取的记录上的

4、读锁定,会在读取下一笔记录时就立刻释放UncommittedRead(UR)在读取记录时,不会取得读锁定。也就是一般所说的脏读。缺省模式为CS锁定的长度(二)2、锁表原因分析和场景模拟锁超时死锁锁升级-911实例分析锁超时锁等待当某应用程序已经取得一个对象上的锁定(例如X锁),而第2个程序企图取得同一对象上无法并存的锁定(例如S锁定)时,则第2个程序的SQL指令就无法执行下去,发生锁定等待。锁超时LOCKTIMEOUT参数dbcfg中,指定一个应用程序被允许的锁等待的时间,单位是秒。缺省情况下,LOCKTIME

5、OUT是-1,意味着锁等待时间无限期。建议修改。当应用程序等待时间超过LOCKTIMEOUT时间,仍未获得锁,则数据库返回-911错误,reasoncode为68。死锁(一)死锁死锁是因为两个并发的进程或者线程同时各自占有一个资源上的锁,又需要占有对方资源上的锁,但又都各不相让造成的。相关参数DLCHKTIME参数DB2检查死锁的间隔时间,单位是毫秒每隔DLCHKTIME这么长的时间,数据库死锁检查器就会检查有无死锁存在。如有死锁,会选择回滚其中的某一个事务,让另外一个事务完成交易。回滚的事务返回返回-911错

6、误,reasoncode为2。死锁(二)--示例SessionA现在应用程序A就拥有了一个EMPLOYEE表的行级别的排他锁SessionB现在应用程序B就拥有了一个PROJECT表的行级别的排他锁db2connecttosampledb2+c"insertintoemployeevalues('000350','Truman','I','Jiang','B00','5892','1999-02-21','Engineer',19,'M','1978-06-17',60000,2000,6000)"db2con

7、necttosampledb2+c"insertintoprojectvalues('AD3300','DeadLockMonitor','B00','000350',7.00,'1982-07-21','1983-02-03','AD3111')"死锁(三)--示例续SessionA应用程序A需要PROJECT表上所有行的共享锁,但是因为PROJECT表正在被应用程序B以排他锁的形式独占,这时候应用程序A就进入一个锁等待的状态。SessionB应用程序B也进入一个锁等待的状态。此时就出现了一个死锁状态。db2

8、+c"selectprojnamefromproject"db2+c"selectfirstnmefromemployee"锁升级(一)锁升级每个锁在内存中都需要一定的内存空间,为了减少锁需要的内存开销,DB2提供了锁升级的功能,将行锁升级为表锁,从而达到减少锁的数量,降低锁的内存开销的目的。相关参数LOCKLIST参数在一个数据库全局内存中用于锁存储的内存。单位为页(4K)MAXLO

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。