自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 我的GitHub

flyingzc’s githubflyingzc’s github blog

2019-12-12 00:41:11 260

原创 H2 Database Select 语句执行流程

在迭代时,如果到达页面边界时需要向上移动到父页面(从父页面再查找对应的孩子节点),当处于非叶页面时需要向下移动到叶页面,然后从叶子节点上根据 index 获取 value。执行查询时,会根据上面选定的索引创建对应的迭代器,同时会根据不同的事务隔离级别选择创建不同隔离级别的迭代器(比如 CommittedIterator)。H2 在执行查询操作之前,会根据不同索引计算对应的成本,然后选择成本最小的索引进行后续查询操作。单表查询时,会获取表的所有索引。然后根据索引列的条件迭代索引获取数据,获取后的数据会通过。

2025-05-09 08:21:32 417

原创 H2Database SQL 插入流程

插入数据时会先进行 SQL 解析,然后找到插入表对应的 Primary Index 对应的 BTree,然后根据二分法定位到插入的叶子节点,将 key(主键) 和 value(Row) 插入到指定的叶子节点.

2025-05-09 08:20:40 385

原创 H2 Database 事务 Rollback 实现原理

对于每一个 undoLogId,先遍历 undoLog btree 找到存储的 Record。Record 信息里包含了当前 undoLogId 操作的数据行信息。然后根据 Record 信息找到对应记录的 primary key btree,根据主键 id 找到对应行记录进行回滚操作。当执行事务回滚时,会获取当前事务所有的 undoLogId,然后从后向前遍历每一个 undoLogId。当记录回滚完之后,再回滚 undoLog btree 上的 undoLog 信息。

2025-05-09 08:19:54 239

原创 H2 Database 事务隔离性实现原理

一个 Transaction 是会包含多个 TransactionMap,比如对应该事务内涉及的多张表,每张表的 mvMap 都会有对应的 TransactionMap.查询数据时会获取当前 SQL 里涉及到的所有表,清理当前事务对象里缓存的这些表对应的缓存(清理 transactionMaps)。根据 undo log id(事务内从0开始,此时为0) 和 事务隔离级别创建 Transaction 对象.获取查询涉及的所有表,根据表对应的 mvMap 创建对应的 transactionMap。

2025-05-09 08:18:53 751

原创 H2 Database 事务 Commit 实现原理

【代码】H2 Database 事务 Commit 实现原理。

2025-05-09 08:18:02 224

原创 H2 Database MvMap 插入数据流程

H2Database 使用 MVStore 作为默认的存储子系统,支持多版本,持久化的键值存储。其中每一个 MVMap 对象代表了一颗 btree。MVMap 里包含了 btree 根页面的引用,这颗 btree 可以表示一张表、一个索引,或者用来记录 undo log 等。

2025-05-09 08:16:53 405

原创 H2 Database MVStore Commit 流程

BackgroundWriterThread 按照固定频率,将内存里修改的尚未保存的 Page 信息持久化到存储。

2024-11-14 08:19:55 438

原创 H2 Database MVStore 初始化原理

H2 Database 存储结构和 MvStore 初始化流程

2024-10-31 08:48:02 641 1

原创 H2 Database IDEA 源码 DEBUG 环境搭建

H2 Database IDEA 源码 Debug 环境搭建流程。

2024-10-31 08:42:28 688

原创 Android 使用 ADB 调试

方式1: 通过安装,试了下版本比较老了,用不起来.方式2: 按照官网说明下载 Android Studio 或独立的 SDK 平台工具,两者都内含 ADB。下载完成后,配置环境变量.手机端设置:1.启用开发者选项2.启用USB调试。

2024-07-26 08:21:50 979

原创 Apache Omid Client 组件源码实现原理

通过 TransactionManager 开启/提交/回滚事务,提供事务内快照隔离级别的读写操作。

2024-07-26 08:20:58 230

原创 Ubuntu Desktop Docker 配置代理

主要解决 docker pull 拉取不了镜像问题.

2024-07-17 08:37:56 2006 1

原创 Apache Omid TSO 组件源码实现原理

处理 timestamp 和 commit 事件。

2024-07-17 08:14:57 1047

原创 Phoenix Omid Timestamp Oracle 组件实现原理

生成全局单调递增的时间戳,支持获取操作和崩溃恢复。

2024-06-28 23:47:11 526

原创 Apache Omid Idea Debug 环境搭建

IDEA 搭建 Apache Omid 源码 DEBUG 环境。Apache Omid 在 Apache HBase 之上提供了多行分布式事务的能力,支持全局 MVCC 功能。简单介绍编译过程。

2024-06-02 20:49:02 552

原创 Android 使用 Termux 安装 Git 和 SSH

Android 上通过 Termux 安装 Git 和 SSH。

