自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2024-09-25 15:07:47 938

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

He3DB for PG中为了实现多版本并发控制,当事务删除或更新元组时,并非从物理上删除,而是将其标记为无效的方式进行标记删除,最终对这些无效元组的清理操作需要调用VACUUM完成。

2024-09-25 15:06:31 729

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

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

2024-09-25 15:05:53 787

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

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

2024-09-25 15:05:00 831

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

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

2024-09-24 17:23:05 382

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

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

2024-09-24 17:22:35 206

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

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

2024-09-24 17:21:53 525

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

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

2024-09-24 17:20:15 825

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

He3DB for PostgreSQL是受Aurora论文启发,基于开源数据库PostgreSQL 改造的数据库产品。架构上实现计算存储分离,并进一步支持数据的冷热分层,大幅提升产品的性价比。   He3DB for PostgreSQL中查询编译的主要任务是根据用户的查询语句生成数据库中最优执行计划,在此过程中要考虑视图、规则以及表的连接路径等问题。

2024-09-24 17:19:44 385

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

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

2024-09-24 17:19:10 498

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

在 He3DB 这样的数据库系统中,文件操作不仅频繁而且复杂。操作系统提供的文件描述符(FD)数量是有限的,尤其在高并发和大规模数据库操作中,文件描述符资源可能迅速耗尽。为了应对这一挑战,He3DB 引入了 VFD 机制。VFD 通过抽象操作系统的文件描述符,实现了一个虚拟层,使得系统能够有效管理文件资源,同时确保性能的稳定性。

2024-09-24 17:18:31 882

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

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

2024-09-24 17:17:56 988

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

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

2024-09-24 17:17:24 758

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

在数据库优化问题中,旋钮调优(knob tuning)对系统的性能或资源利用起着至关重要的作用,该问题面临如下挑战:1)数据库配置中有成千上百的旋钮配置,如何确定哪旋钮会影响数据库的性能和资源使用?2)面对巨大的搜索空间,如何在有限时间内找到合适的配置参数?3)随着云服务的增长,需要为各种情况如不同的应用程序、数据集和硬件,调整大量的数据库实例,如何应对越来越棘手的情况?随机机器学习的发展,越来越多基于学习的调参方法被提出,其主要思想是搜集旋钮配置及对应的性能数据,让模型去训练学习,使得在遇到相似场景时

2024-09-24 17:16:53 720

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

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

2024-08-22 10:14:32 968

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

本文介绍了He3DB数据库在DDL和DML操作过程中,两种事务在底层源码执行流程细节。

2024-08-22 10:13:35 314

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

本文介绍了事务放弃过程中,释放资源并修改事务状态的函数CleanupTransaction执行流程。

2024-08-22 10:12:50 565

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

He3DB for PostgreSQL中的文件管理是一个复杂但关键的部分,它涉及到数据库文件的存储、组织、维护和备份等多个方面。He3DB for PostgreSQL的文件系统主要由几个关键目录和文件组成,这些文件和目录在数据库的安装和运行过程中起着至关重要的作用,因此需要管理员具备丰富的知识和经验来管理数据库中的文件,以确保数据库的稳定运行和高效性能。

2024-08-22 10:12:16 750

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

He3DB for PostgreSQL是受Aurora论文启发,基于开源数据库PostgreSQL 改造的数据库产品。架构上实现计算存储分离,并进一步支持数据的冷热分层,大幅提升产品的性价比。   He3DB for PostgreSQL中查询编译的主要任务是根据用户的查询语句生成数据库中最优执行计划,在此过程中要考虑视图、规则以及表的连接路径等问题。

2024-08-22 10:11:44 309

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

2022年被称为大模型元年,ChatGPT4的横空出世引起了国内外的研究热潮,而GPT4正是基于Transformer这一架构,本文详细介绍Transformer架构,介绍其从输入到输出的全部计算流程。

2024-08-22 10:11:12 653

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

