蚂蚁集团SQL诊断优化产品SQLess开源,OceanBase生态再添一员

2024年 5月 7日 74.4k 0

当我们使用关系型数据库时,SQL是联系起用户和数据库的一座桥梁。

SQL是一种高度非过程化的语言,当我们在编写SQL时,表达的是想要什么数据,而不是怎么获取数据。因此,我们往往更关心SQL有没有满足业务逻辑,比如返回结果、响应速度、DB吞吐等,不太想关心SQL有没有性能问题、索引如何创建、SQL问题怎么快速定位等风险。同时,我们希望这部分能力可以通过自动化、智能化产品来解决。

上述情况也一直困扰着蚂蚁集团内部的业务,在探索解决方案的过程中,得益于蚂蚁业务场景对数据库稳定性、吞吐量的极致要求,孵化了一款覆盖SQL生命周期的诊断优化产品——SQLess。它服务于蚂蚁8000+用户、70+业务站点,被集成至30+业务平台,减少90% 的SQL异常、提升80%故障恢复时效,保障了业务稳定性,是数据库的基础设施之一。

近日,SQLess宣布开源,为蚂蚁集团之外的业务提供服务,包含SQL防控体系、SQL应急体系、SQL优化体系三道防线。同时,SQLess团队希望将蚂蚁集团内部沉淀的SQL诊断优化经验与更多企业进行分享与交流。

SQLess针对OceanBase的SQL优化实践

SQLess开源后,成为了OceanBase生态中的一员。SQLess基于OceanBase的Hint机制,提供诊断优化、自愈限流、索引演进等能力。通过建立外部实时的流量检测,结合OceanBase内部提供的统计信息,进行热点流量检测,用于智能识别热点行、锁冲突、热点账号、大小账号等细粒度SQL问题。同时建立知识库体系,用于自动回归检测和算法学习。

蚂蚁集团SQL诊断优化产品SQLess开源,OceanBase生态再添一员-1

整体线上自愈流程如下:

监控指标识别到异常 -> SQLess找到根因SQL -> SQLess提供诊断建议 -> 自愈执行诊断操作 -> 监控指标回归正常

蚂蚁集团SQL诊断优化产品SQLess开源,OceanBase生态再添一员-2

针对增量SQL,SQLess结合蚂蚁的研发流程,提供SQL Review能力,有效地将SQL风险阻拦在上线之前。

蚂蚁集团SQL诊断优化产品SQLess开源,OceanBase生态再添一员-3

同时,针对存量SQL,SQLess结合治理平台,提供治理意见和性能回馈,有效push存量问题SQL的治理。

蚂蚁集团SQL诊断优化产品SQLess开源,OceanBase生态再添一员-4

SQLess内部版与开源版区别

目前,SQLess在蚂蚁集团的实践更偏向于运维视角,解决的核心问题是蚂蚁业务在OceanBase上的SQL稳定性。区别于内部版,SQLess开源版更偏向于研发视角,帮助用户更高效地写出优雅且高性能的SQL,让用户花更少时间关注SQL风险,更专注于SQL业务逻辑本身,提升业务研发效率和数据库稳定性,并且提供全方位的SQL监控能力,帮助用户解决SQL风险并提升业务性能。正如SQLess愿景描述的那样,让用户写SQL时可以更聚焦于实现业务逻辑,而不需要关注性能问题:Less on SQL tuning,More to SQL doing

蚂蚁集团SQL诊断优化产品SQLess开源,OceanBase生态再添一员-5

蚂蚁集团SQL诊断优化产品SQLess开源,OceanBase生态再添一员-6

蚂蚁集团SQL诊断优化产品SQLess开源,OceanBase生态再添一员-7

SQLess适配各个研发阶段,将优化建议更加简单明了的告诉用户,追求通用性、可扩展性,可以接入不同的数据库引擎,用户也可以灵活配置或创建各个规则,用于适配自己的研发体系。