2024-06-02 20:46:28 1466 1

原创 Percolator 分布式事务原理

Percolator 提供了跨行、跨表的、基于快照隔离的 ACID 事务。

2024-05-15 21:43:48 587

原创 IDEA 搭建 Otter 源码 DEBUG 环境

在适配 ShardingSphere-JDBC 同步 Otter 时,本地搭建 Otter Debug 环境记录。

2024-03-28 20:14:25 650

原创 MySQL驱动Add Batch优化实现

MySQL 驱动会在 JDBC URL 添加 rewriteBatchedStatements 参数时,对 batch 操作进行优化。本文测试各种参数组合的行为,并结合驱动代码简单分析。

2024-03-26 22:06:10 1604

原创 ShardingSphere XA事务无法恢复问题定位

在测试 ShardingSphere-Proxy 使用达梦数据库开启 XA 事务进行压测期间,kill 掉达梦数据库,等一段时间再重启达梦数据库,最终未完成的 XA 事务无法恢复,数据产生不一致。查看达梦上的 xid 一直有残留,没有被处理。使用 ShardingSphere-Proxy 结合其他主流数据库进行测试时无该问题。通过日志可以看到在压测期间,挂掉达梦数据库之后,有大量连接报错。节选错误日志如下:持续观察日志,能够看到 xa recover 查询出来的 xid 在不断增多。

2024-03-07 08:28:38 1612

原创 ShardingSphere-SQL 解析 Issue 处理流程

这是之前给社区写的 SQL 解析 Issue 的处理流程,可以帮助社区用户快速参与到 ShardingSphere-SQL 解析任务当中。

2024-03-05 08:42:21 1336

原创 ShardingSphere Narayana XA 事务不回滚问题定位

这个报错的含义简单来说就是这个事务已经在其他地方被标记成只可回滚了,不能再进行后续其他的操作。

2024-02-29 20:32:43 609

原创 ShardingSphere inline表达式线程安全问题定位

春节期间发现 ShardingSphere 事务 E2E 偶发执行失败问题,并且每次执行失败需要执行很久,直到超时。最终定位发现 inline 表达式存在线程安全问题。本文记录定位并解决 inline 表达式线程安全问题的过程。

2024-02-29 20:27:15 1179 1

原创 Spring 事务实现

Spring事务实现原理

2023-12-29 08:52:33 579

原创 Ubuntu Desktop 22.04 桌面主题配置

Ubuntu Desktop 22.04桌面主题配置

2023-12-28 21:11:00 2053

原创 Ubuntu Desktop 软件包管理

Ubuntu Desktop 软件包格式/安装和卸载

2023-12-27 20:15:41 1152

原创 Ubuntu Desktop 死机处理

Ubuntu Desktop 死机处理

2023-12-26 21:08:23 1809

原创 分布式数据库-全局时钟

分布式数据库-全局时钟实现

2023-12-23 08:37:21 897

原创 事务异常场景

事务写偏序/读偏序/丢失更新/脏写/脏读/不可重复读/幻读等异常

2023-12-21 20:46:04 549

原创 常用的 Zookeeper 命令

当 zk 出现问题时,可以进入 zookeeper 所在 bin目录,启动zk命令行工具进行相关运维操作。

2023-12-20 07:00:00 765

原创 分布式一致性模型

分布式一致性探讨的问题:由于分布式环境 CAP 理论的存在,当用户对数据发生读写操作时可能产生的结果。

2023-12-19 22:56:19 496

原创 Ubuntu Desktop 22.04 禁用自动更新

禁用后查看结果如下,后续再查看 /var/log/apt/history.log 就不会有软件自动更新的日志了。如果只禁用上面的更新,unattended-upgrades 还是会在后台更新软件包,也需要禁止。

2023-12-14 23:34:52 6477

原创 Narayana事务回滚流程

Narayana事务回滚流程实现

2023-12-13 23:45:00 165

原创 Narayana事务恢复流程

【代码】Narayana事务恢复流程。

2023-12-12 21:27:57 212

原创 Ubuntu Desktop 22.04 设置 ssh 超时时间

【代码】Ubuntu Destktop 22.04 设置 ssh 超时时间。

2023-12-11 23:15:00 2106

原创 Narayana事务Commit流程

Narayana事务提交代码分析

2023-12-11 07:50:22 174

原创 Narayana 事务资源注册实现

Narayana资源注册流程

2023-12-09 14:35:07 321

原创 Narayana 事务 begin 流程

Narayana 开启事务实现

2023-12-08 07:41:38 150

原创 Narayana启动-注册恢复模块流程

Narayana启动阶段-注册恢复模块流程

2023-12-07 07:55:18 238

空空如也

空空如也

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

TA关注的人

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