DB2数据库锁机制及问题.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DB2数据库锁机制及问题整理

锁定的模式(五) --DB2数据库表锁的兼容性 锁定的模式(六) --DB2数据库行锁的兼容性 锁定的长度(一) --隔离级别(ISOLATION LEVEL) 写锁定(如X、W、NW、Z等) 持续到事务结束(提交或是回滚)时释放 读锁定(如S、NS、U等) Repeatable Read(RR) 所有的读锁定在事务结束时才释放 Read Stability(RS) 在符合条件的记录上所读取得的读锁定,会持续到事务结束时才释放。而不符合条件的记录上的读锁定,则在读取下一笔记录时就立刻释放 Cursor Stability(CS) 目前所读取的记录上的读锁定,会在读取下一笔记录时就立刻释放 Uncommitted Read(UR) 在读取记录时,不会取得读锁定。也就是一般所说的脏读。 缺省模式为CS 锁定的长度(二) -911实例分析(二) --① ②-- --③ 上图情况,文件生成插入的记录,和文件装载读取的记录,并无交集,因此从代码逻辑上,无法直观判断出存在资源等待的情况。也可以排除死锁。 4、相关编程建议 编程建议(一) 尽量缩短事务长度 在数据一致性逻辑许可情况下,尽快提交事务,不要在事务中加入不必要的执行时间过长的代码,比如大的代码循环和远程调用,或者一些没有用处的SELECT语句 。否则在提交前,锁一直得不到释放,容易产生锁超时或锁升级的情况。 例如P22的实例 编程建议(二) 使用正确的隔离级别 系统缺省的ISOLATION LEVEL为CS。程序员可以在BIND或PREP时指定该程序缺省的ISOLATION LEVEL,也可以在每个SQL语句中指定相应的ISOLATION LEVEL。 UR这一ISOLATION LEVEL无需任何读锁,因此它的效率最高。我们建议,如果业务允许的话,尽可能多用这种ISOLATION LEVEL。 编程建议(三) 避免逻辑中的死锁 如果多个应用程序访问同一资源,最好以相同的次序访问。这样,即使前一个访问资源的应用程序会延迟其他应用程序的访问,也不会导致死锁的发生 编程建议(四) 创建和使用合理的索引 如果SQL语句没有走到索引,则最优化处理器只能使用表格索引的方式,即遍历这张表格,来查找记录。遍历过程中,会将所有的记录依次加锁。 如果SQL语句走到索引,则最优化处理器会选择采用索引搜索,也就是会借助索引结构来找记录。只会将索引上的记录加锁。这样可以有效的避免锁等待。 编程建议(五) 其他(非编程) 尽量避免锁升级,正确调整参数LOCKLIST, MAXLOCKS 也可能存在系统表被锁的情况,可对系统表做runstats 谢谢! * * * Welcome to HUAWEI Technologies presentation DB2数据库锁机制简介及问题诊断 电子支付研究院 清算应用服务室 牛天耘 2007年07月 DB2锁策略简介 锁表原因分析和场景模拟 定位锁问题的常见DB2命令 相关编程建议 1、DB2锁策略简介 锁是数据库为了控制并发数据的完整性而引入的机制。 锁定的对象 锁定的模式(强度) 锁定的长度 锁定的对象 数据库 表格空间 表 记录 锁定的模式(一) 基本的锁类型有两种:排它锁(Exclusive locks记为X锁)和共享锁(Share locks记为S锁)。 排它锁:若事务T对数据D加X锁,则其它任何事务都不能再对D加任何类型的锁,直至T释放D上的X锁;一般要求在修改数据前要向该数据加排它锁,所以排它锁又称为写锁。 共享锁:若事务T对数据D加S锁,则其它事务只能对D加S锁,而不能加X锁,直至T释放D上的S锁;一般要求在读取数据前要向该数据加共享锁,所以共享锁又称为读锁。 锁定的模式(二) --DB2数据库表锁的模式 锁定的模式(三) --DB2数据库行锁的模式 锁定的模式(四) --锁的兼容性 锁定的模式(七) -- 各SQL语句产生表锁的情况(假设缺省的隔离级别为CS) 与实际情况可能有出入,仅供参考 2、锁表原因分析和场景模拟 锁超时 死锁 锁升级 -911实例分析 锁超时 锁等待 当某应用程序已经取得一个对象上的锁定(例如X锁),而第2个程序企图取得同一对象上无法并存的锁定(例如S锁定)时,则第2个程序的SQL指令就无法执行下去,发生锁定等待。 锁超时 LOCKTIMEOUT参数 db cfg

文档评论(0)

chenchena + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档