A DB2 Performance Tuning Roadmap --DIVE INTO LOCK
在整理了DB2 LOG相关内容的基础之上,这章整理lock的内容,相比较与log,lock的内容更多的与应用相关,涉及内容方方面面更加复杂。DBMS在本质上不同于文件系统的地方在于DBMS系统所支持的事务。 如果log的引入是为了保证持久化,那么LOCK的引入就是保证事务串行化,解决事务的并发带来了资源的RACE CONDITION。不同的事务场景,定义了不同的并发需求,为此定义了4种事务的隔离级别,不同的DBMS引入了不同的锁机制来实现。DB2的串行化机制主要是通过LOCK,LATCH,CLAIM/DRAIM 来实现,具体的LOCK的相关属性以及LOCK属性对应用程序的影响比如OBJECT,SIZE,MODE,DURATION,PARTICIPANTS,PARAMETER LOCATIONS都进行了介绍。当引入了DBMS CLUSTER(DB2中为DATA SHARING GROUP,而ORACLE中为ORACEL RAC) 以后,为了处理不同不同MEMBER之间数据的一致性,DB2引入了PHYSICAL LOCK以及CF LOCK STRTURE 来实现全局LOCK 冲突检测。单个SUBSYSTEM中,主要的冲突有TIMEOUT,DEADLOCK,在DATASHARING GROUP,引入了新的CONTENTION,XES CONTENTION,FALSE CONTENTION,GLOBAL LOCK CONTENTION。引入LOCK的同时不可避免的带来了新的OVERHEAD,DB2主要通过IRLM,XES,CF等处理锁资源的请求,除了地址空间除了锁请求之外,由于应用本身设计不合理或是某些特定的场景带来了很多问题,如TEMEOUT,DEADLOCK,LOCK ESCALATION等,如何有效的避免这些问题,需要系统运维人员以及开发人员共同努力。
本文的行文脉络基于个人对DBMS LOCK的认知层次,行文的逻辑性,合理性,整理内容的知识面的广度和深度都有待进一步的思考。
这篇博客从落笔到完成大体的框架,持持续续时间已经接近2周,应该是自己耗时最长的一篇博客,纵使如此,每一次查看,发下仍有新的东西需要自己补充,等后续会继续补充自己的理解。
- LOCK OVERVIEW
- WHY LOCKS ? DB2 Serialization Mechanisms
- Data Consistency And Database Concurrency
- Phenomena Seen When Transactions Run Concurrently
- Lost Updates
- DIRTY READS
- Non-Repeatable Reads
- Phantoms
- Data Consistency And Database Concurrency
- LOCK PROPERTIES
- LOCK OBJECT OWNER
- LOCK PARTICIPANTS
- LOCK SIZE
- LOCK MODE
- LOCK DURATION
- LOCK REQUEST AND RELEASE
- LOCK AND TRAN ISOLATION LELVEL
- LOCKING PARAMETERS LOCATIONS
- DDL
- DML
- Precompiler Locking Parameters
- Bind Locking Parameters
- Zparm Locking Parameters
- CLAIM AND DRAIN
- LATCH
- ADVANCED TOPICS
- L-LOCK(EXPLICIT HIERARCHICAL LOCKING )EHL
- PHYSICAL LOCK
- RETAINED LOCKS(UPDATE LOCKS)
- IMPACT OF Retained LOCKS
- LOCK SCOPE:
- LOCAL LOCK
- GLOBAL LOCK
- GLOBAL LOCK COMMUNICATION
- Page Set P-Lock Negotiation
- CF LOCK STRUCTURE
- MODIFIED RESOURCE LIST(MRL)
- LOCK TABLE
- XCF
- XES
- XES CONTENTION
- FALSE CONTENTION
- GLOBAL CONTENTION
- DATA SHARING ACTIVITY REPORT
- Lock Structure Shortage Actions
- Types of locking problems
- How do I find out I have a problem
- Analyzing concurrency problems --TOOLBOXS
- DB2 commands and EXPLAIN
- DB2 TRACES
- EXAMPLE:Analysis of a simple deadlock scenario and solution
- DBD is locked
- WHY LOCKS ? DB2 Serialization Mechanisms