ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

030_实战:读写分离

2022-07-18 00:34:30  阅读:242  来源: 互联网

标签:实战 info 归并 读写 proxy SQL 030 解析 路由


目录

内容大纲

image.png

具体实现步骤

新建一个springboot工程

image.png

引入相关依赖:sharding依赖、ssm依赖、数据库驱动

image.png
image.png

定义配置application.yml

image.png
image.png
image.png

注意问题

image.png
image.png

定义entity,mapper,controller

entity

image.png

mapper

image.png
image.png

controller

image.png

访问测试查看效果

image.png
image.png

日志查看

image.png
image.png

Props的其他相关配置

:::info
acceptor.size: # accept连接的线程数量,默认为cpu核数2倍
executor.size: #工作线程数量最大,默认值: 无限制
max.connections.size.per.query: # 每个查询可以打开的最大连接数量,默认为1
check.table.metadata.enabled: #是否在启动时检查分表元数据一致性,默认值: false
proxy.frontend.flush.threshold: # proxy的服务时候,对于单个大查询,每多少个网络包返回一次
proxy.transaction.type: # 默认LOCAL,proxy的事务模型 允许LOCAL,XA,BASE三个值,LOCAL无分布式事务,XA则是采用atomikos实现的分布式事务 BASE目前尚未实现
proxy.opentracing.enabled: # 是否启用opentracing
proxy.backend.use.nio: # 是否采用netty的NIO机制连接后端数据库,默认False ,使用epoll机制
proxy.backend.max.connections: # 使用NIO而非epoll的话,proxy后台连接每个netty客户端允许的最大连接数量(注意不是数据库连接限制) 默认为8
proxy.backend.connection.timeout.seconds: #使用nio而非epoll的话,proxy后台连接的超时时间,默认60s
:::

小结

回顾流程

:::info
ShardingSphere 的 3 个产品的数据分片主要流程是完全一致的。 核心由 SQL 解析 => 执行器优化 => SQL 路由 => SQL 改写 => SQL 执行 => 结果归并的流程组成。
:::

SQL 解析

:::info
分为词法解析和语法解析。 先通过词法解析器将 SQL 拆分为一个个不可再分的单词。再使用语法解析器对 SQL 进行理解,并最终提炼出解析上下文。 解析上下文包括表、选择项、排序项、分组项、聚合函数、分页信息、查询条件以及可能需要修改的占位符的标记。
:::

执行器优化

:::info
合并和优化分片条件,如 OR 等。
:::

SQL 路由

:::info
根据解析上下文匹配用户配置的分片策略,并生成路由路径。目前支持分片路由和广播路由。
:::

SQL 改写

:::info
将 SQL 改写为在真实数据库中可以正确执行的语句。SQL 改写分为正确性改写和优化改写。
:::

SQL 执行

:::info
通过多线程执行器异步执行。
:::

结果归并

:::info
将多个执行结果集归并以便于通过统一的 JDBC 接口输出。结果归并包括流式归并、内存归并和使用装饰者模式的追加归并这几种方式。
:::

标签:实战,info,归并,读写,proxy,SQL,030,解析,路由
来源: https://www.cnblogs.com/wl3pb/p/16488999.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有