【问题标题】:DB2 Locking scenarioDB2 锁定场景
【发布时间】:2018-11-18 03:35:23
【问题描述】:

Oracle 不会锁定正在读取的行,谁能告诉我 DB2(LUW) 是否授予读取锁定?其他事务是否无法更新另一个正在进行的事务正在读取的行? DB2 中是否还有类似 undo 段的概念来提供读取一致性?

【问题讨论】:

    标签: db2 locking db2-luw


    【解决方案1】:

    知识中心的这张表描述了不同的锁定模式:

    https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.admin.perf.doc/doc/c0005270.html#c0005270__lockmod

    此表有隔离级别比较:

    https://www.ibm.com/support/knowledgecenter/SSEPGG_11.1.0/com.ibm.db2.luw.admin.perf.doc/doc/c0004121.html?view=kc#c0004121__cil

    一般来说,你应该阅读上面提到的“并发”和“锁管理”部分

    【讨论】:

      【解决方案2】:

      关于 Db2-LUW 和撤消段。

      启用 CUR_COMMIT (ON) 的 Db2-LUW(版本 9.7 或更高版本)使用活动事务日志来读取不同事务已更新但尚未提交的行的当前提交值。

      Db2-LUW 现有版本不使用撤消表空间或使用撤消段等术语。

      【讨论】:

      • 考虑以下场景 emp_salary=4000 事务 1 更新员工集 emp_salary=5000 where emp_id=123(未发布提交或回滚)事务 2(隔离级别为 Cusror 稳定性)从员工中选择 emp_salary where emp_id= 123 第二条语句的输出是什么(4000 或 5000)?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-11
      • 2011-08-26
      • 1970-01-01
      相关资源
      最近更新 更多