实例讲解如何在DB2 UDB中正确的监控死锁(一)

 
   | |

导读:这篇文章通过详细的实例阐述了如何在DB2 UDB 中监控死锁的发生。本文主要介绍了常用术语和事件监控器。

关键词:DB2 UDB DB2 事件监控器 常用术语

正在加载数据...

  前言:这篇文章通过详细的实例阐述了如何在DB2 UDB 中监控死锁的发生。在DB2 UDB中有两种类型的监控器:快照监控器和事件监控器。快照顾名思义就是数据库连续状态下的一个切面,通过快照监控器,你可以很方便地查看当前连接的应用程序,当前等待的锁,当前的死锁,以及正在执行的SQL语句,同时你可以查看缓冲区,表和表空间的用法。如果保存历史数据,并且能够做出比较,对于分析数据库的并发性能有很大的帮助。

  但是我们并不能预测什么时候发生死锁,所以如果有一个后台程序能够一直监控数据库的活动,记录下所有的死锁事件,这对于数据库管理员来说是非常重要的。DB2 UDB提供了事件监控器。通过不遗漏地获得一段时间内所有的数据库事件(在本文中只关心其中的死锁事件),事件监控器提供了一种可以分析历史数据(本文的重点),预测将来趋势的可能。DB2 UDB同时提供了DB2 Performance Expert (DB2/PE) 或者类似的程序用来生成分析报表,不过这已经超出了本文的范畴。

  常用术语

  锁是控制应用程序并发的数据库软件机制,锁用来防止以下情况的发生:

  1. 丢失以前更新

  2. 不可重复读取

  3. 访问未提交数据

  锁的模式包括共享锁和排他锁,共享锁允许其他程序读取已经被其他共享锁占用的资源,所以也叫读锁,排他锁意味着在释放资源以前其他的应用程序无法访问同一资源,所以也叫写锁。此外,DB2 UDB 还提供了不同的锁级别,不同的应用程序可能会要求访问不同范围的数据,锁级别有利于充分利用系统资源,提高系统性能。若一个应用程序请求一个锁,而该锁被另外一个应用程序所使用且不能共享,DB2 UDB 就会挂起前一个应用程序。锁升级就是当LOCKLIST (LOCKLIST代表锁能够占用的内存空间) 耗尽或者一个应用程序所拥有的锁大于MAXLOCKS*LOCKLIST的时候(MAXLOCKS 代表应用程序所拥有的锁占所空间的百分比),DB2 UDB 就试图把几个行级别的锁合并为一个表级别的锁,从而释放锁空间。虽然锁升级本身并不耗费多少时间,但是锁住整个表通常会大大地降低并发性能。


  当应用程序处于挂起状态超过了一段规定的时间后,DB2 UDB就会自动中止这个应用程序,同时会向SQLCA发送描述性的错误信息。当两个或者更多的应用程序都持有另外一个应用程序所需资源上的锁,没有这些资源,那些应用程序都无法继续完成其工作的时候,就会发生死锁。

  在DLCHKTIME超时之后,DB2 UDB会中止发生死锁的某个应用程序(通常为所做工作最少的那个应用程序),这会释放这个应用程序所持有的所有的锁,并允许别的应用程序继续工作,DB2 UDB 将向被终止的应用程序的SQLCA发送描述性的错误信息。LOCKTIMEOUT 指定一个应用程序被允许的锁等待的时间,这将避免全局的死锁从而导致整个应用崩溃。如果LOCKTIMEOUT 的值为-1,应用程序会等待直到该锁被释放或者发生一个死锁。

  事件监控器

  事件监控器用来收集当一个数据库事件发生时所关联的应用程序的信息。这里的事件指,连接,死锁,声明和事务。你可以定义你想监控的事件类型的监控器。比如说,一个死锁监控器就是用来监控死锁的发生。

  在DB2 UDB 中存在两种和死锁有关的事件类型:

  DEADLOCKS

  记录简单的应用程序信息。

  DEADLOCKS WITH DETAILS

  记录所有复杂的信息,包括应用程序、执行语句声明以及死锁的详细信息。但是使用这种事件监控器会因为需要得到大量额外的信息而降低系统的性能。


实例讲解如何在DB2 UDB中正确的监控死锁
 实例讲解如何在DB2 UDB中正确的监控死锁(一)
 实例讲解如何在DB2 UDB中正确的监控死锁(二)
 实例讲解如何在DB2 UDB中正确的监控死锁(三)

原文出处:http://tech.ccidnet.com/art/982/20080917/1573039_1.html
 
来源:赛迪网    作者:fen    
 
 
 
 
 

DB2数据库设计

 
你可以针对XML数据使用XMLTABLE函数创建关系型视图。这种功能可以使你提供给应用程序一个关系型或者一个XML数据的混合视图。
 
要改善XML插入性能并降低你数据库中表的数量,你可能想以混合方式存储XML文档。这种方法提取选定XML元素和属性的值并把它们挨着完整的XML文档存储在关系列中。
 
XMLTABLE函数是一个SQL表函数,可以通过XQuery表达式从XML输入文档中创建关系数据行。本文阐述了如何在SQL插入语句中使用XMLTABLE函数来实现对XML的分割。
 
通过完成DB2表测试题,可以测试你对DB2 9的掌握情况。这些题是从以前DB2 9基础认证考试(Exam 730)真题中选出来的。
 
我们想将数据通过以下命令从DB2表导出到平面文件……,但是得到的结果如下(它的结果包括sql、列表名称和消息?EURoe2 record(s) selected?EUR?),但我们要结果显示成……

热门技术手册排行

 

在本次的技术手册中,我们为您提供了PL/SQL的基础知识以及专家指导,包括了PL/SQL中的数据类型简介、PL/SQL函数与触发器以及PL/SQL中的存储过程等,相信您无论是高手还是菜鸟都可以获得有帮助的信息。

 

本系列文章由三部分组成,为Oracle数据库管理员(DBA)面试成功的必备手册。本专题内容囊括从DBA最初的面试开始,从写“杀手简历”到求职信、到面试过程到Oracle认证再到上升到公司高层最后到你成为公司里的明星DBA。专家为你一一指点迷津,最终让你登上成功的宝座。

 

要成为一名DBA,你需要具备哪些素质?DBA的薪酬待遇如何?DBA的职业道路究竟可以走向何方?我们将在本次的技术手册中为您一一解答。

 

在本次技术手册中,我们将对SQL Server存储过程的调试进行详细的介绍,包括了基础的调试方法和在调试过程中出现的T-SQL性能问题和解决方法。

 

本技术专题主要围绕sql server设计这个话题展开,侧重介绍了sql server集簇索引的设计、如何创建sql server索引、如何优化索引、索引的能与不能、处理sql server 2000索引碎片技巧以及维护sql server索引以实现查询优化等等。

查看更多
 
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录