SQL 审核工具 SQLE 2.2305.0 于今天发布。以下对新版本的 Release Notes 进行详细解读。文章主要分为以下三部分内容:
- 一、SQLE 项目介绍
- 二、新版本主要功能介绍
- 三、完整的 Release 信息
一、SQLE 项目介绍
爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。
SQLE 获取
二、新版本主要功能介绍
[社区版]
1. 支持中止 SQL 上线操作
目前,SQLE 的 SQL 工单上线流程中,对 SQL 提交到上线的整个流程做了较好的管控,但是 SQL 上线后的异常流程未进行处理,在这些极小数场景上还需要人工干预,例如:上线 SQL 阻塞时需要手工 Kill;SQL 执行失败需要人工确认数据影响等。
本次版本新增了 SQL 上线中止的功能,SQL 上线阻塞时能够在工单界面一键中止上线操作,减少人工干预的成本,并减少故障恢复时间。后续,SQLE 也将覆盖更多的异常场景,异常后的备份回滚,异常后的再次上线。打造完美闭环流程。以下是简单的功能试用:用户进入正在上线的工单,点击中止上线按钮,在二次确认弹窗中,确认执行中止操作;
![图片]()
此时,数据源状态将变更为上线失败,正在执行上线操作的事务将被回滚,已执行的事务将不会回滚,用户可点击数据源查看具体 SQL 的执行状态;
![图片]()
![图片]()
2. 支持通过 Webhook 方式通知工单状态
当用户配置了自定义 API 服务,想要在 API 服务中实时获取工单执行状态时,可在系统设置中配置 Webhook 服务。在 SQLE 中配置回调地址后,工单状态一旦发生变更,即可在 API 服务中获取状态通知信息,无需定时登录 SQLE 平台以查询结果。以下是简单的功能试用:1. 以平台管理员账户登录,进入系统设置,找到 Webhook 配置后点击修改按钮。
![image.png]()
- 选择开启 Webhook 通知,并填写以下字段内容。
![图片]()
- Webhook url:用于工单消息推送的 API 地址;
- 最大重试字数:默认3次,取值范围 0-5。如果事件推送失败,SQLE 将重新推送通知,若重试 3 次后,仍推送失败,则不再推送本次事件;
- 最大重试间隔:默认1秒,取值范围 1-5。如果推送失败,将以 1s 的时间间隔重新推送;
- token:用于标识推送方,如可填写 SQLE 用以标识是从 SQLE 推送的通知。
-
点击提交,保存当前 Webhook 配置。
-
用户可点击测试,验证 API 服务端能正常收取推送信息。
![图片]()
[企业版]
1. 智能扫描支持从 MySQL 实例在线抓取慢 SQL
在原先的慢日志扫描任务中,创建扫描任务后,还需进入终端配置scannerd 进程,扫描任务配置流程相对较长。本次优化使得 sqle 可以直接从慢日志表中采集数据,避免用户进入终端操作,减少用户使用慢日志扫描任务时的流程阻碍。
以下是简单的使用体验:
- 新建扫描任务,选择慢日志扫描,并将采集来源设为 1,通过 SQLE 直接对实例的
mysql.slow_log 表进行查询。
![e226b838633b8407ce8c3c2058f0b1d8.png]()
- 新增参数:采集来源
- 若来源设为 0:该扫描任务将通过 scannerd 对
mysql-slow.log 进行采集
- 若来源设为 1:该扫描任务将通过 SQLE 直接对实例的
mysql.slow_log 表进行查询
- 配置数据库实例,需要注意以下设置。
set global long_query_time=1; // 需根据实际业务调整慢查询时间阈值,此处仅供参考 set global slow_query_log=1; // 开启慢日志查询 set global log_output='FILE,TABLE';// 开启 MySQL 的慢日志收集功能,并且确认将慢日志内容写入文件 mysql-slow.log 和表 mysql.slow_log
- 在数据库中执行一条慢 SQL,点击立即审核,即可查看慢日志扫描的统计信息。
![图片]()
2. DB2 库表元数据扫描任务
数据库中库表元数据若是存在表没有注释、列名没有注释、表结构中索引不合理、缺少主键等情况,未及时处理将最终导致部分业务请求性能低下,损失实际业务流量等问题。针对这种场景,用户可使用库表元数据扫描任务,对实例的库表元数据进行实时智能扫描,帮助用户提前发现库表元数据的不合规、不合理,并提供优化建议。以下是简单的功能试用:
- 创建扫描任务,建立扫描任务后,SQLE 将查询结果存储,并根据用户设定的周期进行审核。
![图片]()
- 用户可在扫描任务详情查看当前扫描任务采集的 SQL,点击”立即审核“生成扫描任务报告。
![dd02fea83536d121dbcc14fd68acdbcb.png]()
3. DB2 Top SQL 扫描任务
TOP SQL 语句可能会导致数据库性能下降,当用户需要监察 DB2 数据库中最耗费资源的 SQL 语句,进行定期优化以提高数据库运行性能时,可使用 TOP SQL 扫描任务,进行日常监督,以确保数据库性能保持在一个良好的水平。目前采集到的 SQL 支持四个指标进行查询排序,分别是:
- 执行次数 num_executions
- 总执行时间 total_elapsed_time_ms
- 平均执行时间 avg_elapsed_time_ms
- 平均 CPU 时间 avg_cpu_time_ms
以下是简单的功能试用:1. 创建扫描任务,建立扫描任务后,SQLE 将查询结果存储,并根据用户设定的周期进行审核。
![图片]()
- 用户可在扫描任务详情查看当前扫描任务采集的 SQL,点击”立即审核“生成扫描任务报告。
![图片]()
4. 支持 DB2 更多审核规则
平台强化了了对 DB2 审核规则的开发,当前已支持的 DB2 审核规则分类包括 DDL 规范、DML 规范、DQL 规范、使用建议、命名规范、索引规范,用户可根据实际需求启用规则,以优化 DB2 数据源上的 SQL。
![image.png]()
5. Oracle 支持生成回滚语句
当用户通过平台对 Oracle 数据源进行 SQL 上线操作时,如果工单上线失败,可能会导致工单内的 SQL 只执行部分而未执行其他部分。对于已经执行的 SQL,用户可能不知道如何回退操作。为此,SQLE 提供了回滚语句提示,以帮助用户回退已经执行的操作,确保数据的一致性和完整性。以下是 Oracle 数据源下的回滚语句提示效果:
![image.png]()
6. PG 支持生成回滚语句
本期在审核环节新增了对 PostgreSQL 数据源的回滚语句支持,方便 DBA 执行线下回滚操作。以下是一个简要的示例:
![图片]()
7. PG 的 SQL 分析支持查看建表语句
本期完善了 PostgreSQL 数据源下的 SQL 分析支持,除原有的列信息及索引信息外,新增了建表语句的展示,用户可在此查看完整的建表语句,帮助 DBA 进行SQL 优化。以下是一个简要的示例:
用户点击审核结果栏中的分析按钮;
![图片]()
点击表标签,查看该条 SQL 执行对象的建表语句;
![图片]()
三、完整的 Release 信息
新特性:
- [#1519] 支持中止 SQL 上线操作
- [#450] 支持通过 Webhook 方式通知工单状态
- [#1494] 新增 DB2 TOP SQL 和库表元数据智能扫描类型【企业版】
- [#1461] 智能扫描支持从 MySQL 实例在线抓取慢 SQL【企业版】
- [#715] Oracle 和 PostgreSQL 支持回滚语句【企业版】
- [#706] 支持 PostgreSQL 数据源生成回滚语句【企业版】
- [#714] 支持 PostgreSQL 数据源的 SQL 分析查看建表语句【企业版】
优化:
- [#1508] 界面优化
- [#1473] 添加数据源时根据数据源类型自动切换默认端口
Bug 修复:
- [#1480] 修复被驳回的工单,操作按钮置灰,但实际还可点击的问题
- [#1495] 修复 MySQL 审核规则“避免使用 IN (NULL)/NOT IN (NULL) ,该用法永远非真将导致条件失效”误触发的问题
- [#1499] 修复工单审核结果没有显示 SQL 语法高亮的问题
- [#1399] 修复索引有大写字母,创建工单时审核报错的问题
- [#1463] 修复一条 MySQL 规则不能触发的问题
- [#1360] 修复修改流程模板后,工单进度显示异常的问题