在政企行业的信创改造进程中,大量存量业务系统需要从 MySQL、Oracle 迁移至达梦、人大金仓、GaussDB 等国产数据库。与此同时,日常开发中的慢 SQL 排查也长期缺乏一个不依赖具体 IDE、开箱即用的辅助工具。MuOpt(沐优)正是针对这两类需求设计的一款 Web 端工具。
开发背景
随着信创改造在政企行业的推进,开发团队面临几个典型问题:
- SQL 优化门槛高:DBA 资源有限,一线开发人员难以判断一条 SQL 是否应该添加索引、加在哪些列上;执行计划信息不够直观,缺少可视化比对手段。
- 信创迁移工作量大:一个项目动辄上千条 SQL 分散在 MyBatis XML、Java 注解和
.sql脚本中,人工逐条改写方言既耗时又容易遗漏。 - 内网环境工具匮乏:许多单位的内网无法访问在线工具,云服务又无法通过安全审计,需要一款能够直接带入内网运行的本地化工具。
项目介绍
MuOpt 是一个基于 Spring Boot 3 的 Web SQL 优化与信创转换助手,采用单文件muopt.jar部署,浏览器打开即可使用,无需安装任何客户端。当前版本为 v1.1.0,采用 MIT 协议开源。
其核心能力围绕三个方向展开:
SQL 智能优化
基于 JSqlParser 解析 AST,从 WHERE 等值/范围条件、JOIN ON、ORDER BY、GROUP BY 中提取候选列,生成合理的组合索引建议。建议以橙色(待创建)和灰色(已存在)区分,连接数据源后可自动核实索引是否存在。
工具支持手工粘贴单条 SQL 即时分析,也支持扫描项目目录,提取 MyBatis XML、Java 字符串及@Select、@Insert、@Update、@Delete注解中的 SQL,逐条分析并支持一键原地替换,替换前自动生成.bak备份。
SQL 信创转换
规则引擎可在毫秒级完成 18 种数据库方言的转换,覆盖函数、类型、分页、自增、日期格式串等维度。支持手工单条转换和批量项目扫描转换两种模式,可叠加 AI 润色进行二次把关,扫描转换支持整个项目一键写回源文件。
执行计划可视化
连接数据源后执行 EXPLAIN,提供表格、树形、图形三种视图,按操作类型着色——全表扫描为红色、索引为绿色、JOIN 为紫色,并给出成本评估,便于快速定位慢 SQL。
其他特性
- AI 深度优化(可选):支持配置多个 AI 模型(百炼、DeepSeek、OpenAI、Anthropic 及各类 OpenAI 兼容网关),同一时刻启用一个,可关闭推理模型的思考链以防止长 SQL 被截断。
- 数据源管理:十余种数据库驱动内置,连接后可进行索引存在性检测、冗余索引检测及大小表驱动判断。
- 账号体系:登录鉴权(连续失败 5 次锁定 30 分钟),个人中心自助改密,支持多用户同时使用。
支持的数据库
SQL 转换的目标方言共 18 种,包括:
MySQL、MariaDB、PostgreSQL、GaussDB、openGauss、人大金仓、瀚高 HighGo、崖山 YashanDB、海量 Vastbase、神通 Oscar、OceanBase、TiDB、GBase、GoldenDB、DB2、SQL Server、达梦 DM8、Oracle。
技术栈
| 层次 | 选型 |
| 后端框架 | Spring Boot 3 |
| SQL 解析 | JSqlParser |
| 部署方式 | 单文件 JAR(约 83MB),JDK 17+ |
| 数据库驱动 | 十余种内置,随包分发 |
| AI 接入 | OpenAI 兼容 / Anthropic 双协议 |
| 前端 | 浏览器直接访问 |
快速部署
项目提供单文件 JAR 包,从官网或 Releases 页面下载后,一行命令即可启动:
bash
java -jar muopt.jar
需 JDK 17+ 环境,无需联网。浏览器打开localhost:8080注册首个账号即可使用。
若需局域网访问,可追加启动参数:
bash
java -jar muopt.jar --server.address=0.0.0.0
部署时需注意:数据库与 AI 配置保存在运行目录下的./data(H2 文件库),日志在./logs,这两个目录需要做好持久化与备份。默认仅监听127.0.0.1,局域网访问时需自行在网关层添加鉴权。
AI 模型为可选项,不启用任何模型时,索引分析与规则改写仍可正常使用,仅 AI 深度改写功能不可用。
源码与文档
- 官网:https://muopt.qqmu.com/
- GitHub:https://github.com/vfaner/muopt
- Gitee:https://gitee.com/super_rgh/muopt
项目采用 MIT 协议开源,可免费商用。