文章分类 -  openGauss源码解析

上一页 1 ··· 5 6 7 8 9 10 11 下一页
openGauss数据库是华为公司在深度融合技术应用于数据库领域多年经验的基础上,结合企业级场景要求,推出的新一代企业级开源数据库。本文将从各方面对该openGauss数据库源码进行详细介绍。
摘要:openGauss源码解析:存储引擎源码解析(18)5. cstore缓存机制考虑到cstore列存储格式主要面向只读查询居多的OLAP类业务,因此openGauss提供只读的共享CU缓冲区机制。openGauss中CU只读共享缓冲区的结构如图4-30所示。和行存储页面粒度的共享缓冲区类似,最上层为 阅读全文
posted @ 2024-04-29 16:22 openGauss-bot 阅读(14) 评论(0) 推荐(0) 编辑
摘要:openGauss源码解析:存储引擎源码解析(19)4.2.8 日志系统内存是一种易失性存储介质,在断电等场景下存储在内存介质中的数据会丢失。为了保障数据的可靠性需要将共享缓冲区中的脏页写入磁盘,此即数据的持久化过程。对于最常用的持久化存储介质磁盘,由于每次读写操作都有一个“启动”代价,导致磁盘的读 阅读全文
posted @ 2024-04-29 16:22 openGauss-bot 阅读(12) 评论(0) 推荐(0) 编辑
摘要:openGauss源码解析:存储引擎源码解析(20)4.2.9 持久化及故障恢复机制1. 行存储持久化和检查点机制如“4.2.8 日志系统”节中所述,通过采用WAL日志的方式可以在对性能影响较小的情况下保障用户事务对数据库修改的持久化。然而如果只是依赖日志来保障持久化的话,那么数据库服务(故障)重启 阅读全文
posted @ 2024-04-29 16:22 openGauss-bot 阅读(12) 评论(0) 推荐(0) 编辑
摘要:openGauss源码解析:存储引擎源码解析(21)2. 故障恢复机制当数据库发生宕机重启之后需要从检查点位置开始回放之后所有的日志。不同类型的日志的回放逻辑由对应的资源管理器来实现。当用户业务压力较大时会同时有很多业务线程并发执行事务和日志记录的插入,单位时间内产生的日志量是非常大的。对此open 阅读全文
posted @ 2024-04-29 16:22 openGauss-bot 阅读(8) 评论(0) 推荐(0) 编辑
摘要:openGauss源码解析:存储引擎源码解析(22)4.2.10 主备机制openGauss提供主备机制来保障数据的高可靠和数据库服务的高可用。如图4-37所示,在主、备实例之间通过日志复制来进行数据库数据和状态的一致性同步。日志同步是指将主机对数据的修改日志同步到备机,备机通过日志回放将日志重新还 阅读全文
posted @ 2024-04-29 16:22 openGauss-bot 阅读(21) 评论(0) 推荐(0) 编辑
摘要:openGauss源码解析:存储引擎源码解析(15) 5. pagewriter线程组 “pagewriter”线程组由多个“pagewriter”线程组成,线程数量等于GUC参数(g_instance.ckpt_cxt_ctl->page_writer_procs.num)的值。“pagewrit 阅读全文
posted @ 2024-04-29 16:21 openGauss-bot 阅读(14) 评论(0) 推荐(0) 编辑
摘要:openGauss源码解析:存储引擎源码解析(14)4.2.6 行存储缓存机制行存储缓存加载和淘汰机制如图4-20所示。图4-20 行存储缓存和淘汰机制示意图行存储堆表和索引表页面的缓存和淘汰机制主要包含以下几个部分。1. 共享缓冲区内存页面数组下标哈希表共享缓冲区内存页面数组下标哈希表用于将远大于 阅读全文
posted @ 2024-04-29 16:21 openGauss-bot 阅读(15) 评论(0) 推荐(0) 编辑
摘要:openGauss源码解析:存储引擎源码解析(16)4.2.7 cstore列存储格式是OLAP类数据库系统最常用的数据格式,适合复杂查询、范围统计类查询的在线分析型处理系统。本节主要介绍openGauss数据库内核中cstore列存储格式的实现方式。1. cstore整体框架cstore列存储格式 阅读全文
posted @ 2024-04-29 16:21 openGauss-bot 阅读(22) 评论(0) 推荐(0) 编辑
摘要:openGauss源码解析:存储引擎源码解析(17) 4. cstore访存接口和索引机制 cstore访存接口如表4-30所示,主要包括扫描、插入、删除和查询操作。 表4-30 cstore访存接口 接口名称 接口含义 CStoreBeginScan 开启cstore扫描 CStore::RunS 阅读全文
posted @ 2024-04-29 16:21 openGauss-bot 阅读(8) 评论(0) 推荐(0) 编辑
摘要:openGauss源码解析:存储引擎源码解析(13)4.2.5 行存储索引机制本节以B-Tree索引为例,介绍openGauss中行存储(格式)表的索引机制。索引本质上是对数据的一种物理有序聚簇。有序聚簇参考的排序字段被称为索引键。为了节省存储空间,一般索引表中只存储有序聚簇的索引键键值以及对应元组 阅读全文
posted @ 2024-04-29 16:19 openGauss-bot 阅读(21) 评论(0) 推荐(0) 编辑
摘要:openGauss源码解析:存储引擎源码解析(12)5. 存取管理openGauss中的ustore表访存接口如表4-24所示。由于openGauss中ustore表只有一种页面和元组结构,因此在上述接口中,直接实现了底层的页面和元组操作流程。表4-24 ustore表访存接口函数名称接口含义hea 阅读全文
posted @ 2024-04-29 16:19 openGauss-bot 阅读(15) 评论(0) 推荐(0) 编辑
摘要:openGauss源码解析:存储引擎源码解析(11)4. 多版本索引在openGauss中实现了多版本索引ubtree,是专用于ustore的B-Tree索引变种,相比原有的B-Tree索引有如下差异点。(1) 支持索引数据的多版本管理及可见性检查,能够自主鉴别旧版本元组并进行回收,同时索引层的可见 阅读全文
posted @ 2024-04-29 16:18 openGauss-bot 阅读(20) 评论(0) 推荐(0) 编辑
摘要:openGauss源码解析:存储引擎源码解析(10)3. 回滚段设计与MVCC1) 回滚段旧版本数据会集中在回滚段的undo目录中,为了减少读写冲突,旧版本数据(回滚记录)采用追加写的方式写入数据目录的undo目录下。这样旧版本数据的读取和写入不会发生冲突,同一个事务的旧版本数据也会连续存放,便于进 阅读全文
posted @ 2024-04-29 16:18 openGauss-bot 阅读(7) 评论(0) 推荐(0) 编辑
摘要:openGauss源码解析:存储引擎源码解析(9)2. 页面元组结构1) 元组结构本节介绍行存储引擎ustore表的页面元组结构。元组结构的定义如下:typedef struct UHeapDiskTupleData { ShortTransactionId xid; uint16 td_id : 阅读全文
posted @ 2024-04-29 16:18 openGauss-bot 阅读(26) 评论(0) 推荐(0) 编辑
摘要:openGauss源码解析:存储引擎源码解析(8) 4.2.4 ustore ustore属于In-place Update更新模式,中文意思为:原地更新,是openGauss内核新增的一种存储模式。openGauss内核当前使用的行引擎采用的是Append Update(追加更新)模式,该模式在I 阅读全文
posted @ 2024-04-29 16:18 openGauss-bot 阅读(12) 评论(0) 推荐(0) 编辑
摘要:openGauss源码解析:存储引擎源码解析(6)4. astore访存管理openGauss中的astore堆表访存接口如表4-13所示。表4-13 astore堆表访存接口接口名称接口含义对应的行存储统一访存接口heap_open打开一个表,得到表的相关元信息无heap_close关闭一个表,释 阅读全文
posted @ 2024-04-29 15:54 openGauss-bot 阅读(18) 评论(0) 推荐(0) 编辑
摘要:openGauss源码解析:存储引擎源码解析(7)2. 中量级堆页面和索引页面清理openGauss提供VACUUM语句来让用户主动执行对某个astore表(或某个库中所有的astore表)及其上的索引进行中量级清理。中量级清理过程中,不阻塞相关表的查询和DML操作。由于在astore表中,新、老版 阅读全文
posted @ 2024-04-29 15:54 openGauss-bot 阅读(7) 评论(0) 推荐(0) 编辑
摘要:openGauss源码解析:存储引擎源码解析(1) 第4章 存储引擎源码解析 OLTP、OLAP业务各自对数据库的存储引擎提出了不同的要求,而openGauss能够支持多个存储引擎来满足来自不同场景的业务诉求。本章将逐一介绍各种存储引擎和对应的源码。 4.1 存储引擎整体架构及代码概览 从整个数据库 阅读全文
posted @ 2024-04-29 15:53 openGauss-bot 阅读(9) 评论(0) 推荐(0) 编辑
摘要:openGauss源码解析:存储引擎源码解析(2)4.2 磁盘引擎磁盘引擎是数据库系统中最常用的存储引擎,openGauss提供不同存储格式的磁盘引擎来支持大容量(数据量大于内存空间)场景下的OLTP、OLAP和HTAP(hybrid transactions and analytics proce 阅读全文
posted @ 2024-04-29 15:53 openGauss-bot 阅读(16) 评论(0) 推荐(0) 编辑
摘要:openGauss源码解析:存储引擎源码解析(3)4.2.2 行存储统一访存接口如上所述,在openGauss中,提供行存储统一访存接口层,来屏蔽不同行存储子格式内部实现机制对SQL引擎的影响。该行存储统一访存接口层被称为Table Access Method层。根据SQL引擎对行存储表的访存方式, 阅读全文
posted @ 2024-04-29 15:53 openGauss-bot 阅读(12) 评论(0) 推荐(0) 编辑

上一页 1 ··· 5 6 7 8 9 10 11 下一页