自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 大云海山数据库(He3DB) 内核分析 — pg_migrate源码流程

PostgreSQL原生缺乏online DDL功能,在执行某些DDL操作(如修改列类型)时需要长时间锁表,影响高并发系统。pg_migrate插件通过以下流程实现无锁表结构变更:1)收集表结构信息并创建临时表;2)添加咨询锁和触发器记录增量数据;3)分两阶段拷贝数据到临时表;4)单/多线程重建索引;5)应用增量数据并校验约束;6)短暂持有排他锁完成表名切换;7)清理临时对象。该方案通过连接分离、增量同步和锁优化,显著减少锁表时间,支持并发DML操作。

2026-01-06 16:21:48 609

原创 大云海山数据库(He3DB) 内核分析-子查询优化

文章摘要:本文分析了He3DB中子查询优化的实现,重点探讨了子连接上拉和子查询上拉两种优化技术。子连接上拉主要处理EXISTS_SUBLINK和ANY_SUBLINK类型,将其转换为半连接或反连接;子查询上拉则通过pull_up_subqueries_recurse函数实现,需满足特定条件才能提升简单子查询。文章详细说明了各类子查询的转换条件、处理流程及代码实现逻辑,揭示了He3DB子查询优化的实现机制与限制。

2026-01-04 10:46:31 950

原创 大云海山数据库(He3DB) 内核分析 — Btree索引篇

本文重点分析了He3DB数据库中B-Tree索引的实现原理。首先介绍了B+Tree的基本结构特点,包括键值存储在叶子节点、叶子节点双向链接等。随后详细阐述了索引的创建过程,包括元组转换、排序、页面填充及B+Tree构建等关键步骤。在查询方面,解释了索引扫描的工作原理及与回表操作的配合机制。对于数据更新,分析了索引插入时的页面分裂处理流程,以及删除操作中标记删除与物理删除的区别。最后总结了B+Tree索引在等值和范围查询中的优势,并指出其内部节点与叶子节点的不同指向特点。

2026-01-04 10:36:23 865

原创 大云海山数据库(He3DB)兼容 MySQL 日期函数:DATE_ADD的内核实现与复合间隔支持

本文针对大云海山数据库(He3DB)兼容MySQL生态时缺乏DATE_ADD和DATE_SUB函数的问题,提出了一种内核级解决方案。通过在语法解析器和时间处理模块中新增C函数,实现了对MySQL特有的11种复合时间间隔格式的完整支持。该方案采用"语法扩展+格式转换+原生运算"的三层架构,成功实现了与MySQL完全兼容的时间运算功能,显著降低了数据库迁移成本,为异构数据库兼容提供了可复用的技术范式。

2025-12-23 15:29:14 1013

原创 大云海山数据库(He3DB)基于pg_mooncake插件实现列存兼容

摘要:pg_mooncake是一款PostgreSQL列存兼容插件,通过扩展表访问方法接口实现高效的列存储能力。该插件采用分区存储、压缩算法和列存索引优化,支持事务一致性和并行查询,查询效率提升5-10倍,存储空间减少40%-70%。安装需满足PostgreSQL版本和依赖库要求,支持创建列存表并指定压缩策略,与行存表协同工作。适用于OLAP场景,但不适合高频单条操作,建议批量插入并定期维护。

2025-12-23 15:11:29 729

原创 大云海山数据库(He3DB) 负载均衡动态调整流量方案原理说明

本文介绍了He3DB的自适应请求处理机制,通过He3Proxy中间件实现基于节点负载的智能路由。系统采用Prometheus采集DB节点的CPU、内存、磁盘IO等指标,通过加权算法计算节点健康值,Proxy定期更新并选择最优节点处理读请求。测试验证表明,当主节点CPU负载升高时,Proxy能自动将请求路由到备用节点,有效实现了负载均衡。该系统通过实时监控和动态评分机制,确保了数据库集群的高效稳定运行。

2025-12-22 15:58:51 936

原创 从UPSERT功能解读大云海山数据库(He3DB)投影信息构建流程

摘要:本文解析了He3DB中UPSERT功能的实现机制,重点比较了UPSERT与REPLACE INTO在冲突处理时的差异。通过源码分析展示了投影信息构建流程,详细说明了ExecBuildProjectionInfo和ExecBuildUpdateProjection函数的执行步骤,包括表达式初始化、列处理和安全判断等关键操作。文章指出UPSERT操作会额外构建投影信息存储到特定结构中,这是其与普通INSERT在投影信息构建阶段的主要区别。后续将深入探讨投影步骤执行流程的细节实现。

2025-12-22 15:46:11 857

空空如也

空空如也

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

TA关注的人

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