- 博客(26)
- 问答 (1)
- 收藏
- 关注
原创 海山数据库(He3DB)源码详解:CleanupTransaction函数源码详解
本文介绍了事务放弃过程中,释放资源并修改事务状态的函数CleanupTransaction执行流程。
2024-08-22 10:25:13
254
原创 海山数据库(He3DB)源码详解:He3DB-XLogWrite函数
如果已经刷新的日志位置同时小于请求刷新的位置以及已经完成写入的位置(这表明有部分数据已经写入但未刷新到磁盘,且这部分是请求要求刷新的部分)如果该函数返回false,表示当前的写入操作已经超出了当前日志分段的范围,因此需要切换到新的日志分段。如果没有写入错误,则更新对应的剩余写入字符、起始位置指针以及偏移量。被初始化为 0,表示还没有找到任何可以连续写入的页面。该函数将传入的已经写入的末位置转换为缓存页面的索引。该循环只能在请求写入的位置大于已经写入位置才能进行。减到0,即完成所有数据的写入。
2024-08-22 10:22:11
670
原创 海山数据库(He3DB)源码解读:海山PG 文件的打开与关闭
He3DB for PostgreSQL中的文件管理是一个复杂但关键的部分,它涉及到数据库文件的存储、组织、维护和备份等多个方面。He3DB for PostgreSQL的文件系统主要由几个关键目录和文件组成,这些文件和目录在数据库的安装和运行过程中起着至关重要的作用,因此需要管理员具备丰富的知识和经验来管理数据库中的文件,以确保数据库的稳定运行和高效性能。
2024-08-22 10:20:46
903
原创 海山数据库(He3DB)源码解读:海山PG 词法、语法分析
He3DB for PostgreSQL是受Aurora论文启发,基于开源数据库PostgreSQL 改造的数据库产品。架构上实现计算存储分离,并进一步支持数据的冷热分层,大幅提升产品的性价比。 He3DB for PostgreSQL中查询编译的主要任务是根据用户的查询语句生成数据库中最优执行计划,在此过程中要考虑视图、规则以及表的连接路径等问题。
2024-08-22 10:20:09
289
原创 海山数据库(He3DB)+AI(二)大模型架构Transformer
2022年被称为大模型元年,ChatGPT4的横空出世引起了国内外的研究热潮,而GPT4正是基于Transformer这一架构,本文详细介绍Transformer架构,介绍其从输入到输出的全部计算流程。
2024-08-22 10:18:57
807
原创 海山数据库(He3DB)+AI:(一)神经网络基础
神经网络可以被视为一个万能的拟合器,通过深层的隐藏层实现输入数据到输出结果的映射。神经网络的思想源于对大脑的模拟,在其发展过程中历了三大浪潮:感知器时代(1940s-1960s)、BP算法时代(1980-1995))和深度学习时代(2006-至今)。在深度学习时代,随着众多研究学者的投入和硬件的发展,从结构较为简单的前馈神经网络,到针对图像数据的卷积神经网络,到处理序列数据的循环神经网络,再到捕捉长距离依赖的transformer,神经网络在多个任务上展现出强大的生命力。2022年,基于transforme
2024-08-22 10:18:20
871
原创 海山数据库(He3DB)技术分析:异步复制
异步复制(Asynchronous Replication)是He3DB提供的一种数据库复制方式。它允许数据在主服务器和从服务器之间进行复制,而不要求从服务器与主服务器在事务提交时保持同步。主服务器将事务日志(WAL)传送给从服务器,但不等待从服务器确认其已经接收到或应用这些日志。这种复制方式可以减少主服务器的等待时间,提高写性能,但可能导致数据在从服务器上有一定延迟。
2024-08-15 09:38:09
795
原创 海山数据库(He3DB)技术分享:同步复制
He3DB 是一个先进的开源关系数据库管理系统,支持多种复制模式,其中同步复制是一种重要的高可用性解决方案。同步复制的核心目的是确保主节点(primary)和一个或多个备用节点(standby)之间的数据一致性。
2024-08-15 09:37:11
895
原创 海山数据库(He3DB)源码解读:He3DB GUC配置参数
He3DB for PostgreSQL是受Aurora论文启发,基于开源数据库PostgreSQL 改造的数据库产品。架构上实现计算存储分离,并进一步支持数据的冷热分层,大幅提升产品的性价比。 He3DB for PostgreSQL中GUC是一套用于控制数据库配置的参数系统。GUC 参数允许数据库管理员根据需要调整数据库的行为和性能。
2024-08-15 09:36:30
738
原创 海山数据库(He3DB)源码解读:海山PG 虚拟文件描述符VFD
在操作系统中,当一个进程创建或是打开一个文件时,操作系统会为该文件分配一个唯一文件描述符(或者叫文件句柄),并通过该文件描述符来唯一标识和操作该文件。由于每个操作系统都对一个进程能打开的文件数加以限制,因此进程能获得的文件描述符是有限的。对于经常需要打开许多文件的数据库进程来说,很容易就会超过操作系统对于文件描述符数量的限制。为了解决这个问题,在PostgreSQL中使用了虚拟文件描述符(VFD)机制,并实现了相应的管理机制。
2024-08-15 09:35:11
866
原创 海山数据库(He3DB)源码详解:AbortTransaction函数
本文介绍了事务提交过程中,具体执行提交任务的AbortTransaction函数详细执行流程。
2024-08-15 09:34:39
649
原创 海山数据库(He3DB)源码详解:CommitTransaction函数源码详解
本文介绍了事务提交过程中,具体执行提交任务的CommitTransaction函数详细执行流程。
2024-08-15 09:34:08
863
原创 海山数据库(He3DB)源码详解:StartTransaction函数
本文介绍了事务提交过程中,具体执行提交任务的StartTransaction函数详细执行流程。
2024-08-15 09:33:36
975
原创 海山数据库(He3DB)源码解读:海山PG 死锁处理实现
按照功能划分,锁管理分为锁功能模块,锁级别管理模块,死锁处理模块。锁功能模块:针对三种类型的锁功能,自旋锁,轻量级锁,事务锁。锁级别管理模块:针对四种不同级别的锁管理器,表级别、页级别、元组级别、事务级别。死锁处理模块:包括死锁检测功能和死锁处理功能。图1 锁管理模块介绍徐元慧,移动云数据库高级系统架构师,负责云原生数据库He3DB的架构设计与研发。
2024-07-26 14:45:12
316
原创 海山数据库(He3DB)源码解读:海山PG 事务锁实现
按照功能划分,锁管理分为锁功能模块,锁级别管理模块,死锁处理模块。锁功能模块:针对三种类型的锁功能,自旋锁,轻量级锁,事务锁。锁级别管理模块:针对四种不同级别的锁管理器,表级别、页级别、元组级别、事务级别。死锁处理模块:包括死锁检测功能和死锁处理功能。图1 锁管理模块介绍徐元慧,移动云数据库高级系统架构师,负责云原生数据库He3DB的架构设计与研发。
2024-07-26 14:44:35
230
原创 海山数据库(He3DB)源码解读:海山PG SpinLock实现
按照功能划分,锁管理分为锁功能模块,锁级别管理模块,死锁处理模块。锁功能模块:针对三种类型的锁功能,自旋锁,轻量级锁,事务锁。锁级别管理模块:针对四种不同级别的锁管理器,表级别、页级别、元组级别、事务级别。死锁处理模块:包括死锁检测功能和死锁处理功能。图1 锁管理模块介绍徐元慧,移动云数据库高级系统架构师,负责云原生数据库He3DB的架构设计与研发。
2024-07-26 14:43:59
360
原创 海山数据库(He3DB)源码解读:海山PG LWLock实现
按照功能划分,锁管理分为锁功能模块,锁级别管理模块,死锁处理模块。锁功能模块:针对三种类型的锁功能,自旋锁,轻量级锁,事务锁。锁级别管理模块:针对四种不同级别的锁管理器,表级别、页级别、元组级别、事务级别。死锁处理模块:包括死锁检测功能和死锁处理功能。图1 锁管理模块介绍徐元慧,移动云数据库高级系统架构师,负责云原生数据库He3DB的架构设计与研发。
2024-07-26 14:43:25
313
原创 海山数据库(He3DB)性能优化方案解析
前端优化是一个永恒的话题,每个前端开发者都希望自己的页面能够快速加载,给用户良好的体验。但往往事与愿违。因此,本文从编码优化、构建优化、部署优化三方面入手进行web页面性能优化。
2024-07-26 14:42:54
301
原创 海山数据库(He3DB)技术解析:海山数据库智能调参技术实践
调整数据库系统以在给定工作负载上实现最佳性能是数据库社区中长期存在的问题。LlamaTune作为一种简单高效的DBMS 参数微调方法,除了在微调时间上较传统的SMAC方法降低了超50%,但是其参数微调之后的SQL平均运行时间缩短了超过20%,具有稳定优势。此外人工挑选的少量参数,在经过Llamatune和smac微调之后,SQL的平均运行时间基本没什么变化,说明少量参数在经过算法模型微调后效果有限,其参数之间的关联性和约束不易捕捉。
2024-07-26 14:42:11
290
原创 海山数据库(He3DB)技术解析:海山Redis定时任务与持久化管控设计
针对这类共性问题,定时任务和持久化管控组件应运而生,通过定时任务的动态规划和数据持久化的管控分发,尽可能减少某一时刻持久化任务密集的情况,从而确保云盘服务的稳定性。本文将从源码设计层面通过问答的形式分析移动云Redis产品定时任务与持久化管控组件的设计思路。定时任务与持久化管控组件基于K8s的选主机制,通过pod自管的方式实现了多副本容灾功能,并且确保定时任务和实例持久化在设定时间只会执行一次,有效避免多副本多次执行同一任务的情形,确保了云盘服务的稳定性,减少了云上数据库实例的告警报障。
2024-07-26 14:41:35
340
原创 海山数据库(He3DB)技术解析:海山PG FSM实现机制
时丕显,移动云数据库内核研发工程师,负责云原生数据库海山PostgreSQL版的功能设计与研发。
2024-07-26 14:41:00
294
原创 海山数据库(He3DB)技术分享:海山MySQL备份redo被覆盖问题分析
根据上述表格,大概可以总结出以下结论:redo写入速率越快,备份报错时间越短,我们通过获取备份时间内的redo写入大小除以备份报错时长得到redo写入速率,再根据redolog的总大小除以备份报错时长得到redo拷贝速率,两者相减得到偏差速率(即每秒未完成拷贝的redo大小)。通过计算redo写入速率和偏差速率的比率,得到1个相对平均的比率值约等于0.56,即redo写入速率 * 0.56 ≈ 偏差速率。
2024-07-26 14:40:27
306
原创 海山数据库(He3DB)技术分享:海山MySQL 5.7版本GTID丢失问题分析及解决方案
本文将从源码层面分析MySQL 5.7因异常重启导致整个binlong中GTID丢失问题,并逐步梳理出MySQL 5.7中GTID持久化和初始化的过程。本问题的复现步骤、产生的原因、修复方案均以BUG和patch的方式反馈给了社区,percona社区已经在其5.7版本中merge了我们贡献的patch代码。
2024-07-26 14:39:50
218
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人