海山数据库(He3DB)源码详解:海山MySQL redo日志-日志文件组 1、日志文件组MySQL的数据目录下默认有两个名为和的文件,log buffer中的日志默认情况下就是刷新到这两个磁盘文件中。redo从上边的描述中可以看到,磁盘上的redo日志文件不只一个,而是以一个日志文件组的形式出现的。这些文件以ib_logfile[数字](数字可以是0、1、2…)的形式进行命名。
海山数据库(He3DB)源码详解:海山MySQL redo日志-写入过程 一、redo log block设计InnoDB时为了更好的进行系统奔溃恢复,将通过mtr生成的redo日志放在大小为512字节的页中。为了和表空间中的页做区别,于是把用来存储redo日志的页称为block。一个的示意图如下:真正的redo日志都是存储到占用496字节大小的中。另外,占12个字节,占4个字节,存储的是一些管理信息。其中,
海山数据库(He3DB)源码详解:海山MySQL redo日志-MTR 一、对底层页面中的一次原子访问的过程称之为一个,简称mtr。一个事务可以包含若干条语句,每一条语句其实是由若干个mtr组成,每一个mtr又可以包含若干条redo日志。
海山数据库(He3DB)源码详解:主备复制read_backup_label 在数据库主备复制(如PostgreSQL的流复制等场景)中,时间点恢复是一种数据库恢复技术,它允许将数据库恢复到指定的历史时间点。周雨慧 中移(苏州)软件技术有限公司 数据库内核开发工程师成功完成,则函数返回true,表示成功读取并解析了文件周雨慧 中移(苏州)软件技术有限公司 数据库内核开发工程师。
海山数据库(He3DB)源码详解:主备复制pg_wal_replay_resume 周雨慧 中移(苏州)软件技术有限公司 数据库内核开发工程师周雨慧 中移(苏州)软件技术有限公司 数据库内核开发工程师。
海山数据库(He3DB)源码解读:T_GrantRoleStmt原理浅析 (一) GrantRoleStmt 是一个结构体,用于在 PostgreSQL 中表示授予或撤销角色的语句。类型: NodeTag解释: NodeTag 是一个枚举类型,表示不同类型的节点。在这里,type 用于标识这是一个 GrantRoleStmt 节点。通常,type 的值为 T_GrantRoleStmt。类型: List *解释: 这是一个链表(List),包含了将被授予或撤销的角色列表。每个元素是一个角色名称或角色标识符。这个变量指定了要操作的角色。
海山数据库(He3DB)源码解读:T_CreateRoleStmt原理浅析 (一) CreateRoleStmt 是 He3DB 中用于表示创建角色 (CREATE ROLE) 语句的结构体。它包含了与角色创建相关的各种信息,包括角色类型、角色名称和角色选项。NodeTag type 这个成员用于标识结构体的类型。在 He3DB 的抽象语法树 (AST) 中,每个节点都有一个类型标识符(NodeTag),用于区分不同类型的节点。CreateRoleStmt 会被标记为其特定的类型,以便在AST中进行正确的处理。ROLESTMT_ROLE,//表示一般的角色声明。
海山数据库(He3DB)源码解读:T_AlterRoleStmt原理浅析 (一) AlterRoleStmt 是一个用于定义 He3DB 中 ALTER ROLE 命令语法的数据结构。它是一个结构体,包含了执行 ALTER ROLE 操作所需的所有信息。/* role */NodeTag type: 这是一个枚举类型,用于标识该结构体是哪种节点类型。NodeTag 通常用于区分不同的 SQL 语句类型。RoleSpec *role: 这是一个指向 RoleSpec 结构体的指针,表示要修改的角色。RoleSpec 结构体可能包含角色的名称或其他标识信息。
海山数据库(He3DB)源码解读:SubBegin-Rollback 海山数据库(He3DB)源码详解:子事务块内核函数执行过程本文介绍了子事务执行过程中,从SAVEPOINT定义子事务开始到子事务结束释放RELEASE或者回滚ROLLBACK To的内核函数执行过程。
海山数据库(He3DB)源码解读:BEGIN-END-ABORT 事务SQL语句的执行过程,会先通过事务块函数修改事务块状态,然后根据事务块状态执行不同的事务行为。因此,本章会讲解事务块的开始和结束过程的事务块函数。
海山数据库(He3DB)源码解读:2PC 两阶段提交(2PC)是一种用于分布式系统的事务处理协议,旨在确保事务的原子性。以下是2PC从事务准备到提交或放弃的执行流程图:开始:事务发起者(协调者)开始一个新的分布式事务。事务发起者请求所有参与者准备:协调者向所有参与者发送准备请求,询问它们是否准备好提交事务。所有参与者是否准备好?:这是一个决策点,需要等待所有参与者的响应。是:如果所有参与者都准备好了,协调者将发送提交请求。否:如果任何一个参与者没有准备好,协调者将发送放弃请求。事务发起者发送提交请求。
海山数据库(He3DB)源码详解:子事务块内核函数执行过程 本文介绍了子事务执行过程中,从SAVEPOINT定义子事务开始到子事务结束释放RELEASE或者回滚ROLLBACK To的内核函数执行过程。
海山数据库(He3DB)源码详解:事务块执行过程及内核函数 事务SQL语句的执行过程,会先通过事务块函数修改事务块状态,然后根据事务块状态执行不同的事务行为。因此,本章会讲解事务块的开始和结束过程的事务块函数。
海山数据库(He3DB)源码详解:两阶段提交(2PC)事务块内核函数执行过程 两阶段提交(2PC)是一种用于分布式系统的事务处理协议,旨在确保事务的原子性。graph TDA[开始] --> B[事务发起者请求所有参与者准备]B --> C{所有参与者是否准备好?C -- 是 --> D[事务发起者发送提交请求]C -- 否 --> E[事务发起者发送放弃请求]D --> F{所有参与者是否同意提交?F -- 是 --> G[所有参与者提交事务]F -- 否 --> H[所有参与者放弃事务]E --> I[所有参与者放弃事务]G --> J[事务提交完成]
海山数据库(He3DB)源码解读:T_GrantRoleStmt原理浅析 (一) GrantRoleStmt 是一个结构体,用于在 PostgreSQL 中表示授予或撤销角色的语句。类型: NodeTag解释: NodeTag 是一个枚举类型,表示不同类型的节点。在这里,type 用于标识这是一个 GrantRoleStmt 节点。通常,type 的值为 T_GrantRoleStmt。类型: List *解释: 这是一个链表(List),包含了将被授予或撤销的角色列表。每个元素是一个角色名称或角色标识符。这个变量指定了要操作的角色。
海山数据库(He3DB)源码解读:T_CreateRoleStmt原理浅析 (一) CreateRoleStmt 是 He3DB 中用于表示创建角色 (CREATE ROLE) 语句的结构体。它包含了与角色创建相关的各种信息,包括角色类型、角色名称和角色选项。NodeTag type 这个成员用于标识结构体的类型。在 He3DB 的抽象语法树 (AST) 中,每个节点都有一个类型标识符(NodeTag),用于区分不同类型的节点。CreateRoleStmt 会被标记为其特定的类型,以便在AST中进行正确的处理。ROLESTMT_ROLE,//表示一般的角色声明。
海山数据库(He3DB)源码解读:T_AlterRoleStmt原理浅析 (一) AlterRoleStmt 是一个用于定义 He3DB 中 ALTER ROLE 命令语法的数据结构。它是一个结构体,包含了执行 ALTER ROLE 操作所需的所有信息。/* role */NodeTag type: 这是一个枚举类型,用于标识该结构体是哪种节点类型。NodeTag 通常用于区分不同的 SQL 语句类型。RoleSpec *role: 这是一个指向 RoleSpec 结构体的指针,表示要修改的角色。RoleSpec 结构体可能包含角色的名称或其他标识信息。