为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。 【DM版本】:v8 【操作系统】:麒麟v10 【CPU】:AMD 【问题描述】*:达梦堆表中的并发分支和非并发分支到底是什么概念?
堆表是指采用了物理 ROWID 形式的表,即使用文件号、页号和页内偏移而得到 ROWID 值。 其中数据页都是通过链表形式存储。为支持并发插入,扁平 B 树可以支持最多 128 个数据页链表(最多 64 个并发分支和最多 64 个非并发分支),在 B 树的控制页中记录了所有链表的首、尾页地址。
并发分支:对于并发分支,则各用户登录系统之后,会依据其事务 ID 号,随机选择一条链表来对堆表进行插入操作。因为是并发,所以可能出现多个用户选择了同一条分支的情况,此时用户需要排队,等待前一个用户插入结束并释放锁之后才能进行插入。在并发情况下,不同用户可以在不同的链表上进行插入,效率得到较大提升
非并发分支: 则各用户按分支号从小到大选择一个可用的分支来进行插入。如果不存在空闲分支则需要等待其他用户释放锁之后才能进行插入
堆表是指采用了物理 ROWID 形式的表,即使用文件号、页号和页内偏移而得到 ROWID 值。
其中数据页都是通过链表形式存储。为支持并发插入,扁平 B 树可以支持最多 128 个数据页链表(最多 64 个并发分支和最多 64 个非并发分支),在 B 树的控制页中记录了所有链表的首、尾页地址。
并发分支:对于并发分支,则各用户登录系统之后,会依据其事务 ID 号,随机选择一条链表来对堆表进行插入操作。因为是并发,所以可能出现多个用户选择了同一条分支的情况,此时用户需要排队,等待前一个用户插入结束并释放锁之后才能进行插入。在并发情况下,不同用户可以在不同的链表上进行插入,效率得到较大提升
非并发分支:
则各用户按分支号从小到大选择一个可用的分支来进行插入。如果不存在空闲分支则需要等待其他用户释放锁之后才能进行插入