神经网络可以被视为一个万能的拟合器,通过深层的隐藏层实现输入数据到输出结果的映射。神经网络的思想源于对大脑的模拟,在其发展过程中历了三大浪潮:感知器时代(1940s-1960s)、BP算法时代(1980-1995))和深度学习时代(2006-至今)。在深度学习时代,随着众多研究学者的投入和硬件的发展,从结构较为简单的前馈神经网络,到针对图像数据的卷积神经网络,到处理序列数据的循环神经网络,再到捕捉长距离依赖的transformer,神经网络在多个任务上展现出强大的生命力。2022年,基于transforme

2024-08-22 10:10:40 519

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

异步复制(Asynchronous Replication)是He3DB提供的一种数据库复制方式。它允许数据在主服务器和从服务器之间进行复制,而不要求从服务器与主服务器在事务提交时保持同步。主服务器将事务日志(WAL)传送给从服务器,但不等待从服务器确认其已经接收到或应用这些日志。这种复制方式可以减少主服务器的等待时间,提高写性能,但可能导致数据在从服务器上有一定延迟。

2024-08-15 09:29:32 930

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

He3DB 是一个先进的开源关系数据库管理系统,支持多种复制模式,其中同步复制是一种重要的高可用性解决方案。同步复制的核心目的是确保主节点(primary)和一个或多个备用节点(standby)之间的数据一致性。

2024-08-15 09:28:56 682

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

He3DB for PostgreSQL是受Aurora论文启发,基于开源数据库PostgreSQL 改造的数据库产品。架构上实现计算存储分离,并进一步支持数据的冷热分层,大幅提升产品的性价比。   He3DB for PostgreSQL中GUC是一套用于控制数据库配置的参数系统。GUC 参数允许数据库管理员根据需要调整数据库的行为和性能。

2024-08-15 09:28:25 840

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

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

2024-08-15 09:27:44 305

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

在操作系统中,当一个进程创建或是打开一个文件时,操作系统会为该文件分配一个唯一文件描述符(或者叫文件句柄),并通过该文件描述符来唯一标识和操作该文件。由于每个操作系统都对一个进程能打开的文件数加以限制,因此进程能获得的文件描述符是有限的。对于经常需要打开许多文件的数据库进程来说,很容易就会超过操作系统对于文件描述符数量的限制。为了解决这个问题,在PostgreSQL中使用了虚拟文件描述符(VFD)机制,并实现了相应的管理机制。

2024-08-15 09:27:12 779

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

本文介绍了事务提交过程中,具体执行提交任务的AbortTransaction函数详细执行流程。

2024-08-15 09:26:41 731

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

本文介绍了事务提交过程中,具体执行提交任务的CommitTransaction函数详细执行流程。

2024-08-15 09:26:09 902

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

本文介绍了事务提交过程中,具体执行提交任务的StartTransaction函数详细执行流程。

2024-08-15 09:25:36 1044

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

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

2024-07-26 09:58:02 284

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

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

2024-07-26 09:57:21 285

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

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

2024-07-26 09:56:50 216

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

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

2024-07-26 09:56:16 251

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

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

2024-07-26 09:55:43 392

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

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

2024-07-26 09:54:53 415

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

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

2024-07-26 09:54:14 328

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

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

2024-07-26 09:53:44 247

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

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

2024-07-26 09:53:00 282

原创 海山数据库(He3DB)技术分享:海山MySQL 5.7版本GTID丢失问题分析及解决方案

本文将从源码层面分析MySQL 5.7因异常重启导致整个binlong中GTID丢失问题,并逐步梳理出MySQL 5.7中GTID持久化和初始化的过程。本问题的复现步骤、产生的原因、修复方案均以BUG和patch的方式反馈给了社区,percona社区已经在其5.7版本中merge了我们贡献的patch代码。

2024-07-26 09:52:28 344

空空如也

空空如也

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

TA关注的人

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