磐维数据库工作线程解析

磐维数据库是中国移动自研数据库产品,最近了解了一下其工作原理,记录如下:

磐维父线程:前端线程池由一个磐维父线程来进行管理,父线程用于监听客户端链接,并为每个客户端连接衍生(fork)一个子线程。

磐维线程:磐维线程也称为业务处理线程,主要负责对客户端请求进行身份验证,接收请求,调用磐维的SQL引擎对SQL进行处理(词法解析、语法解析、语义解析、查询重写等),生成执行计划,根据命令的需要调用各种辅助线程和访问各内存结构,执行SQL语句,将执行结果返回给客户端,在客户端断开连接时释放线程。

在最前端,磐维父线程相当于监控+线程池管理,监听客户端链接,并对磐维线程进行创建释放。每一个磐维线程负责和业务进行对接,然后对SQL进行处理,并拿到返回结果给客户端。

shared buffer:行内存共享缓冲区缓存数据库常被访问的索引、表数据、执行计划等内容,大小由shared_buffers参数控制。

cstore buffer:列存引擎默认使用的缓冲区:大小由cstore_buffers参数控制。

MOT:内存引擎默认使用的缓冲区。

wal buffer:用于缓存增删改等写操作产生的事务日志

maintenance_work_mem: 一般是在Vastbase执行维护性操作时使用。

temp_buffer: 是每个数据库会话使用的LOCAL临时缓冲区,主要缓存会话所访问的临时表数据。

work_mem: 事务执行内部排序或Hash表写入临时文件之前使用的内存缓冲区。

后台线程:

pagewriter线程:负责将脏页数据拷贝至双写(double-writer)区域并落盘,然后将脏页转发给bgwriter子线程进行数据下盘操作,如果发生数据页”折断”的问题,就会从双写空间里找到完整的数据页进行恢复

bgwriter线程:负责对共享缓冲区的脏页数据持续的进行刷盘操作,目的是让数据库线程在进行用户查询时可以很少或者几乎不等待写动作的发生,这样的机制同样也减少了检查点造成的性能下降 walwriter线程:xlog日志写线程,将WAL buffer的内容刷新到磁盘并保存在xlog日志文件中 checkpoint线程:检查点线程,周期性的发起数据库检查点,在这个检查点时刻,所有的数据文件都被更新,脏数据页也被刷新到磁盘,此刻数据库是一致的。


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值