openGauss体系结构_openGauss体系架构

打印 上一主题 下一主题

主题 749|帖子 749|积分 2247


一、内存结构介绍
1.shared_buffers:
数据库服务器的共享内存缓冲区。在数据库系统中的读写操作,都是针对内存中的数据,磁盘中的数据必须在处理前加载到内存,也就是数据库缓存中。
利用内存充当慢速磁盘与快速CPU之间的桥梁,从而加速IO的访问速度。
2.cstore_buffers:
列存所使用的共享缓冲区。在列存表为主的场景中,险些不用shared_buffers。在此场景中,应淘汰shared_buffers,增加csstore_buffers。
3.MOT:
MOT 是内存引擎默认使用的缓冲区,openGauss的MOT内存引擎的索引结构以及整体的数据构造都是基于Masstree模子实现的,
其乐观并发控制和高效的缓存块利用率使得openGauss可以充分发挥内存的性能,
同时,在确保高性能的前提下,内存引擎有着与openGauss原有机制相兼容的并行长期化和查抄点能力(CALC逻辑一致性异步查抄点),确保数据的永世存储,
得当于高吞吐低时延的业务处理场景。
4.wal_buffers:
用于还未写入磁盘的WAL日志的共享内存。
SQL实行器在共享缓冲区中对数据页的操作会被记录到 WAL buffer 中,当客户端发起事件的commit请求时,
WAL buffer的内容将被WalWriter线程革新到磁盘并生存在WAL日志文件中,确保那些已提交的事件都被永世记录,不会丢失。 
但需要注意的是,当walwriter的写操作跟不上时数据库实际的需求时,常规后端线程仍旧有权举行WAL日志的刷盘动作。
5.maintain_work_mem:
maintenance_work_mem 一般是在openGauss实行维护性操作时使用,如:VACUUM、CREATE INDEX、ALTER TABLE ADD FOREIGN KEY等操作,
maintenance_work_mem内存地区的大小决定了维护操作的实行效率。
6.work_mem:
用于查询操作,比方排序或哈希表等。work_mem 是事件实行内部排序或Hash表写入暂时文件之前使用的内存缓冲区。
7.temp_buffer:
数据库会话使用的暂时缓存,用于访问暂时表。
temp_buffer 是每个数据库会话使用的LOCAL暂时缓冲区,主要缓存会话所访问的暂时表数据。
需要注意的是,openGauss支持全局暂时表和会话级暂时表,全局暂时表的表定义是全局的,而暂时表的数据是各个会话私有的。
二、主要线程介绍
8.GaussMaster线程:
openGauss的管理线程,也称为postmaster线程。用于数据库启停、消息转发等管理工作。
9.pagewriter线程:
负责将脏页数据拷贝至双写(double-writer)地区并落盘,然后将脏页转发给bgwriter。
10.bgwriter:
bgwriter举行数据下盘操作。
11.walwriter线程:
负责将内存中的预写日志(WAL)页数据革新到预写日志文件中,确保已提交的事件都被永世记录,不会丢失。
12.checkpoint:
周期性触发,每次触发会将全部脏页面刷到磁盘中。
Checkpointer周期性的发起数据库查抄点,在这个查抄点时刻,所有的数据文件都被更新,脏数据页也被革新到磁盘,现在数据库是一致的。
openGauss支持全量查抄点和增量查抄点,增量查抄点打开后会小批量的分阶段的滚筒式的去举行脏页刷盘。
三、后台辅助线程
1.jemalloc_bg_thd:
管理并实现内存的动态分配
2.StatCollector:
负责统计openGauss数据库的信息,包罗:物理硬件资源使用信息、对象属性及使用信息、SQL运行信息、会话信息、锁信息、线程信息等,而且将这些网络到的统计信息生存在pgstat.stat文件中
3.Auditor:
使用重定向的方式从管理线程、后台线程以及其他子线程获取审计数据,并生存在审计文件中
4.LWLockMonitor:
负责检测轻量级锁(LWLock)产生的死锁,轻量级锁主要提供对共享内存的互斥访问控制,比如Clog buffer(事件提交状态缓存)、Shared buffers(数据页缓存)、Substran buffer(子事件缓存)等
5.sysLogger:
使用重定向的方式捕捉管理线程、后台线程以及其他子线程的stderr输出,并写入日志文件中
6.Jobworker:分为调度线程和工作线程。
调度线程(JobScheduler)会根据pg_job表里面定义的JOB周期,对已经过期的JOB举行调用,由工作线程(Jobworker)实行实际的JOB使命。
7.percentworker:
根据percentile参数设置的值计算sql响应时间的百分比信息,现在percentile参数仅支持80和95
8.snapshotworker:
网络snapshot信息
9.WalSender:
运行在openGauss主备情况中主节点,发送预写日志给备节点
10.WalReceiver:
运行在openGauss主备情况中备节点,吸收预写日志记录
11..AutoVacLauncher:
AutoVacLauncher线程由Postmaster线程启动,它不停地将数据库需要做vacuum的对象信息生存在共享内存中,
当表上被删除或更新的记录数超过设定的阈值时,会调用AutoVacWorker线程对表的存储空间实行采取清理工作。
四、设置文件
1.postgresql.conf:
openGauss的设置文件,在gaussmaster线程启动时会读取该文件,
获取监听地点、服务端口、内存分配、功能设置等设置信息,
而且根据该文件,在openGauss启动时创建共享内存和信号量池等。
2.pg_hba.conf:
基于主机的接入认证设置文件,主要生存鉴权信息(如:允许访问的数据库、用户、IP段、加密方式等)。
3.pg_ident.conf:
客户端认证的设置文件,主要保护用户映射信息,将主机操作系统的用户与openGauss数据库用户做映射。
4.gaussdb.state:
主要生存数据库当前的状态信息(如:主备HA的角色、rebuild进度及原因、sync状态、LSN信息等)。

五、数据库文件
1.base:
openGauss数据库对象默认存储在目次,如默认的数据库postgres、用户创建的数据库及关联的表等对象。
2.global:
存储openGauss共享的系统表或者说是共享的数据字典表。
3.pg_tblspc:
openGauss的表空间目次,里面存储openGauss定义的表空间的目次软连接,
这些软链接指向openGauss数据库表空间文件的实际存储目次。
4.pg_xlog:
存储openGauss数据库的WAL日志文件。
5.pg_clog:
存储openGauss数据库事件提交状态信息。
6.pg_csnlog:
存储openGauss数据库的快照信息,openGauss事件启动时会创建一个CSN快照,
在MVCC机制下,CSN作为openGauss的逻辑时间戳,模拟数据库内部对时序,用来判断其他事件对于当前事件是否可见。
7.pg_twophase:
存储两阶段事件提交信息,用来确保数据一致性。
8.pg_serial:
存储已提交的可序列化事件信息。
9.pg_multixact:
存储多事件状态信息,一般用于共享行级锁(shared row locks)。
六、openGauss其他重要文件
目次名称形貌
1.Archived WAL
openGauss数据库WAL日志的归档目次,生存openGauss的汗青WAL日志。
2.pg_audit
存储openGauss数据库的审计日志文件。
3.pg_replslot
存储openGauss数据库的复制事件槽数据。
4.pg_llog
生存逻辑复制时的状态数据。

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

罪恶克星

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表