自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 资源 (1)
  • 收藏
  • 关注

原创 海山数据库(He3DB)源码详解:He3DB-CLOG日志管理器函数之CLOGShmemInit、ZeroCLOGPage

函数名作用CLOG日式管理器的初始化,用于在共享内存中初始化CLOG缓冲池将CLOG页面初始化或者重新初始化为零用于创建和初始化共享内存以及信号量用于初始化或连接到共享内存中的一个简单最近最少使用(LRU)缓存用于计算CLOG缓存量buffers用于对页面的前置关系函数进行单元测试函数用于判断一个CLOG页面编号在截断操作中是否 “更旧”用于记录函数开始用于记录函数结束。

2024-10-09 18:12:03 631

原创 海山数据库(He3DB)源码详解:He3DB-CLOG日志管理器函数之TransactionIdSetTreeStatus

片转存中…(img-FsIK2ebt-1728468520413)]涉及到的宏函数与一致,不做赘述这个函数的主要作用是记录事务及其子事务树在提交日志中的最终状态,并且在该函数的调用栈关系中,和是第一层函数调用,其核心讲解内容将在后续进行。

2024-10-09 18:09:53 468

原创 海山数据库(He3DB)技术分享:计划器与执行器

He3DB是一个功能强大的开源关系型数据库管理系统,其查询处理过程可以分为几个主要阶段:解析、重写、规划(计划生成)、优化和执行。本文档将重点讨论计划器和执行器的设计,包括相关代码和结构体分析。

2024-10-09 18:08:28 276

原创 海山数据库(He3DB)源码解读:CREATE EXTENSION原理浅析

张杰,移动云数据库工程师,负责云原生数据库He3DB的研发。

2024-10-09 18:07:28 140

原创 海山数据库(He3DB)源码解读:查询规划之预处理

下图大概的刻画了查询规划模块里主要的函数调用关系查询规划的最终目的是得到可被执行器执行的最优计划,整个过程可分为预处理生成路径和生成计划三个阶段。预处理阶段是对查询树(Query结构体)的进一步改造,这种改造可通过SQL语句体现。在此过程中,最重要的是提升子链接和提升子查询。生成路径阶段,接收到改造后的查询树后,采用动态规划算法或遗传算法,生成最优连接路径和候选的路径链表。生成计划。

2024-10-09 18:07:00 598

原创 海山数据库(He3DB)源码详解:海山PG 空闲空间映射表FSM

FSM文件是Free Space Map(空闲空间映射)的缩写,用于跟踪和记录数据块(Page)中的空闲空间。随着数据表不断进行插入、更新和删除元组等操作,数据页内必然会存在空页空间。在插入新的元组时,有两种方式可以选择:直接选择新的页来存放、存放到已有页的空闲空间中。如果采用第一种存放方式,会明显造成空间利用率的浪费;

2024-09-26 10:56:28 734

原创 海山数据库(He3DB)源码详解:海山PG 可见性映射表VM

He3DB for PG中为了实现多版本并发控制,当事务删除或更新元组时,并非从物理上删除,而是将其标记为无效的方式进行标记删除,最终对这些无效元组的清理操作需要调用VACUUM完成。为了能够加快VACUUM查找包含无效元组的文件块的过程,在PostgreSQL8.4.1中为每个表文件定义了一个新的附属文件–可见性映射表(VM)。VM中为表的每个文件块设置了一位,用来标记该文件块是否存在无效元组。

2024-09-26 10:55:56 567

原创 海山数据库(He3DB)源码详解:海山PG 管理大型缓冲临时文件

Buffile.c文件是 PostgreSQL 存储系统中的一个组成部分,专注于管理和优化临时文件的读写操作。它提供了一种对虚拟文件(由fd.c管理)的缓冲输入/输出(I/O)支持,以提高性能并减少资源消耗。

2024-09-26 10:55:28 520

原创 海山数据库(He3DB)源码详解:RollbackToSavepoint函数

李超,移动云数据库工程师,负责云原生数据库He3DB的研发。RT,将事务块状态修改为TBLOCK_SUBABORT_RESTART;3. 如果临时变量xact的事务块状态为其他状态,则提交FATAL日志;完成RollbackToSavepoint函数。李超,移动云数据库工程师,负责云原生数据库He3DB的研发。

2024-09-26 10:53:39 769

原创 海山数据库(He3DB)源码详解:He3DB-CLOG日志管理器函数之clog_redo