SQLess开源版提供以下四个主要功能:

  • SQL优化:支持索引优化、研发规范(PMD)扫描、Rewrite改写建议。
  • SQL审核:SQL Review能力,可以集成在CICD pipeline中。
  • SQL分析:multi-SQL维度的综合分析,可以基于Slow log、各个云厂商流量接口等方式进行SQL优化。
  • SQL监控:实时态的TopSQL分析,提供SQL动态的实时监控,提供采样流水、执行计划、统计信息等辅助信息帮助用户找到问题SQL、分析问题根因。
  • 目前支持的数据库引擎包括OceanBase 3.x版本和OceanBase 4.x版本,以及MySQL 5.6版本和MySQL 5.7版本,未来还将支持更多数据库。

SQLess架构设计及产品规划

为了更好的适配不同业务场景、扩展规则、支持更多的数据库引擎,SQLess大部分组件都以插件化设计。

用户可以方便地使用规则或者自定义规则来适配自己的业务场景。

蚂蚁集团SQL诊断优化产品SQLess开源,OceanBase生态再添一员-8

对于优化器,采用“前置规则->剪枝规则->RBO规则->CBO成本计算”架构,支持三个优化能力:

  • 索引优化。
  • 研发规范扫描。
  • SQL Rewrite优化。

对于解析器,使用插件化框架,支持不同解析任务。

  • SQL解析,支持不同DB引擎的接入,已支持OceanBase、MySQL。
  • 文本解析:支持不同文本类型的接入,已支持MySQL慢查询日志、SQL流量文件。
  • XML解析:支持不同ORM框架的接入,已支持MyBatis。

规则引擎也使用插件化框架,支持各维度的规则沉淀:

  • RBO规则。
  • Rewrite 规则。
  • 研发规范。
  • 异常诊断(规划中)。
  • 根因分析(规划中)。

目前,SQLess团队大部分工作聚焦在规则场景沉淀、数据库引擎扩展、优化器扩展、ORM框架扩展、多云产品接入等工作上。希望帮助用户更加简单、准确地解决各类SQL问题,比如:

  • 规则场景沉淀,不断丰富SQL PMD/SQL Rewrite/异常诊断等规则。
  • 数据库引擎扩展,目前支持OceanBase3.x/4.x、MySQL 5.6/5.7,后续计划将持续支持MySQL8.0/PostgreSQL/Oracle/TiDB/PolarDB等数据库引擎。
  • 优化器扩展,目前支持Cost-Based Optimizer,后续计划将持续支持AI-Based Optimizer、Query-Based Workload Analysis等更强大的优化器特性。
  • ORM框架扩展,目前只适配了MyBatis,后续将持续支持GORM/Hibernate/SQLAlchemy等ORM框架。
  • 多云产品接入,持续支持多云产品的接入,类如OceanBase Cloud/Aliyun RDS/TiCloud等。
  • 大模型结合的AIGC,支持NL2SQL、NL2DDL、NL2报表、SQL优化、Schema优化等。

除了建设更多SQL能力外,SQLess将提供轻量级的lib,用于更好地接入如CICD、SQL Console、IDE插件适用于SQL优化和分析的产品。SQLess也将持续加强与OceanBase开源社区的融合,并支持MySQL、PostgreSQL等数据库,为更多数据库生态的用户提供服务,建设通用SQL能力的开源生态。

参与开源项目共建

如果你对OceanBase和SQLess感兴趣,欢迎任何形式的参与,包括且不限于提问、代码贡献、技术讨论等。期待收到社区想法和反馈,以推动项目持续前进。

OceanBase开源项目地址: https://github.com/oceanbase/oceanbase

SQLess开源项目地址: https://github.com/oceanbase/sql-lifecycle-management

OceanBase用户群(钉钉群号:33254054;OB小助手微信:OBCE666

SQLess用户群(钉钉群号:33920014194;官方人员微信:ztk1294604739)

附SQLess快速上手流程。

第一步,执行环境,推荐版本python = v3.6.x,依赖安装(后续将提供镜像)。

git clone https://github.com/oceanbase/sql-lifecycle-management.git
cd sql-lifecycle-management && make install

第二步,数据库初始化。

# 填写本地元数据库链接方式
cd sql-lifecycle-management && vim db.cfg
# 本地元数据库初始化
mysql -h host_ip -u user_name -p
source init/init.sql

第三步,访问页面(http://localhost:8989)

cd sql-lifecycle-management && sh ./start.sh
 

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论