暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SUNDB多进程架构

原创 科蓝SUNDB编辑部 2023-02-07
565

SUNDB数据库为了防止特定程序引起的错误扩散到整个数据库,没有采用多线程架构,而是采用了基于共享内存的多进程架构。
image.png
主要进程说明:

  • Main Thread
    启动和结束gmaster进程。
  • Checkpoint Thread
    检查点线程用来执行在Log Flushing时触发的异步Checkpoint,每当重做日志文件切换时被唤醒。
  • Log Flushing Thread
    Log Flushing线程是把记录在日志缓冲区里的重做日志周期性的写入到日志文件里。重做日志写满一个日志文件将切换到下一个重做日志文件,发生日志文件切换时Checkpoint事件会唤醒Checkpoint线程。如果发生日志文件切换时并没有可用的日志文件,那么除只读查询外的所有语句都将处于等待状态,直到有可用日志文件。
  • Log Archiving Thread
    Log Archiving线程异步归档重做日志,该线程只有在归档模式运行下会运行。日志的归档是Checkpoint过程中的一部分,Checkpoint线程触发Log Archiving事件并归档日志。
  • Ager Thread
    Ager线程负责物理的删除在逻辑层面已被删除的对象。
  • Timer Thread
    Timer线程负责异步设置系统时间,以节省用户事务之间的时间管理成本。
  • Page Flusher & IO Slave Thread
    在发生Checkpoint时,Page Flusher线程会将更新的数据页应用于磁盘,更新的信息存储在表空间中的多个数据文件中,因此Page Flusher线程将写入操作分配给每个表空间和数据文件的IO Slave线程,并对其进行管理,最后IO Slave线程并行记录数据文件中更新的页。
  • Cleanup Thread
    Cleanup线程负责异步管理系统资源,执行如下操作:
    -管理正常结束的会话,SUNDB逻辑结束会话,Cleanup线程物理结束会话;
    -管理非正常结束的会话,如果此会话的事务还没结束则回滚此事务;
    -检查snapshot语句的超时情况,如果有超时的会话则强行结束。
  • Process Monitor Thread
    Process Monitor线程是监控进程。该线程只在"SHARED_SESSION"参数值为YES时执行。该线程监控load-balancer(gbalancer)、 dispatcher(gdispatcher)和shared-server(gserver),在它们非正常结束时将对其重启,glsnr 进程不是该线程的监控对象。
  • Cluster Recover Thread
    在分布式环境中启动节点时,如果节点进入MOUNT阶段,则会创建集群恢复(Cluster Recover)线程。 如果存在不确定事务,则集群恢复线程将与远程节点上的集群恢复线程通信,并恢复不确定事务。
    如果存在不确定事务,则集群恢复线程将与远程节点上的集群恢复通信,同时会计算出不确定事务的状态。若远程节点重新启动但尚未恢复,则会传输请求优先完成恢复的消息,并在恢复完成后恢复不确定的事务。
    通过远程节点计算出的不确定事务状态包含NONE、PREPARE、COMMIT和ROLLBACK。如果集群恢复线程从至少一个远程节点收到响应(如COMMIT,ROLLBACK),则执行COMMIT或ROLLBACK。如果群集恢复线程从所有远程节点收到响应(如NONE,PREPARE),则它会执行ROLLBACK,因为COMMIT或ROLLBACK从未在任何群集节点上执行。
  • Failover Thread
    在集群系统环境中启动节点时,如果节点逐步进入LOCAL OPEN阶段,则会创建集群故障转移(Failover)线程。 集群故障转移线程通过在特定节点或群集系统中的网络上发生错误时重新选择协调器或脱机来执行错误节点的故障转移。
最后修改时间:2023-07-17 15:09:49
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论