然而,在clog记录的情况下,这种备份机制不是必需的,因为clog本身就是一种记录事务更改的机制。定义了用于存储从 WAL记录中读取的截断信息的数据结构。包含要截断到的最旧事务ID(备份块:为了保持数据的一致性,在更改实际数据之前先对其进行备份的块。确保当前的CLOG记录不使用备份块(Backup blocks)该结构体包含了当前正在处理的WAL记录的信息。进行位与操作来清除一些不需要的位,结果存储在。)和要截断的页面编号(pageno)等。中获取WAL记录的信息,并通过与。,则记录一个致命错误。

2024-09-26 10:50:57 416

原创 海山数据库(He3DB)源码详解:He3DB-CLOG日志管理器函数(2)

本文主要针对海山数据库中CLOG日志管理器部分关键函数源码进行研读。主要涉及ExtendCLOG、TruncateCLOG。

2024-09-26 10:49:48 294

原创 海山数据库(He3DB)源码详解:He3DB-CLOG日志管理器函数(1)

本文主要针对海山数据库中CLOG日志管理器部分关键函数源码进行研读。主要涉及BootStrapCLOG、StartupCLOG。

2024-09-26 10:49:32 283

原创 海山数据库(He3DB)源码详解:CommitSubTransaction函数

李超,移动云数据库工程师,负责云原生数据库He3DB的研发。出子事务节点。恢复事务状态为默认状态。调用PopTransaction()函数从事务链栈中弹出子事务节点。李超,移动云数据库工程师,负责云原生数据库He3DB的研发。

2024-09-26 10:47:48 1007

原创 海山数据库(He3DB)源码详解:AbortSubTransaction函数

李超,移动云数据库工程师,负责云原生数据库He3DB的研发。1. 恢复上层事务的只读状态,同时恢复中断机制;2. AbortSubTransaction函数执行完成,但是依旧有一些资源尚未清理,会在后续CleanupSubTransaction()函数中执行。## 作者介绍李超,移动云数据库工程师,负责云原生数据库He3DB的研发。

2024-09-26 10:46:58 937

原创 海山数据库(He3DB)源码解读:海山PG 词法、语法分析

查询分析中词法分析和语法分析分别借助词法分析工具Lex和语法分析工具 Yacc来完成各自的工作。exec_simple_query函数(在src/backend/tcop/postgres.c下)调用函数pg_parse_query进入词法分析和语法分析的主过程,函数pg_parse_query再调用词法分析和语法分析的入口函数raw_parser生成分析树;函数pg_parse_query返回分析树(raw_parsetree_list)给exec_simple_query;

2024-09-26 10:46:21 990

原创 海山数据库(He3DB)技术分享:客户端认证

1.pg_hba.conf 参数文件定义了允许哪些主机以什么样的方式连接到哪些数据库。

2024-09-26 10:42:57 890

原创 海山数据库(He3DB)技术分享:He3DB Virtual File Descriptor实现原理

He3DB 中的 VFD 机制通过对操作系统文件描述符的抽象和扩展,实现了数据库文件操作的高效管理。VFD 的设计包括全局 VfdCache 数组、LRU 链表管理策略、动态分配和回收机制等。通过这些机制,He3DB 能够在高负载环境下有效管理文件资源,确保数据库的稳定性和性能。VFD 的实现细节充分展示了 He3DB 在资源管理方面的精细设计和优化思路。通过这一机制,系统不仅能够高效地管理文件描述符,还能够在资源紧张时灵活调度,确保数据库系统的平稳运行。。

2024-09-26 10:42:00 862

原创 海山数据库(He3DB)+AI(四):一种基于迁移学习的启发式数据库旋钮调优方法

在海山数据库(He3DB)+AI(三)中,介绍了四种旋钮调优方法:基于启发式,基于贝叶斯,基于深度学习和基于强化学习,还介绍了迁移学习技巧。本文带来2024 VLDB的论文:An Efficient Transfer Learning Based Configuration Adviser for Database Tuning,介绍一种基于迁移学习的启发式数据库调优方法。

2024-09-26 10:41:07 916

原创 海山数据库(He3DB)+AI(五):一种基于强化学习的数据库旋钮调优方法

在海山数据库(He3DB)+AI(三)中,介绍了四种旋钮调优方法:基于启发式,基于贝叶斯,基于深度学习和基于强化学习。本文介绍一种基于强化学习的旋钮调优方法:QTune: A Query-Aware Database Tuning System with Deep Reinforcement Learning。

2024-09-26 10:40:32 722

原创 海山数据库(He3DB)+AI(三):旋钮调优问题综述

旋钮调优问题可以被分为4个子问题:1)调优的目标是什么?2)调什么?3)以什么去调?4)如何调?如图1所示。图1 旋钮调优问题1)调优的目标是什么?对于一个数据库系统来说,调优的目标主要可分为两个方面:一是提高系统的性能,如吞吐量、延迟;二是在不牺牲性能的情况下提高资源利用率。此外,对于一个调优方法来说,其评价标准除性能和资源利用率外,还包括适应性和安全两个维度。2)调什么?调整的是数据库系统中数以千计的旋钮。

