25

SQL优化还凭经验?这个工具能帮你智能优化SQL

 5 years ago
source link: http://news.51cto.com/art/201903/594076.htm?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

7Z7vQrm.jpg!web

前言

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 ,如果出现版本信息,则表示安装成功。

ziMvMrr.jpg!web

如果报错,将将C:Goin(你的安装路径)加入环境变量。

2、安装SOAR

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

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

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

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

R7z6Zz2.jpg!web

3、安装Web图形化工具

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

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

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

此Web图形化工具依赖Python3x、Flask、PyMysql、Pycryptodome。因此,安装此Web图形化工具前先安装Python3x。待Python3x完成后,执行如下命令,安装其他依赖。

pip install -r requirement.txt

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

run.bat

如下是安装后的效果图:

EZFbEj7.jpg!web

SQL优化分析页面

此页面不仅可以分析SQL、智能改写SQL,还可以美化SQL

zQ3Izi3.jpg!web

你可以根据分析建议优化SQL语句

VbuIvia.jpg!web

SQL优化建议效果

此Web图形化工具的数据库配置配置在LocalStorage,方便操作,也不增加额外负担

EbuIvqe.jpg!web

数据库配置页面


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK