2.2304.0
SQLE Release Notes

SQL审核工具 SQLE 2.2303.0 已经发布。以下对新版本的 Release Notes 进行详细解读。

文章主要分为以下三部分内容:

一、SQLE 项目介绍

二、新版本主要功能总结

三、完整的release信息

一、SQLE 项目介绍

爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。

如何获取:

类型地址
版本库https://github.com/actiontech/sqle
文档https://actiontech.github.io/sqle-docs-cn/
发布信息https://github.com/actiontech/sqle/releases
数据审核插件开发文档https://actiontech.github.io/sqle-docs-cn/3.modules/3.7_auditplugin/auditplugin_development.html
社区版在线体验http://demo.sqle.actionsky.com
超级管理员:admin,密码:admin。
企业版在线体验http://demo.sqle.actionsky.com:8889
用户:admin,密码:admin。

二、新版本主要功能总结

1. 新增SQL影响行数预测功能【企业版】

当用户需要了解SQL实际的影响行数时,现有执行计划中仅能提供预估的影响行数,将与实际存在差异,无法用以评估SQL实际性能。因此,平台在审核结果-SQL分析中,新增影响行数字段,用户可通过查看该条SQL的影响行数,评估其执行性能。以下是简单的功能试用:

用户点击审核结果中的SQL分析,在性能panel中查看该条SQL的影响行数。MySQL、Oracle、PostgreSQL、SQL Server 本月均已完成支持。

2. 审核结果突出规则程度及数量

当进行SQL审核时,用户需要了解触发的审核规则的严重程度,确认触发的规则是否有超出自身设置的审核等级。因此,平台对审核结果栏进行优化,优先展示SQL触发的规则等级及数量。以下是简单的功能试用:

用户查看审核结果,查看触发的规则等级及数量

点击展开,查看触发的规则详情

3. 新增processlist列表扫描任务,支持事中审核

除了上线前和上线后的审核,用户往往还需要在SQL语句执行过程中对其进行监控和审核,用以及时识别出潜在的问题SQL。然而,当前的审核场景往往无法覆盖事中这一环节的审核。为此,SQLE新增了processlist列表审核扫描任务,实现了事前、事中、事后的全覆盖,使得用户可以在SQL语句的整个生命周期内进行审核和管理,从而减少审核时间和工作量。以下是简单的使用步骤:

用户在智能扫描任务列表新增processlist列表扫描任务,任务创建后,页面将按照审核周期生成任务报告。

  • 采集周期(秒):表示SQLE对 MySQL processlist 的采集频率,SQLE将按照该时间间隔进行 SQL采集。如果该值过低,会影响实例性能;
  • SQL最小执行时间(秒):表示SQLE对 MySQL processlist 的采集过滤条件,只有大于等于该时间的SQL才会被采集记录。如果为0,则表示不进行过滤;
  • 审核过去时间段内抓取的SQL(分钟):processlist列表扫描任务是增量审核,不在该时间段内执行的SQL将不会被再次采集
4. 提供易于理解的改进建议

我们的SQL审核和质量管控工具不仅可以为用户提供审核结果,还可提供细化的审核建议。当SQL语句被审核规则标记为有问题时,面对精简的规则提示,用户可能会对如何优化现有SQL感到困惑。为了帮助用户更好地理解审核结果并解决问题,我们在审核结果中加入了详细的审核建议说明。由此用户可以更好地理解并采取适当的修改策略,更高效地提高SQL语句质量。以下是简单的功能试用:

工单审核结果页面,在审核结果中查看触发的审核规则,鼠标移入后查看审核建议:

扫描任务审核结果页面,在生成的报告详情中查看触发的审核规则,鼠标移入后查看审核建议:

5. 新增一批 MySQL 审核规则

检查LIMIT的偏移offset是否过大

因为offset指定了结果集的起始位置,如果起始位置过大,那么 MySQL 需要处理更多的数据才能返回结果集,这可能会导致查询性能下降。

UPDATE/DELETE操作需要有WHERE条件

因为这些语句的目的是修改数据库中的数据,需要使用 WHERE 条件来过滤需要更新或删除的记录,以确保数据的正确性。另外,使用 WHERE 条件还可以提高查询性能。

禁止过度使用绑定变量

因为过度使用绑定变量会增加查询的复杂度,从而降低查询性能。过度使用绑定变量还会增加维护成本。

连接操作必须指定连接条件

指定连接条件可以确保连接操作的正确性和可靠性,如果没有指定连接条件,可能会导致连接失败或连接不正确的情况。

SQL中使用了COUNT(col)

建议使用COUNT(*),因为使用 COUNT(col) 需要对表进行全表扫描,这可能会导致性能下降。

索引字段需要有非空约束

索引字段上如果没有非空约束,则表记录与索引记录不会完全映射。

执行计划中不能存在索引全扫描步骤

在数据量大的情况下索引全扫描严重影响SQL性能。

执行计划中不能存在索引跳扫

索引扫描是跳转扫描,未遵循最左匹配原则。

update和delete语句评估影响行数过大

如果 DML 操作影响行数过多,会导致查询性能下降,因为需要扫描更多的数据。

禁止对长字段进行排序

对例如VARCHAR(2000)这样的长字段进行ORDER BY、DISTINCT、GROUP BY、UNION之类的操作,会引发排序,有性能隐患。

6. Oracle审核插件改造及规则新增【企业版】

本期平台完成了对Oracle 审核插件的重构,使得SQLE对Oracle的SQL审核支持度更高,目前平台已支持83条Oracle审核规则。

三、完整的release信息

Release Notes

特性:

  • [#1413] 新增 SQL 影响行数提示【企业版】;
  • [#1432] 新增一批 MySQL 审核规则;
  • [#1450] 新增智能扫描:MySQL processlist 审核。

优化:

  • [#1411] 每条审核结果对应的审核建议细化,可查看对应建议的说明;
  • [#1414] 审核结果列表展示优化;
  • [#1427] 审核结果突出规则程度及数量;
  • [#1412] 部分页面进行优化;
  • [#1452] 创建工单页面展示使用的规则模板;
  • [#1451] 调整工单描述的长度限制;
  • [#1446] PG、oracle插件支持影响行数提示【企业版】;
  • [#1412] 界面优化;

缺陷修复:

  • [#1474] 修复创建新用户时会丢失已有用户的权限问题。

avatar
100
  Subscribe  
提醒