提升DB2数据库中加锁操作性能

ZDNet软件频道 时间:2008-09-22 作者:维维 | 天极网软件频道 我要评论()
本文关键词:DB2 数据库 加锁操作 性能 DB2
z/OS上的DB2 9提供了一个新的乐观锁机制,能够提高系统性能,或许可以缓解一下DBA和应用开发者的暴躁情绪。
 z/OS上的DB2 9提供了一个新的乐观机制,能够提高系统性能,或许可以缓解一下DBA和应用开发者的暴躁情绪。

  数据库加锁是一个必要的措施和核心的DBMS组件。加锁保持了数据一致性,防止多个会话同时改变相同的数据。但是使用和维护数据库锁会非常的麻烦,特别是对复杂系统和程序以及会话来说。

  乐观锁机制目前使用了定义在DB2表中的新特性来减少死锁的发生和总体的加锁负载,提高了系统和应用程序的性能。乐观锁机制可以参考这里http://DB2mag.com/story/showArticle.jhtml?articleID=201201095

  为了使用新的乐观锁机制,你需要定义一个新的ROW CHANGE TIMESTAMP列在DB2表中,并使用新参数(GENERATED ALWAYS, FOR EACH ROW ON UPDATE, AS ROW CHANGE TIMESTAMP)

  如下:

  CREATE TABLE BEULKE.PRODUCT_TBL (

  PROD_NBR INTEGER NOT NULL,

  PROD_INVENTORY INTEGER NOT NULL,

  PROD_LAST_UPD NOT NULL

  GENERATED ALWAYS

  FOR EACH ROW ON UPDATE

  AS ROW CHANGE

  TIMESTAMP);

  这些参数告诉DB2总是特别注意时戳和表。最新更新的时戳已经在程序里植入很多年了,IBM已经开始更新这项技术。

  这些新特性使得DB2可以从一个特定的时间段获取行,并且理解它们在何时被修改。DB2不仅标注上了行时戳信息,还有记录ID(RID)和改变标记信息。标注行属性允许程序和用户来通过时戳查找数据库,以基于Where时戳语句获取一个特定行或者行的组。

  新的列特性通过允许多个程序重新绑定减少了加锁开销,减少了加锁的诸多配置如Repeatable Read (RR), Read Stability (RS), or Cursor Stability (CS) to Uncommitted Read (UR)。不受拘束的读避免了数据库锁;应用程序通过在程序的UPDATE SQL语句中使用新的时戳列可以保持数据库会话一致性。新的时戳列提供了时戳和行的记录ID(RID),DB2可以用来验证是否其他程序改变了有问题的数据。

  另外一个DB2 9 SQL语句,SKIP LOCKED DATA,也通过使用不兼容的锁来不获取或者不影响数据行以帮助减少锁。你可以在SELECT, UPDATE和DELETE SQL语句中使用该语句来避免死锁。

  使用隔离层次的UR和SKIP LOCKED DATA语句需要谨慎。尽管这项技术能够极大的减少加锁并且提高性能,它们却需要你非常了解自己的程序。在性能提升前,请仔细了解你的每个程序,并且阅读DB2的手册。

查看本文来源

DB2

数据库

加锁操作

性能

DB2


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134