# 社区版
1. 扫描任务审核报告支持下载
本期已实现扫描任务审核报告的下载功能,当用户需要将扫描任务产生的审核报告同步给项目外的其他人,或需要对审核报告进行存档时,可以直接下载报告文件。以下是简单的功能试用:
查看扫描任务的审核报告时,用户点击下载扫描任务报告按钮。
点击下载审核报告
平台将以 CSV 格式导出当前扫描任务报告内容,用户可以在导出文件中查看报告基本信息及 SQL 审核结果。
报告内容
2. 支持快速审核 SQL
现在,您可以直接提交需要审核的 SQL,无需创建工单,即刻获得审核结果。这个全新的功能将带来更快速、更高效的审核体验。来一起简单体验一下:
进入“项目”页面后,左边栏增加了“SQL 审核”功能选项,点击后展开的是 SQL 审核的历史审核记录列表。
审核列表页面
点击右上角的“创建审核”,就可以开始审核啦!与工单审核不同的是,新功能还额外支持不连接数据源的静态审核,可以在没有运行时环境的情况下,对 SQL 进行全面的语法和语义分析。SQL 上传方式也新增了上传 ZIP 文件的方式。此外,还可以为审核记录添加业务标签,满足您更多的场景需求。
SQL 审核页面
编辑好 SQL 之后点击编辑框下方的“审核”按钮,即可查看到审核结果。审核结束后,可以回到审核记录列表追溯到每次审核的信息。
查看审核结果
3. 新增 MySQL 审核规则
-
禁止在 WHERE 条件中使用与过滤字段不一致的数据类型
-
禁止使用聚合函数
-
避免在 FROM 子句中对相同的表被连接两次及以上
-
ORDER BY / GROUP BY 操作需要能使用索引排序或分组
-
SQL 查询条件必须能走索引
-
表字段必须有 NOT NULL 约束
-
禁止 INSERT … SELECT
-
建议连库查询时,确保 SQL 执行计划中使用的索引区分度大于阈值
-
使用 TEXT 类型的字段建议和原表进行分拆,与原表主键单独组成另外一个表进行存放
-
建议在组合索引中将区分度高的字段靠前放
-
JOIN 字段必须包含索引
-
扫描行数超过阈值,筛选条件必须带上主键或者索引
-
查询数据量超过阈值,筛选条件必须带上主键或者索引
-
表行数超过阈值,建议对表进行拆分
-
禁止对索引列进行数学运算和使用函数
-
连接表字段的字符集和排序规则必须一致
# 企业版
1. 支持通过飞书审批工单
本期实现 SQLE 平台与飞书的对接,企业用户可以将工单审批集成到团队的协作平台中,使审批过程更加便捷、高效和可追溯,同时提升数据安全和团队协作的效率。以下是简单的功能效果:
创建工单后,相应审批成员即可在飞书端收到审批通知。
飞书审批通知
点击审批卡片,查看工单详情,可点击 同意/拒绝,完成审批操作。
工单详情
你可以在用户手册的流程对接部分查找相关应用的配置指南,用户手册的链接为:https://actiontech.github.io/sqle-docs/docs/user-manual/sys-configuration/process_syn
此外,如果你的团队使用钉钉作为协作工具,SQLE 也已支持与钉钉审批的对接,关于如何使用此功能的详细说明,同样可以在上述链接中找到,以下是钉钉审批的效果示例:
钉钉审批通知
2. 新增项目全生命周期 SQL 管控面板
为了提供更好的 SQL 审核和处理体验,平台引入了项目全生命周期 SQL 管控面板。通过该功能,用户可从多维度全面了解平台当前采集的 SQL 情况,包括平台采集的 SQL 总量、已发现的问题 SQL 量、已优化 SQL 量,用以快速发现和修复不合规的 SQL,提高数据库性能和维护效率。同时,监控面板还支持快捷操作,项目管理员可以将需要调整的 SQL 分配给其他成员进行修改,并手动关闭已解决的 SQL。
SQL 管控面板
3. 新增规则知识库
我们引入了规则知识库页面,汇集了一批经验丰富的 DBA 运维专家的沉淀,旨在帮助研发人员深入理解规则和提供 SQL 优化的建议,并将其应用于实际开发中。
知识库页面一般包含规则的背景、原理、优化建议以及对应的规范 SQL 举例。通过知识库页面,用户可以获得更加深入和完整的规则认识,了解规则的背景与优化方法,从而实现更高效的开发和优化。
知识库
用户在规则列表或审核结果页面查看规则时,可以点击“查看更多”按钮,进入知识库页面。
规则列表页面
审核结果页面
此外,用户还可以编辑、贡献自己对规则的理解,共享和积累宝贵的经验。
4. 新增 TDSQL 审核规则
-
shardkey 字段的类型必须是 INT、BIGINT、SMALLINT、CHAR 或 VARCHAR
-
shardkey 字段内容禁止包含中文
-
禁止使用聚合函数
-
SQL 查询条件必须能走索引
-
表字段必须有 NOT NULL 约束
-
禁止 INSERT … SELECT
-
建议连库查询时,确保 SQL 执行计划中使用的索引区分度大于阈值
-
使用 TEXT 类型的字段建议和原表进行分拆,与原表主键单独组成另外一个表进行存放 建议在组合索引中将区分度高的字段靠前放
-
JOIN 字段必须包含索引
-
扫描行数超过阈值,筛选条件必须带上主键或者索引
-
查询数据量超过阈值,筛选条件必须带上主键或者索引
-
表行数超过阈值,建议对表进行拆分
-
禁止对索引列进行数学运算和使用函数
-
连接表字段的字符集和排序规则必须一致
-
使用联合索引时,必须使用联合索引的首字段
-
禁止对联合索引左侧字段进行 IN 、OR 操作
三、完整的 Release 信息
# 社区版
新功能:
-
[#1743] 新增 MySQL 审核规则
-
[#1764] MyBatis 智能扫描任务支持所有类型的数据源
-
[#1767] 支持导出智能扫描任务的审核报告
-
[#1783] 新增 MySQL 审核规则
-
[#1811] 页面上新增 SQL 审核功能
优化:
-
[#1733] UI 对所有资源名称长度限制放宽到 120 个字符
-
[#1768] 查看工单列表时,支持对工单描述使用模糊搜索
Bug 修复:
-
[#1756] 修复开启钉钉对接后,关闭工单会导致 panic 的问题
-
[#1830][#1832] 修复 MySQL 审核时如果 SQL 内切换过 schema,导致审核异常的问题
# 企业版
新功能:
-
[#901] 支持通过飞书审批工单
-
[#916] TDSQL 新增审核规则
-
[#943] 新增 SQL 全生命周期管控功能
-
[#958] 新增审核规则的知识库功能
-
[#974] 智能扫描支持对 TDSQL 进行库表元数据扫描
-
[#982] 新增 TDSQL 审核规则
优化:
-
[#931] 优化 MySQL 慢日志文件类型的智能扫描任务