前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小米开源SQL智能优化与改写工具SOAR

小米开源SQL智能优化与改写工具SOAR

作者头像
行 者
发布2020-04-17 16:36:23
9420
发布2020-04-17 16:36:23
举报

简述

SOAR(SQL优化器和重写器)是一个对SQL进行优化和改写的自动化工具。由小米人工智能与云平台的数据库团队开发与维护。

功能特点

  • 跨平台支持(支持Linux,Mac环境,Windows环境理论上也支持,不过未全面测试)
  • 目前只支持MySQL语法族协议的SQL优化
  • 支持基于启发式算法的语句优化
  • 支持复杂查询的多列索引优化(UPDATE,INSERT,DELETE,SELECT)
  • 支持EXPLAIN信息丰富解读
  • 支持SQL指纹,压缩和美化
  • 支持同一张表多条ALTER请求合并
  • 支持自定义规则的SQL改写

架构

请输入图片描述
请输入图片描述

安装

下载二进制安装包
[root@lnmp software]# wget https://github.com/XiaoMi/soar/releases/download/0.11.0/soar.linux-amd64
[root@lnmp software]# mv soar.linux-amd64 soar
[root@lnmp software]# chmod a+x soar
[root@lnmp software]# ./soar --help
Usage of ./soar:
  -allow-charsets string
        AllowCharsets (default "utf8,utf8mb4")
  -allow-collates string
        AllowCollates
  -allow-drop-index
        AllowDropIndex, 允许输出删除重复索引的建议
  -allow-engines string
        AllowEngines (default "innodb")
  -allow-online-as-test
        AllowOnlineAsTest, 允许线上环境也可以当作测试环境
  -blacklist string
        指定 blacklist 配置文件的位置,文件中的 SQL 不会被评审。一行一条SQL,可以是指纹,也可以是正则
  -check-config
        Check configs
  -cleanup-test-database
        单次运行清理历史1小时前残余的测试库。
  -column-not-allow-type string
        ColumnNotAllowType (default "boolean")
  -config string
        Config file path
  -delimiter string
        Delimiter, SQL分隔符 (default ";")
  .....
安装验证
[root@lnmp software]# echo 'select * from user where id = 1' | ./soar
# Query: A19E0F32BA0B5492

★ ★ ★ ★ ☆ 95分

```sql

SELECT  
  * 
FROM  
  USER  
WHERE  
  id  = 1
```

## 不建议使用 SELECT * 类型查询

* **Item:**  COL.001

* **Severity:**  L1

* **Content:**  当表结构变更时,使用 \* 通配符选择所有列将导致查询的含义和行为会发生更改,可能导致查询返回更多的数据。

[root@lnmp software]# echo 'select id,name from user where id = 1' | ./soar
# Query: DA7A90B4B14DD97F

★ ★ ★ ★ ★ 100分

```sql

SELECT  
  id, name  
FROM  
  USER  
WHERE  
  id  = 1
```

## OK

参考资料

soar girhub

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简述
  • 功能特点
  • 架构
  • 安装
    • 下载二进制安装包
    • 参考资料
    相关产品与服务
    云数据库 MySQL
    腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档