在 Apache ShardingSphere 5.1.0 公布后有余两个月的工夫里,ShardingSphere 合并了来自寰球的团队或集体的累计 698 个 PR,为大家带来 5.1.1 新版本。该版本在性能、性能、测试、文档、示例等方面均有不少优化。
特地是性能方面,采纳业界规范的 TPC-C 测试模型,在 16 台物理服务器上运行 Apache ShardingSphere 5.1.1 与国产数据库 openGauss 3.0,获得超过 1000 万 tpmC 的优异成绩,行业等同规模下性能最好!
本文将给大家介绍 ShardingSphere 5.1.1 版本更新内容。
吴伟杰,SphereEx 基础设施研发工程师,Apache ShardingSphere PMC。目前专一于 Apache ShardingSphere 接入端及 ShardingSphere 子项目 ElasticJob 的研发。
本次 Apache ShardingSphere 5.1.1 版本更新次要是对 5.1.0 版本的性能与性能进行优化及问题修复,接下来将介绍局部更新内容。
内核相干
内核是 ShardingSphere 的根底,打造性能齐备、稳固、高性能的内核是 ShardingSphere 不变的指标。在 5.1.1 中,ShardingSphere 在内核层面优化了很多逻辑,修复了数据分片、读写拆散、数据加密等场景在上一版本中发现的问题,并使各个场景在性能方面均有不同水平的晋升。
在数据库方言方面,内核减少了对 MySQL 表空间的反对,并晋升了对 Oracle、SQL Server、PostgreSQL、openGauss 等数据库的 SQL 反对度。另外,ShardingSphere 内核也实现了对 PostgreSQL/openGauss 的 schema 这类三层构造的初步反对,后续版本会继续欠缺。
接入端
本次更新修复了 ShardingSphere-JDBC 的一个潜在性能问题危险点,优化了 ShardingSphere-JDBC 外部与数据库连接池非必须的交互逻辑,缩小了 ShardingSphere-JDBC 的性能开销。
在 ShardingSphere-Proxy 方面,MySQL/PostgreSQL 数据类型的反对度有所晋升。ShardingSphere-Proxy MySQL 偶发性的 ResultSet closed 报错问题被修复,除此之外,ShardingSphere-Proxy MySQL 在协定层也初步反对执行多语句以晋升批量操作性能。
在客户端反对度方面,ShardingSphere-Proxy PostgreSQL 晋升了对 PostgreSQL JDBC Driver 42.3.x 的反对度,ShardingSphere-Proxy openGauss 晋升了对 openGauss JDBC Driver 3.0 的反对度。
弹性伸缩
在本次更新中,除了修复迁徙作业报错后无奈通过 DistSQL 重启的问题外,弹性伸缩的健壮性有所晋升,并且实现了源端停写及复原写、局部表扩缩容的新个性。对于不合乎迁徙条件的状况,弹性伸缩可能疾速失败,及时发现抛出问题,防止用户付出额定的工夫老本。
DistSQL
DistSQL 在用户体验方面进行了优化,减少了更多的校验,缩小了用户在应用 DistSQL 中配置出错的可能性。同时修复了局部用户输出与 DistSQL 关键字抵触的问题。
分布式治理
在读写拆散与数据库发现方面,除了原有的 MGR,MySQL 新增了通过查问主从延时实现的数据库发现形式,能够通过获取从库延时主动切换读写拆散数据源,缩小用户应用动静读写拆散的门槛。
在集群模式下,元数据存储构造进行了肯定的优化与重构,因 ZooKeeper 会话超时、表名大小写不匹配等起因导致的问题均已被修复。
分布式事务
在事务方面,ShardingSphere-JDBC 新增了对 Savepoint 的反对,ShardingSphere-Proxy 则在原有对 LOCAL 事务 Savepoint 反对的根底上,减少了在 XA 场景下对 Savepoint 的反对。
应用 Narayana 作为 XA 的实现时,ShardingSphere 可能配置 Narayana,让用户应用 XA 更不便。
应用 PostgreSQL/openGauss 时,当在事务中产生异样,ShardingSphere 可能正确停止事务并主动回滚。
以上是对 Apache ShardingSphere 5.1.1 局部更新内容的介绍,具体内容能够参考更新日志,后续 ShardingSphere 社区会公布对局部性能个性的具体解读,敬请期待。ShardingSphere 5.1.1 在 API 层面没有变动,在性能、性能方面均有不少晋升,欢送大家降级应用。
更新日志
新个性
- 内核:PostgreSQL 反对
alter materialized view
- 内核:PostgreSQL 反对
declare
语法 - 内核:PostgreSQL 反对
discard
语法 - 内核:PostgreSQL 反对
$$
标识 - 内核:反对 MySQL 创立表空间语句
- 弹性伸缩:实现源端停写及复原写
- 弹性伸缩:反对局部表扩缩容
- DistSQL:新增语法
SHOW UNUSED RESOURCES
- 分布式治理:治理核心新增长久化 XA Recovery Id
- 分布式治理:数据库发现新增提早主从提早性能
- 分布式事务:ShardingSphere-Proxy 反对 savepoint
- 分布式事务:PostgreSQL & openGauss 事务块内异样,主动回滚
- 分布式事务:Narayana XA 事务易用性
- 分布式事务:ShardingSphere-JDBC 反对 savepoint
优化
- 内核:重构内核性能代码晋升性能
- 接入端:缩小 ShardingSphere-Proxy Docker 镜像体积
- 接入端:ShardingSphere-Proxy 反对应用
set names
等语句设置字符编码 - 接入端:ShardingSphere-Proxy MySQL 反对批量语句
- 接入端:ShardingSphere-Proxy 反对 openGauss JDBC Driver 3.0 客户端
- 弹性伸缩:在 ShardingSphere-Proxy 集群中只有一个 Proxy 节点须要做实现检测
- 弹性伸缩:优化 input 和 output 配置外面的字段类型,从 int 改为 Integer,不便通过 DistSQL 配置为空
- 弹性伸缩:优化 MySQL 校验和 SQL
- 弹性伸缩:优化进度删除和进度查看
- 弹性伸缩:优化 FinishedCheckJob 在谬误状态下不能做实现检测
- 弹性伸缩:如果存在不合乎迁徙条件的表,尽快报错
- 弹性伸缩:PipelineAPIFactory 创立 GovernanceRepositoryAPI 的时候复用 ClusterPersistRepository
- 弹性伸缩:降级 jobId 生成算法;jobId 反对幂等性
- DistSQL:
CREATE/ALTER ENCRYPT RULE
语法反对配置数据类型和长度 - DistSQL:对立
SHOW ALL VARIABLES
与SHOW VARIABLE
语法的展现后果 - DistSQL:
DROP BINDING TABLE RULES
语法打消绑定程序对删除后果的影响 - DistSQL:
SHOW INSTANCE LIST
语法减少mode_type
字段的展现 - DistSQL:
ENABLE/DISABLE INSTANCE
语法减少对模式的校验 - DistSQL:删除读写拆散规定时,减少对规定是否正在应用的校验
- DistSQL:创立读写拆散规定时,减少 Resource 重名的校验
- DistSQL:
SHOW READWRITE_SPLITTING READ RESOURCES
减少延迟时间的展现 - DistSQL:
DROP RULE
语法反对IF EXISTS
进行预判断 - DistSQL:优化
ADD/ALTER RESOURCE
连贯失败的提示信息 - 分布式治理:减少 schema version 版本号反对批量执行 DistSQL
- 分布式治理:集群模式下长久化元数据优化
- 分布式治理:数据库发现创立 JOB 减少 schemaName 标识
重构
- 内核:重构加解密测试用例
- 内核:重构元数据模型,适配 PostgreSQL database 和 schema 模型
- 弹性伸缩:pipeline 模块移除 HikariCP 依赖
- 分布式治理:重构治理核心存储节点构造
- 分布式治理:重构治理核心 metadata 构造
- 分布式治理:调整数据库发现 MGR 模块为 MySQL 模块
问题修复
- 内核:修复函数无奈获取变量的异样
- 内核:修复
InsertValueContext.getValue
转换异样 - 内核:修复 distinct 聚合函数列异样
- 内核:修复带有 schema 的加解密算法改写异样
- 内核:修复读写拆散场景下不返回列的异样
- 内核:修复
show tables
语句失落局部表的异样 - 内核:修复雷同结尾的分表路由的异样
- 内核:修复 assignment 短语某些场景下的解析异样
- 内核:修复分片特定配置下的数字转换异样
- 内核:修复单数据源读写拆散的元数据异样
- 内核:修复批量执行语句 statement 敞开异样
- 内核:修复某些语句蕴含 * 时的改写异样
- 内核:修复某些状况下内存模式 ShardingSphere-Proxy 的启动异样
- 接入端:修复 ShardingSphere-Proxy PostgreSQL/openGauss 可能会误替换 SQL 中非参数占位符的字面量
- 接入端:修复 PostgreSQL JDBC Driver 42.3.x 无奈连贯配置了多个 schema 的 PostgreSQL Proxy 的问题
- 接入端:修复 ShardingSphere-Proxy MySQL timestamp 类型工夫精度失落问题
- 接入端:修复 ShardingSphere-Proxy PostgreSQL 二进制 numeric 编码不正确的问题
- 接入端:修复 ShardingSphere-JDBC 潜在的性能问题及 OOM 危险
- 接入端:修复 ShardingSphere-Proxy MySQL 偶发读取已敞开后果集谬误的问题
- 接入端:修复 ShardingSphere-JDBC 没有参数的状况调用 executeBatch 导致空指针的问题
- 弹性伸缩:修复 job 报错之后无奈通过 DistSQL 重启
- DistSQL:修复
CREATE SHARDING TABLE RULE
时 inline 表达式解析谬误 - DistSQL:修复当明码为关键字 password 时,
ADD RESOURCE
解析异样 - 分布式治理:修复因为 ZooKeeper session 超时导致计算节点失落问题
- 分布式治理:修复治理核心表名大小写问题
- 分布式治理:DistSQL 启用禁用实例刷新内存计算节点状态
- 分布式治理:修复数据库发现无奈通过 DistSQL 创立 Rule
🔗 下载链接:
https://shardingsphere.apache.org/document/current/cn/downloads/
🔗 更新日志:
https://github.com/apache/shardingsphere/blob/master/RELEASE-NOTES.md
🔗 我的项目地址:
https://shardingsphere.apache.org/
社区建设
此次 Apache ShardingSphere 5.1.1 版本的公布,共有 64 位 Contributor 提交了 698 个 PR,感激社区搭档们的大力支持。
同时,咱们将于 5 月 14 日举办『Apache ShardingSphere 2022 Meetup 北京站』,敬请期待,欢送大家届时报名参加。🤩🤩
欢送增加社区经理微信(ss_assistant_1)退出交换群,与泛滥 ShardingSphere 爱好者一起交换。