SOAR SQL进行优化和改写的自动化工具

Wesley13
• 阅读 532

前言

SQL优化是程序开发中经常遇到的问题,尤其是在程序规模不断扩大的时候。SQL的好坏不仅制约着程序的规模,影响着用户的体验,甚至威胁着信息的安全。

我们经常听到说哪家平台挂了,哪家网站被黑了,但我们不知道,其实这些平台挂了、被黑了的原因很多时候在于SQL不够健壮。SQL不够健壮易造成数据查询超时、SQL注入、信息泄漏等问题。

SQL优化归根到底是SQL语句的优化,索引的优化。由于很多数据库自带的分析工具不够强大便捷,很多时候要想写出好一点的SQL语句完全凭经验。这也是为什么有人说看一个程序员资历深不深就看他写的SQL好不好的原因。

凭经验做事不总是那么可靠的,况且也并不是人人都有那么多的经验。那如果不靠经验,那新手怎么办?答,使用SOAR!

什么是SOAR

SOAR是SQL Optimizer And Rewriter的简称。SOAR是一个对SQL进行优化和改写的自动化工具,由小米人工智能与云平台的数据库团队开发与维护。现在在GitHub上有4000多星。

功能特点

SOAR有如下功能特点:

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

安装使用

SOAR支持Linux、Mac、Window环境,可以在Linux、Mac、Window上安装使用。下面以Window版本为例介绍安装使用过程。

1、安装Go

SOAR的使用依赖Go语言,所以在安装使用之前,先安装Go。

下载地址:https://studygolang.com/dl

下载完成后进行Go安装,本文安装使用默认路径,安装完成后,在cmd中输入 go version ,如果出现版本信息,则表示安装成功。如果报错,将将C:Go/in(你的安装路径)加入环境变量。

SOAR SQL进行优化和改写的自动化工具

2、安装SOAR

选择windows版本下载SOAR安装文件

下载地址:https://github.com/XiaoMi/soar/releases

打开上面网址,下载以下安装文件

SOAR SQL进行优化和改写的自动化工具

将安装文件soar.windows-amd64重命名为soar.exe,放置D盘soar文件夹下,你也可以将这个目录加入到环境变量中。

打开cmd,进入到soar.exe所在目录,然后输入 soar -version命令,如果出行版本信息,则为安装成功。

SOAR SQL进行优化和改写的自动化工具

3.安装python3方法如下:

3.1.进入Python官方网站下载安装包

点击导航栏的 Downloads 会自动识别你的windows系统  你会看到  Python3.6.2 和 Python2.7.13   (32位系统)的安装包

注:Python3以后版本不再向Python2进行兼容,所有如果你是单纯为了学新东西建议直接下载Python3以后的版本

SOAR SQL进行优化和改写的自动化工具

如果你是系统是windows64位或者你想下载其他版本的安装包—— 请点击Downloads  > Windows   下载你需要的版本安装包

选择 Download Windows x86-64 executable installer 可执行的安装文件

注:64位版本不可以安装在32位的系统上,但是32位版本可以安装在64位的系统

SOAR SQL进行优化和改写的自动化工具

3. 2.将Python安装到你的windows操作系统上

SOAR SQL进行优化和改写的自动化工具

特别要注意勾上Add Python 3.7 to PATH,然后点“Install Now”即可完成安装

安装成功后,打开命令提示符窗口,敲入python后出现以下情况则安装完成,如果报错命令不存在则没有安装环境变量

SOAR SQL进行优化和改写的自动化工具

4、安装Web图形化工具

这一步不是必须的,如果你喜欢命令行操作,完成步骤2即可。选择安装Web图形化工具,只是为了方便操作。

安装Web图形化工具,可以在下面地址下载:

https://github.com/xiyangxixian/soar-web

注意:此Web图形化工具依赖Python3x、Flask、PyMysql、Pycryptodome。因此,安装此Web图形化工具前先安装Python3x。

下载完成后把文件解压放到D盘。

SOAR SQL进行优化和改写的自动化工具

进入D盘 D:\soar\soar-web-master文件夹,执行如下命令,安装其他依赖。:

pip install -r requirement.txt

执行命令后如果报以下红色方框错误。需要运行以下命令更换镜像:

pip install virtualenv -i https://pypi.douban.com/simple

SOAR SQL进行优化和改写的自动化工具

待所有依赖晚装完毕,执行如下命令,启动服务。

run.bat

效果如下:

SOAR SQL进行优化和改写的自动化工具

图形管理界面:

SOAR SQL进行优化和改写的自动化工具

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
御弟哥哥 御弟哥哥
3年前
MySQL索引原理老夫一把梭,从头到尾全讲透了
索引,可能让好很多人望而生畏,毕竟每次面试时候MySQL的索引一定是必问内容,哪怕先撇开面试,就在平常的开发中,对于SQL的优化也而是重中之重。可以毫不夸张的说,系统中SQL的好坏,是能直接决定你系统的快慢的。但是在优化之前大家是否想过一个问题?那就是:我们优化的原则是什么?优化SQL的理论基础是什么?虽然说实践出真知,但是我更相信理论是
Easter79 Easter79
2年前
sql注入
反引号是个比较特别的字符,下面记录下怎么利用0x00SQL注入反引号可利用在分隔符及注释作用,不过使用范围只于表名、数据库名、字段名、起别名这些场景,下面具体说下1)表名payload:select\from\users\whereuser\_id1limit0,1;!(https://o
Stella981 Stella981
2年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
2年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
2年前
35岁,真的是程序员的一道坎吗?
“程序员35岁是道坎”,“程序员35岁被裁”……这些话咱们可能都听腻了,但每当触及还是会感到丝丝焦虑,毕竟每个人都会到35岁。而国内互联网环境确实对35岁以上的程序员不太友好:薪资要得高,却不如年轻人加班猛;虽说经验丰富,但大部分公司并不需要太资深的程序员。但35岁危机并不是不可避免的,比如你可以不断精进技术,将来做技术管理或者
Wesley13 Wesley13
2年前
mysql5.6 分页查询优化
mysql5.6分页查询优化场景:表结构:主键(非自增)contentCode(varchar),过滤条件列为updateTime(timeStamp),已经为timestamp建立索引。搜索sql为:SELECTFROMmy_hello_tableWHEREupdat
Wesley13 Wesley13
2年前
Sql优化器究竟帮你做了哪些工作?
上一篇,我们介绍了《DB——数据的读取和存储方式》(https://my.oschina.net/u/1859679/blog/1581379),这篇聊聊sql优化器的工作。关系型数据库的一大优势之一,用户无需关心数据的访问方式,因为这些优化器都帮我们处理好了,但sql查询优化的时候,我不得不要对此进行关注,因为这牵扯到查询性能问题。有经验的程序
Stella981 Stella981
2年前
Redis企业级应用
   我们在做项目的时候经常会遇到很多性能的问题,也成为整个系统优化最疼痛的问题,主要还是因为在用户量大的时候或者就是说高并发访问的时候,我们系统的数据库会有一个限制。当然也可以通过对数据库的优化对系统进行优化,(最常见的数据库优化手段无非就是建索引,explain分析慢sql,以及sql语句的优化或者分库分表等一系列的策略,当然后面我会专门写一篇文章专