第7周锁机制深入解析_第1页
第7周锁机制深入解析_第2页
第7周锁机制深入解析_第3页
第7周锁机制深入解析_第4页
第7周锁机制深入解析_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

级四 选 Currentlycommitted(V9.7新引入锁常见锁现象(锁升级、锁等待、锁超时、死锁锁DB2支持多个终端用必须控制对同一个数据集 以保证数据的完整性(Data数据的一致性(Data如果没有某种形式的并发控制,可能会遇到以下问题丢失更新(Lost未提交的读(mitted不可重复读(Non-repeatable幻象读(PhantomDB2使用基于锁的并发控制机制(lockingbaseconcurrency什么是事务 事务是一个不可分割的工作单位(UnitofWorkUOW)事务用来保持数据的完整性在并 数据库提交/回滚什么是丢失更新(Lost mittedRead, 了未提交的数据-一个终端用户正在更新数据,另一个终端用户在没有并发控制机制的情况下 -什么是不可重复读(NonRepeatable一个事务的两 中,读到的数据是不同的,即在两次事务之间发生了数据的修改 并发问题什么是幻像读(Phantom幻象的问题与不可重复读相似,不同之处在于随后的 上。您可能会获取额外一些行在在同一个UOW中Select两次第二个Select返回额外一些行 -第二次会返回额外一些 DB2使用四种类型 级别(isolation未提交读(UR):不加锁,可以读到未提交的数游标稳定性(CS):读到哪一行就在这一行加S读稳定性(RS):查询的结果集加S可重复读(RR):凡是读过的行都加S 四 级别所能解决的问题对照表级丢失更未提交的不可重复的幻像 一般来说 级别越高,它能提供的并发越少,性能越读比较高的环境,使用UR或读和写都比较高的环境,若需要大的数据稳定性,使用RR或 级别的粒SELECT…WITH会话级Session(应用命令行:CHANGEISOLATIONTO{JDBC:Connectioncon=DriverManager.getConnection(this.aURL,this.USER, ED)对动态SQL,在运行时设 级SETCURRENTISOLATION对嵌入式SQL,在绑定或预编译时设 级BIND<filename>…ISOLATIONPILE<filename>…ISOLATIONCurrently例子:未激活Currently

Currently例子:激活CurrentlyCurrently什么是Currently 级下的一种新的语返回最近 的数读事务不再被写事务阻V9.7新引入,默认激使用CurrentlyCommitted有什么好处适合于这样的应用:可以接受最近 的数据,不希望被其他写事务阻提高事务吞吐量,从而系统的并发性提锁的特DB2使用锁机制来保证数据完整性,有下面的属性使用方式:共享(Share)和排它–持有时间:在需要时,锁被DB2自动获事务提交或回滚时,锁被释DB2的锁策略基于下面的因素级(DDLDML,读还是写参数设置命令(LOCKTABLE或者ALTERTABLE…LOCKSIZE为什么会有意向(Intent)DB2在对表加其他锁时,通过检查表上是否加了意向锁,就能知道表中是否有一部分如何选择锁粒度 锁粒度,影响对该表上的所有读写事BLOCKINSERT指定在插入时使用块锁(适用MDC表TABLE锁升锁升LOCKLIST一个应用使用的锁内存达到解决锁升级问考虑如下方法调整LOCKLIST和MAXLOCKS数据库配置参增加提交(commit)的频重新审视您 级使用应用程序能容许的最低 级如果表对并 不关键,可考虑使用LOCKTABLE语必 选择这样的当负载高时,不可能调整LOCKLIST或MAXLOCKS,则少非关键表的并 ,从而减少关键表上的锁升 DB2的死解决死锁问 解决方案:在SELECT上使用FORUPDATE子这 数据会使用U锁而不是NS优 计划(使用了表扫描而不是索引扫描 避免并发的DDL会更新和锁定大量的编目尽可能早地提交DDL语句和DML语锁超 由另一个应用程序不兼容的锁已经锁定的数据,并且加锁锁等待可以是无限期的(如果持有锁的应用程序忘记提交或回滚DB2提供了锁超时特性来防止应用程序无限期的锁等使用LOCKTIMEOUT数据库配置参数启用锁超时检-LOCKTIMEOUT缺省为-1(锁超时检测为关闭状态如果锁超时了会返回一个sqlcode911,原因代码68的错误事务将回避免死锁的发使用SETCURRENTLOCKTIMEOUT语句在会话级别覆盖数据库级的配置参解决锁超时问如果可能的话,避免非常长的事务和WITHHOLD游持有锁的时间越长,和其他应用程序争夺资源的机会越写的动作,比如删除,删除和修避免查询过大的结果集,特别是在 级别尽可能使用较低 级 和锁的问 快 (Snapshot(Event name>.nfy,仅适用于LINUX和UNIX平台)db2pd工 Db2pd–locks:捕获锁的详细信Db2pdwlocks:捕获锁等待信Db2pd-apinfo<applhandle>:捕获锁拥有者和等待着详细运行时信db2pdlocks举打开一个会 设 级别为RS,随后发起SELECT语句(不提交db2pdlocks举锁快照-举Session Session锁快照-分析1,UPDATEMONITORSWITCHESUSINGLOCK2,GETSNAPSHOTFORLOCKSON锁快照锁快照-分析据锁快照锁快照-分析器创 激 SETEVENTMONITOR<lockevmon>STATE收集信如果存入表,从STMT_LOCKEVMON中查询相关信如果存入文件,使用命令db2evmon-path‘/home/db2inst1/eventmonitor’格式化文,分析相关信关 SETEVENTMONITOR<lockevmon>STATE器-举例Session Session业业 器-举例 数社数社 器-举例 日志 锁现ADMIN消息(管理日志和设定MON_LCK_MSG_LVL配置(DB0–Nonotification1–Onlylognotificationforlockescalation2–Lognotificationforlockescalationand3–Lognotificationforlockescalation,deadlockandlock日志-锁现象举锁升级消息W–Warningmessage,I–InformationalmessageE–ErrorDB2和Oracle锁机制对1rle2“”R 2、Oracle不存在锁升级,DB2会发生锁升级 级别,DB2读 4、Oracle利用意向锁及数据行上加锁标志位来实现锁机制,DB2中的每个锁都记5、DB2在做数据修改时,在日志中既记录了修改前数据(也就是UNDO日志),6,在Oracle中,当一个应用程序对表以Insert、Update和Delete操作进行修改时另外一个应用程序在该表时,会从回滚段中该表修改前的数据。而对于DB2V9.7之前的版本,数据的应用程序,遇到正在被其他应用程序修改的数据时,将会进行锁等待(除非使用UR级别)。对于DB2V9.7及以后版本,由于引入了当前已,数据的应用程序将不需要等待锁释放,而是会从日志中数据修改前的版本(即已的版本,相 设计高并发应用2、有 3、在SELECT中使用FORFETCHONLY从句,因为只会获得NS共享锁4、如果游标是可更新的,使用FORUPDATE从句以最小化锁转换和死锁的发生5、在一个工作单元的结束执行INSERTUPDATEDELETE,能缩小持有X锁的时间6、使用CLOSECURSOR语句的WITHRELEASE选项,这减少了锁的持有时间7、对只读表使用ALTERTABLELOCKSIZETABLE,锁粒度改变为表8、以EXCLUSIVE模式使用LOCKTABLE语句务必谨慎9、调整参数LOCKLIST和MAXLOCKS,以最小化锁升级的发设计高并发应用10、只有必要时才记录事务信息ALTERTABLEACTIVATENOTLOGGEDINITIALLYWITHEMPTY12、利用DB2数据移动工具中的并行特性14、不要检索不需要的数据。例如在SELECT语句中使用FETCHFIRSTnROWSONLY子句。 16、BI环境下因吞吐率低和主要以只读为主,使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论