源码目录:/src/gausskernel/storage
引言
我们队伍试图完整的了解查询引擎到存储引擎的数据库完整查询过程,对查询解析,查询优化,查询重写,查询执行,存储引擎展开学习。我所负责的板块是存储引擎。
一、存储引擎需要解决的问题
存储的数据必须要保证ACID,即原子性(A)、一致性©、隔离性(I)、持久性(D)。
支持高并发读写,高性能。
充分发挥硬件的性能,解决数据的高效存储和检索能力
二、opengauss存储引擎概述
openGauss的存储引擎是指数据库系统中负责数据的存储、组织、管理和访问的部分。
从整个数据库服务的组成构架来看,存储引擎向上对接SQL引擎,向下对接存储介质,按照特定的数据组织方式,以页面、列存储单元(CU,compression unit)或其他形式为单位,通过存储介质提供的特定接口,对存储介质中的数据完成读、写操作。如下图所示
shortage主流程代码如下:
磁盘初始化,开关,同步等系统操作。
文件路径:opengauss-server\src\gausskernel\storage\smgr\smgr.cpp
static const f_smgr smgrsw[] = {
/* magnetic disk */
{ mdinit,
NULL,
mdclose,
mdcreate,
mdexists,
mdunlink,
mdextend,
mdprefetch,
mdread,
mdwrite,
mdwriteback,
mdnblocks,
mdtruncate,
mdimmedsync,
mdasyncread,
mdasyncwrite,
NULL
},
这个存储管理器提供了对传统磁盘存储的访问。
函数 | 功能 |
---|---|
mdinit | 初始化 |
mdclose | 关闭 |
mdcreate | 创建 |
mdexists | 检查存在 |