2024-09-26 10:38:14 773

原创 海山数据库(He3DB)源码详解:CommitTransaction函数源码详解

李超,移动云数据库工程师,负责云原生数据库He3DB的研发。0;### 2.6 提交事务:> 修改事务状态为TRANS_DEFAULT,放开中断机制,完成事务提交。```c++李超,移动云数据库工程师,负责云原生数据库He3DB的研发。

2024-08-22 16:31:22 1006

原创 海山数据库(He3DB)源码详解:XLogFlush函数

在PostgreSQL中,可能由于多种原因(如新的WAL数据需要被发送到从服务器,或者从服务器请求了更多的WAL数据)而需要唤醒这些进程。说明期望刷新到record指定的位置,但实际只刷到了LogwrtResult.Flush指定的位置。前面开启了临界区,仅一个进程或线程能访问共享资源,这里用自旋锁保护共享资源访问,避免数据竞争。尝试获取WAL写锁。如果无法立即获取,则等待直到锁被释放,并重新检查是否需要执行刷新操作。频繁写入磁盘,IO增加,为了优化,通常采取批量处理写入操作,减少磁盘IO次数。

2024-08-22 16:30:45 807

原创 海山数据库(He3DB)源码详解:事务源码执行过程

可以看出,一个DDL或DML语句的完成执行过程,在源码底层中:首先,要通过事务块操作函数判断事务块状态,来选择具体要执行的事务行为;之后,通过对应的事务操作函数执行事务过程,包括事务开始、事务提交、事务放弃和事务清理。李超,移动云数据库工程师,负责云原生数据库He3DB的研发。action`。李超,移动云数据库工程师,负责云原生数据库He3DB的研发。

2024-08-22 16:30:10 257

原创 海山数据库(He3DB)源码详解:He3DB-XLogWrite函数

如果已经刷新的日志位置同时小于请求刷新的位置以及已经完成写入的位置(这表明有部分数据已经写入但未刷新到磁盘,且这部分是请求要求刷新的部分)如果该函数返回false,表示当前的写入操作已经超出了当前日志分段的范围,因此需要切换到新的日志分段。如果没有写入错误,则更新对应的剩余写入字符、起始位置指针以及偏移量。被初始化为 0,表示还没有找到任何可以连续写入的页面。该函数将传入的已经写入的末位置转换为缓存页面的索引。该循环只能在请求写入的位置大于已经写入位置才能进行。减到0,即完成所有数据的写入。

2024-08-22 16:27:41 679

原创 海山数据库(He3DB)源码详解:CleanupTransaction函数源码详解

李超,移动云数据库工程师,负责云原生数据库He3DB的研发。ransaction函数中进行过日志记录操作,所以这里不需要再进行日志记录。李超,移动云数据库工程师,负责云原生数据库He3DB的研发。

2024-08-22 16:26:58 482

原创 海山数据库(He3DB)+AI(二)大模型架构Transformer

[TOC]

2024-08-22 16:26:07 556

原创 海山数据库(He3DB)+AI:(一)神经网络基础

本文介绍了一种较为简单的前馈神经网络,介绍其基本组件、模型结构、前向计算流程,并简单介绍了模型的训练原理。前馈神经网络是大多数深度模型的基石,在此基础上演化出更加结构更加复杂的深度模型,如在前馈神经的网络的基础上根据图像数据的特征,使用稀疏交互、等变表示和参数共享的思想设计出卷积神经网络。在transformer中,前馈神经网络被用来实现用自注意力机制,捕捉输入序列中的长程依赖关系,并更好地理解输入序列中的语义信息。

2024-08-22 16:21:23 598

原创 海山数据库(He3DB)源码解读:海山PG 文件的打开与关闭

殷子婷 移动云数据库工程师,负责云原生数据库He3DB的研发。

2024-08-22 16:18:17 224

原创 海山数据库(He3DB)源码详解:StartTransaction函数

李超,移动云数据库工程师,负责云原生数据库He3DB的研发。

2024-08-14 16:13:05 436

原创 海山数据库(He3DB)源码详解:AbortTransaction函数

李超,移动云数据库工程师,负责云原生数据库He3DB的研发。

2024-08-14 16:12:29 682

原创 海山数据库(He3DB)源码解读:海山PG 虚拟文件描述符VFD

殷子婷 移动云数据库工程师,负责云原生数据库He3DB的研发,将池中末尾的VFD(最少使用的VFD)删掉,这样新打开的VFD就可以插人到LRU 中。注意,这里被删除的VFD仅仅只是从 LRU 池中脱链并关闭其对应的物理文件,VFD结构本身并不做其他修改和删除。因为进程后面的操作还可能会用到该VFD所对应的物理文件。

2024-08-14 16:11:55 395

原创 海山数据库(He3DB)源码解读:He3DB-XLogInsert函数

薛炬,移动云数据库工程师,负责云原生数据库He3DB的研发。

2024-08-14 16:11:16 363

原创 海山数据库(He3DB)源码解读:He3DB GUC配置参数

GUC(Grand Unified Configuration)参数,其实指的就是pg中的各类参数。2.{3. PGC_INTERNAL, // 只能通过内部进程设置的参数,用户不能设置4. PGC_POSTMASTER, // 只能在postmaster启动时,通过读取配置文件或解析命令行参数配置(重启生效)5. PGC_SIGHUP, // 只能在postmaster启动时,或者改变配置文件后发送SIGHUP信号设置(重启或执行pg_reload_conf();生效)

2024-08-14 16:10:26 334

原创 海山数据库(He3DB)技术分享:同步复制

He3DB 是一个先进的开源关系数据库管理系统,支持多种复制模式,其中同步复制是一种重要的高可用性解决方案。同步复制的核心目的是确保主节点(primary)和一个或多个备用节点(standby)之间的数据一致性。主节点(Primary):负责处理客户端的读写请求。数据更改操作会记录在WAL(Write-Ahead Log)日志中。备用节点(Standby):从主节点接收并应用WAL日志,以保持数据同步。可以是只读的(hot standby),用于查询和负载均衡。

2024-08-14 16:09:40 228

原创 海山数据库(He3DB)技术分析:异步复制

张杰,移动云数据库工程师,负责云原生数据库He3DB的研发。

2024-08-14 16:08:23 667

原创 海山数据库(He3DB)源码解读:海山PG 死锁处理实现

按照功能划分,锁管理分为锁功能模块,锁级别管理模块,死锁处理模块。锁功能模块:针对三种类型的锁功能,自旋锁,轻量级锁,事务锁。锁级别管理模块:针对四种不同级别的锁管理器,表级别、页级别、元组级别、事务级别。死锁处理模块:包括死锁检测功能和死锁处理功能。图1 锁管理模块介绍徐元慧,移动云数据库高级系统架构师,负责云原生数据库He3DB的架构设计与研发。oftEdges, int *nSoftEdges) | 死锁环递归检测 |

2024-07-26 14:24:46 819

原创 海山数据库(He3DB)源码解读:海山PG 事务锁实现

按照功能划分,锁管理分为锁功能模块,锁级别管理模块,死锁处理模块。锁功能模块:针对三种类型的锁功能,自旋锁,轻量级锁,事务锁。锁级别管理模块:针对四种不同级别的锁管理器,表级别、页级别、元组级别、事务级别。死锁处理模块:包括死锁检测功能和死锁处理功能。图1 锁管理模块介绍徐元慧,移动云数据库高级系统架构师,负责云原生数据库He3DB的架构设计与研发。

2024-07-26 14:21:01 1059

原创 海山数据库(He3DB)源码解读:海山PG SpinLock实现

按照功能划分,锁管理分为锁功能模块,锁级别管理模块,死锁处理模块。锁功能模块:针对三种类型的锁功能,自旋锁,轻量级锁,事务锁。锁级别管理模块:针对四种不同级别的锁管理器,表级别、页级别、元组级别、事务级别。死锁处理模块:包括死锁检测功能和死锁处理功能。图1 锁管理模块介绍徐元慧,移动云数据库高级系统架构师,负责云原生数据库He3DB的架构设计与研发。

2024-07-26 14:19:03 824

原创 海山数据库(He3DB)源码解读:海山PG LWLock实现

按照功能划分,锁管理分为锁功能模块,锁级别管理模块,死锁处理模块。锁功能模块:针对三种类型的锁功能,自旋锁,轻量级锁,事务锁。锁级别管理模块:针对四种不同级别的锁管理器,表级别、页级别、元组级别、事务级别。死锁处理模块:包括死锁检测功能和死锁处理功能。图1 锁管理模块介绍徐元慧,移动云数据库高级系统架构师,负责云原生数据库He3DB的架构设计与研发。

2024-07-26 14:15:01 281

原创 海山数据库(He3DB)性能优化方案解析

前端优化是一个永恒的话题,每个前端开发者都希望自己的页面能够快速加载,给用户良好的体验。但往往事与愿违。因此,本文从编码优化、构建优化、部署优化三方面入手进行web页面性能优化。

2024-07-26 14:13:59 647

google F1 paper

Google 最新分布式数据库介绍,用于支持Google的广告系统,可以做到全球数据同步,数据一致性。

2015-10-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除