(7)达梦DMDSC数据共享集群核心技术原理介绍

在上一篇博客里面我们对达梦数据库的DM数据守护(Data Watch)的读写分离集群进行了技术原理学习并动手部署实践。本篇技术分享文章是关于达梦DMDSC集群的相关技术原理。

DM共享存储数据库集群的英文全称DM Data Shared Cluster,简称DMDSC。集群允许多个数据库实例同时访问、操作同一数据库,支持故障自动切换和故障自动重加入,某一个数据库实例故障后,不会导致数据库服务无法提供。这也是其具有高可用、高性能、负载均衡等特性的核心所在。

DMDSC 主要特点包括:

高可用性:只要集群中有一个活动节点,就能正常提供数据库服务。

高吞吐量:多个节点同时提供数据库服务,有效提升集群的整体事务处理能力。

负载均衡:用户的连接请求被平均分配到集群中的各个节点,确保各个节点的负载大致平衡。

DMDSC 实现原理:

DMDSC 是一个共享存储的数据库集群系统。多个数据库实例同时访问、修改同一个数据库,因此必然带来了全局并发问题。DMDSC 集群基于单节点数据库管理系统之上,改造了 Buffer 缓冲区、事务系统、封锁系统和日志系统等,来适应共享存储集群节点间的全局并发访问控制要求。同时,引入缓存交换技术,提升数据在节点间的传递效率。下面是DSC集群的一些核心技术原理。

  • 事务管理

多版本并发控制(MVCC)可以确保数据库的读操作与写操作不会相互阻塞,大幅度提升数据库的并发度以及使用体验,大多数主流商用数据库管理系统都实现了MVCC。DM的多版本并发控制实现策略是:数据页中只保留物理记录的最新版本数据,通过回滚记录维护数据的历史版本,通过活动事务视图(V$DSC_TRX_VIEW)判断事务可见性,确定获取哪一个版本的数据。

为了在DMDSC集群中实现与单节点相同的多版本并发控制(MVCC)策略,每个事务需要知道所有节点当前活动的事务信息,根据事务隔离级的不同,在事务启动时(串行化),或者语句执行时(读提交),收集这一时刻所有节点上的活动事务,以及系统中即将产生的事务号NEXT_TID,记录到事务的活动事务视图中。DMDSC集群将事务信息全局化,由控制节点统一管理集群中所有节点的全局事务视图(Global Transaction View,简称GTV);与之对应的是每个节点维护一个本地事务视图(Local Transaction View,简称LTV),在事务启动、收集活动事务信息时通知全局事务视图,并获取相应的信息。

  • 封锁管理

数据库管理系统一般采用行锁进行并发访问控制,避免多个用户同时修改相同数据;通过表锁、字典锁控制DDL和DML操作的并发访问,保证对象定义的有效性和数据访问的正确性。DM则采用了独特的封锁机制,使用TID锁和对象锁进行并发访问控制,有效减少封锁冲突、提升系统并发性能。

与事务管理类似,DMDSC集群将封锁管理拆分为全局封锁服务(Global Locking Services,简称GLS)和本地封锁服务(Local Locking Services,简称LLS)两部分。整个系统中,只有控制节点拥有一个GLS。控制节点的GLS统一处理集群中所有节点的封锁请求、维护全局封锁信息、进行死锁检测,确保事务并发访问的正确性。每个节点都有一个LLS。各节点的LLS负责与GLS协调、通讯,完成事务的封锁请求,DMDSC集群中所有封锁请求都需要通过LLS向GLS发起,并在获得GLS授权后,才能进行后续操作。

  • 闩管理

闩(Latch)是数据库管理系统的一种内部数据结构,通常用来协调、管理Buffer缓冲区、字典缓存和数据库文件等资源的并发访问。与锁(Lock)在事务生命周期中一直保持不同,闩(Latch)通常只保持极短的一段时间,比如修改Buffer中数据页内容后,马上会释放。闩(Latch)的封锁类型也比较简单,就是共享(Share)和独占(Exclusive)两种类型。

整个系统中,每一个节点上都部署一个GBS和一个LBS。GBS服务协调节点间的Latch封锁请求、以及Latch权限回收。GBS与GTV/GLS由控制节点统一管理不同,GBS不是集中式管理,而是由DMDSC集群中的所有节点共同管理,Buffer对象会根据数据页号(Page No)对数据页进行划分,分给某一个节点的GBS服务处理。LBS服务与LLS/LTV一样,部署在每一个节点,LBS服务根据用户请求,向GBS发起Latch封锁,或者根据GBS请求,回收本地的Latch封锁。

为了避免两个、或多个节点同时修改同一个数据页,导致数据损坏,或者数据页修改过程中,别的节点读取到无效内容,DMDSC集群中数据页的封锁流程产生一定变化,与单节点相比,增加了全局Latch封锁、释放两个步骤。并且,在获取全局Latch授权后,仍然需要进行正常的本地Latch封锁,避免节点内访问冲突。

    • 1
      点赞
    • 3
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值