自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2024-08-22 11:04:22 432

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

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

2024-08-22 11:03:00 932

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

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

2024-08-22 11:02:15 731

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

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

2024-08-22 11:01:36 542

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

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

2024-08-22 10:51:14 587

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

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

2024-08-22 10:49:49 546

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

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

2024-08-22 10:49:08 441

原创 海山数据库(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 10:48:38 624

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

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

2024-08-22 10:48:02 355

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

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

2024-08-22 10:47:28 810

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

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

2024-08-22 10:46:54 807

原创 海山数据库(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 10:46:12 738

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

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

2024-08-22 10:45:35 939

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

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

2024-08-22 10:44:53 516

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

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

2024-08-22 10:42:49 672

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

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

2024-08-20 11:01:13 400

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

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

2024-07-25 18:19:50 937

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

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

2024-07-25 18:18:29 685

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

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

2024-07-25 18:17:53 621

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

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

2024-07-25 17:53:06 990

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

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

2024-07-25 17:51:50 739

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

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

2024-07-25 16:04:44 553

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

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

2024-07-25 15:43:38 533

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

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

2024-07-25 14:01:08 841

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

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

2024-07-25 13:45:19 901

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

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

2024-07-25 13:40:32 824

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

3.先反向扫描,获取最后一个binlog中包含的最新GTID EVENT和Previous-GTIDs。

2024-07-25 12:12:18 972

空空如也

空空如也

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

TA关注的人

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