- 博客(10)
- 问答 (1)
- 收藏
- 关注
原创 Sharding-JDBC源码解析(六)结果归并
结果归并就是将从各个数据节点获取的多数据结果集,组合成为一个结果集。ShardingSphere 支持的结果归并从功能上分为遍历、排序、分组、分页和聚合 5 种类型,它们是组合而非互斥的关系。从结构划分,可分为流式归并、内存归并和装饰者归并。流式归并和内存归并是互斥的,装饰者归并可以在流式归并和内存归并之上做进一步的处理。
2024-08-15 15:28:28
554
原创 Sharding-JDBC源码解析(五)SQL执行
在计算出路由结果以及将逻辑sql改为真实sql之后,就来到了执行的阶段,sharding首先会对执行单元(可以简单理解成一条真实sql即一个执行单元)进行分组,分组之后并行执行。
2024-08-15 15:19:42
401
原创 Sharding-JDBC源码解析(四)SQL改写
为什么需要sql改写?这是由于用户写的sql都是面向逻辑库与逻辑表,并不能够直接在真实的数据库中执行,sql 改写用于将逻辑 sql 改写为在真实数据库中可以正确执行的 sql。它包括正确性改写和优化改写两部分。
2024-08-15 15:07:20
480
原创 Sharding-JDBC源码解析(三)SQL路由
在ShardingShpere中,路由分为两种,即携带分片键的分片路由以及不携带分片键的广播路由,本编笔记仅针对分片路由进行解析。
2024-08-14 18:12:30
1152
1
原创 Sharding-JDBC源码解析(二)SQL解析
SQL解析的流程直接引用官网的描述,不再额外进行深入解析。解析过程分为词法解析和语法解析。词法解析器用于将 SQL 拆解为不可再分的原子符号,称为 Token。并根据不同数据库方言所提供的字典,将其归类为关键字,表达式,字面量和操作符。再使用语法解析器将词法解析器的输出转换为抽象语法树。
2024-08-14 17:41:35
413
原创 Sharding-JDBC源码解析(一)整体流程
ShardingSphere-JDBC的定位就是一款增强版的 JDBC 驱动。因此在理解ShardingSphere-JDBC的流程之前,需要先对JDBC的流程做一个回顾,ShardingSphere-JDBC会对JDBC执行SQL流程中的一些步骤进行代理,从而完成用户配置的分片/主从等功能。
2024-08-14 17:31:41
1032
原创 (四)MyBatis整合SpringBoot源码解析——SQL执行流程
经过前两章对MyBatis中一些基础内容介绍之后,本章主要讲解下MyBatis中SQL执行的核心流程。注:代码部分仅列出主要代码,会省略一些不影响核心流程的分支以及异常处理,部分为伪代码,尽量保证简洁。
2023-11-21 16:49:10
148
原创 (三)MyBatis整合SpringBoot源码解析——配置初始化
MyBatis与SpringBoot整合后,通过MybatisAutoConfiguration进行会话工厂相关的配置,同时以注解的方式实现对Mapper接口扫描和注册。通过会话以及Mapper接口完成对数据库的操作,即一次SQL的执行的大致流程为会话工厂创建会话,在会话中开启事务并且通过Mapper接口注册的元数据获取目标方法对应的SQL,将其委托给执行器执行,最终再次通过会话进行事务的提交。注:代码部分仅列出主要代码,会省略一些不影响核心流程的分支以及异常处理,部分为伪代码,尽量保证简洁。
2023-11-21 16:25:01
104
原创 (二)MyBatis整合SpringBoot源码解析——前置内容
前置内容主要包含三个部分:第一部分是针对SpringBoot整合MyBatis中一些比较重要的类进行讲解;第二部分是对这些类之间的关系进行一个梳理;最后一部分则是使用JDBC原生方式去执行SQL的示例,回顾一下基础。
2023-11-21 15:43:12
88
原创 (一)MyBatis整合SpringBoot源码解析——整体大纲
本文旨在解析MyBatis与SpringBoot的整合过程中的关键流程,并通过分析源代码来展示其实现原理。
2023-11-21 14:47:31
82
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人