shardingjdbc 大体流程
2024-04-17 15:11:59 3 举报
shardingjdbc 大体流程
作者其他创作
大纲/内容
DriverJDBCExecutor#executeQuery
KernelProcessor创建内核处理器
ExecutorEngine#execute
RouteSQLRewriteEngine#rewrite
KernelProcessor#createExecutionContext创建执行器的上下文
如果在事务中会使用序列化的执行方式,否则使用并行的方式
ResultMerger#merge把多条语句的返回值合并
处理 orderBy limit distinct 等语句以及一些数据库信息查询有分为内存处理和流式处理。分页就是使用一个堆进行排序
ShardingStrategy#doSharding调用分片算法进行分片
调用真实的数据源进行执行
ShardingSpherePreparedStatement直接 new
ShardingSphereDataSource#createContextManager
JDBCExecutor#execute
ShardingSpherePreparedStatement#executeQuery0
DriverStateContext#getConnection
StandaloneContextManagerBuilder#build管理数据库,表的信息
ShardingSpherePreparedStatement#doExecuteQuery
SQLRouter#createRouteContext
commit/rollback
SQLHintUtils#extractHint从 sql 的注释里面解析参数
audit.SQLAuditEngine#audit审计
ShardingSphereResultSet封装一下
MergeEngine#merge
如果有 join order limit则使用 UNION ALL 合并一下
kernel.KernelProcessor#rewrite
MergeEngine#executeMerge
PartialSQLRouteExecutor#findDataSourceByHint如果配置了Hint 这直接返回数据源名称
Connection#prepareStatement
kernel.KernelProcessor#route
SQLParserExecutor#parse使用 antlr 解析sql
ShardingSpherePreparedStatement#createExecutionContext
KernelProcessor#generateExecutionContext
SQLRouteEngine#route
kernel.KernelProcessor#logSQL如果配置了就打印
ShardingSphereConnection直接new出来
如果是 Traffic 类型的则使用 TrafficExecutor开启限流的情况下
ShardingSpherePreparedStatement#executeFederationQuery如果是联邦查询实验性功能
ShardingSpherePreparedStatement#clearPrevious清理之前的数据
ShardingStandardRoutingEngine#route0
JDBCExecutorCallback#execute
ShardingStandardRoutingEngine#routeDataSources
ShardingSphereDataSource#getConnection()
DriverExecutorJDBCExecutorBatchPreparedStatementExecutor创建执行器
ShardingSphereSQLParserEngine#parse解析sql
ShardingSpherePreparedStatement#executeQuery
ShardingAuditAlgorithm#check执行所有配置的审计算法
ShardingSpherePreparedStatement#mergeQuery
OKDriverState#getConnection
ShardingSphereDataSourceFactory#createDataSource
ShardingSphereDataSource
ShardingSpherePreparedStatement#handleAutoCommit开启事务
0 条评论
下一页