一、内存结构介绍
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等