自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 收藏
  • 关注

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

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

2024-09-24 16:45:45 580

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

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

2024-09-24 16:18:22 736

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

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

2024-09-24 16:18:08 864

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

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

2024-09-24 16:12:52 329

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

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

2024-09-24 16:12:27 413

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

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

2024-09-24 16:10:49 1036

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

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

2024-09-24 16:10:11 341

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

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

2024-09-24 16:09:31 383

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

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

2024-09-24 16:08:10 279

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

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

2024-09-24 16:07:34 606

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

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

2024-09-24 16:06:52 252

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

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

2024-09-24 16:06:19 355

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

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

2024-09-24 16:05:13 976

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

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

2024-09-24 16:04:18 617

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

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

2024-09-24 16:03:31 870

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

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

2024-08-22 11:22:14 594

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

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

2024-08-22 11:20:33 311

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

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

2024-08-22 11:19:59 1057

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

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

2024-08-22 11:19:19 802

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

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

2024-08-22 11:18:42 660

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

就需要执行ReleaseLruFile 操作,将池中末尾的VFD(最少使用的VFD)删掉,这样新打开的VFD就可以插人到LRU 中。注意,这里被删除的VFD仅仅只是从 LRU 池中脱链并关闭其对应的物理文件,VFD结构本身并不做其他修改和删除。因为进程后面的操作还可能会用到该VFD所对应的物理文件。

2024-08-22 11:18:12 897

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

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

2024-08-22 11:17:06 610

原创 海山数据库(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-08-22 11:16:30 1029

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

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

2024-08-22 11:15:55 270

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

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

2024-08-22 11:15:15 622

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

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

2024-08-22 11:14:39 878

原创 海山数据库(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-22 11:14:08 946

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

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

2024-08-22 11:13:36 753

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

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

2024-08-22 11:13:04 811

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

在翻译每个token时,需要关注该token在序列中的上下文信息,如“海山数据库”这个token,在翻译时需要更多的关注“海山数据库”(本身),“性能领先”(特点),“数据库产品”(定义)和“使用成本”(特点)等token,其余token在翻译时需要分配的注意力相对较少,图中线的粗细表示其他token对当前token的重要程度,即构建长短依赖关系。在2.2节的词嵌入中,两个token在内积时具有更大的值,表示其相似度更高,因此,将当前token与其余token进行内积,可求出两者之间的相似度。

2024-08-22 11:12:25 742

原创 DTCC 2024 第十五届中国数据库技术大会

移动云海山数据库由云向算演进之路

2024-08-20 10:58:41 189

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

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

2024-07-26 09:06:31 427

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

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

2024-07-26 09:05:54 428

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

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

2024-07-26 09:05:23 398

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

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

2024-07-26 09:04:47 359

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

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

2024-07-26 09:04:16 392

原创 海山数据库(He3DB)技术解析:海山数据库智能调参技术实践

调整数据库系统以在给定工作负载上实现最佳性能是数据库社区中长期存在的问题。LlamaTune作为一种简单高效的DBMS 参数微调方法,除了在微调时间上较传统的SMAC方法降低了超50%,但是其参数微调之后的SQL平均运行时间缩短了超过20%,具有稳定优势。此外人工挑选的少量参数,在经过Llamatune和smac微调之后,SQL的平均运行时间基本没什么变化,说明少量参数在经过算法模型微调后效果有限,其参数之间的关联性和约束不易捕捉。

2024-07-26 09:03:44 284

原创 海山数据库(He3DB)技术解析:海山Redis定时任务与持久化管控设计

针对这类共性问题,定时任务和持久化管控组件应运而生,通过定时任务的动态规划和数据持久化的管控分发,尽可能减少某一时刻持久化任务密集的情况,从而确保云盘服务的稳定性。本文将从源码设计层面通过问答的形式分析移动云Redis产品定时任务与持久化管控组件的设计思路。定时任务与持久化管控组件基于K8s的选主机制,通过pod自管的方式实现了多副本容灾功能,并且确保定时任务和实例持久化在设定时间只会执行一次,有效避免多副本多次执行同一任务的情形,确保了云盘服务的稳定性,减少了云上数据库实例的告警报障。

2024-07-26 09:03:12 355

原创 海山数据库(He3DB)技术解析:海山PG FSM实现机制

时丕显,移动云数据库内核研发工程师,负责云原生数据库海山PostgreSQL版的功能设计与研发。

2024-07-26 09:02:38 213

原创 海山数据库(He3DB)技术分享:海山MySQL备份redo被覆盖问题分析

根据上述表格,大概可以总结出以下结论:redo写入速率越快,备份报错时间越短,我们通过获取备份时间内的redo写入大小除以备份报错时长得到redo写入速率,再根据redolog的总大小除以备份报错时长得到redo拷贝速率,两者相减得到偏差速率(即每秒未完成拷贝的redo大小)。通过计算redo写入速率和偏差速率的比率,得到1个相对平均的比率值约等于0.56,即redo写入速率 * 0.56 ≈ 偏差速率。

2024-07-26 09:02:04 381

空空如也

空空如也

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

TA关注的人

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