学习成本高,人员水平参差不齐;
团队人员更替,缺乏长效的数据治理机制;
缺少对sql质量的指标判断和整体监督,风险不可控
在项目运行中,哪些SQL是需要被治理和特别关注的呢?一般通过程序运行中不同问题的表现溯源,总结出一些常见的类型是需要被关注和治理:
项目上线后对于一次SQL优化的过程可能是大量的资源和时间投入,且没有得到很好的解决,从技术人员角度来说,问题提前被发现,修复的方案会越多,治理的成本会越低。而从企业资源来说,问题修复成本会随SQL --> 数据库 --> 系统配置 --> 硬件而提高,但优化的效果却恰好相反。
节选了目前业内比较优秀的产品进行对比:
基于产品对比,选用SOAR看起来是一个不错的选择,SOAR(SQL Optimizer And Rewriter) 是一个对 SQL 进行优化和改写的自动化工具, 由小米人工智能与云平台的数据库团队开发与维护,历时4年维护更新,功能强大,同时还支持多种优化治理手段。再结合SOAR WEB提供的sql分析与优化的web图形化能力,支持可视化web页面对soar配置进行添加、修改、复制,多配置切换,配置的导出、导入与导入,搭配Perfmance_schema,可组合成一套成熟可落地的SQL优化和改写自动化治理方案。
SOAR由Go语言开发,基于SQL抽象语法树、根据SQL改写军规数据、提供100+SQL改写建议;支持索引优化、正则(REGEXP)、EXPLAIN结果分析、SQL美化压缩、ALTER语句合并、量化标准,SQL打分、DML转SELECT;支持Markdown、HTML多种格式报告输出。
详见Github:https://github.com/XiaoMi/SOAR
MySQL Performance Schema 用于监控MySQL服务器的资源消耗、资源等待等情况,主要关注性能数据,使用PERFORMANCE_SCHEMA存储引擎和performance_schema数据库实现。
官方文档:
https://dev.mysql.com/doc/refman/5.6/en/performance-schema.html
SOAR WEB是在soar提供的能力基础上,融合sql分析与优化的底层能力以图形化页面进行展示,支持soar配置的添加、修改、复制,多配置切换,配置的导出、在线结果分析、导入与导出等多样化功能。
详见Github:https://github.com/xiyangxixian/soar-web
第一步:SOAR安装
SOAR本身是基于GO语言开发,依赖GO1.10+ 版本,安装启用非常便捷,下载安装包之后生成二进制文件可直接启用,以下是官方提供的安装案例:
wget https://github.com/XiaoMi/SOAR/releases/download/${tag}/SOAR.${OS}-amd64 -O SOAR
chmod a+x SOAR
如:
wget https://github.com/XiaoMi/SOAR/releases/download/0.9.0/SOAR.linux-amd64 -O SOAR
chmod a+x SOAR
go get -d github.com/XiaoMi/SOAR
cd ${GOPATH}/src/github.com/XiaoMi/SOAR && make
echo 'select * from film' | ./SOAR
参考:https://github.com/XiaoMi/SOAR/blob/master/doc/install.md
select * from setup_consumers;
show variables like 'performance_schema%history%size';
python3.x
Flask
pymysql
pycryptodome
下载源码( Windows 可略过此步骤):
sudo -y apt-get install wget 或者 sudo yum -y install wget
wget https://codeload.github.com/xiyangxixian/SOAR-web/zip/master -O SOAR-web-master.zip
解压缩( Windows 可略过此步骤):
sudo -y apt-get install unzip 或者 sudo yum -y install unzip
unzip SOAR-web.zip
cd SOAR-web-matster
运行启动脚本:
Windows:run.bat
Linux or Mac:bash run.sh
守护进程支持:
启动服务:bash manage.sh start
关闭服务:bash manage.sh stop
重启服务:bash manage.sh restart
SOAR WEB 启动成功后在浏览器上输入 http://127.0.0.1:5077 可直接进行访问,整个项目的前期准备工作就完成了。
启动成功后可直接访问SOAR WEB 页面,对需要监控的数据源进行可视化配置,实现自动化发现和治理SQL 的目的。
SOAR以编排和自动化为核心,可以有序处理多元数据,持续进行安全告警分诊与调查、案例处置、协同作战、事件响应,规范SQL审查,量化治理数据,实现团队、工具和流程的无缝整合,更好的为项目的稳定高效运行保驾护航。