- 博客(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关注的人
RSS订阅