优化SQL,是DBA常见的工作之一。如何高效、快速地优化一条语句,是每个DBA经常要面对的一个问题。对于一名DBA来说,掌握一门语言配合自己的工作是非常必要的。相对于shell的简单、perl的飘逸,Python是一种严谨的高级语言。其具备上手快、语法简单、扩展丰富、跨平台等多种优点。很多人把它称为一种“胶水”语言,通过大量丰富的类库、模块,可以快速搭建出自己需要的工具。
今天主要分享一下韩锋大佬自己写的一个“MySQL语句优化辅助工具”,通过这个小工具,可以自动调用命令将上面这些内容一次性推给DBA,大大加速优化的过程。
下面介绍下这个小工具,文末附领取方式。
模块 - MySQLDB
模块 - sqlparse
Python版本 = 2.7.3
因为脚本内容比较多,所以就截部分了。
python mysql_tuning.py -p tuning_sql.ini -s '你的sql'
参数说明:
-p 指定配置文件名称
-s 指定SQL语句
这里分别是[database]描述数据库连接信息,[option]运行配置信息。
1) 标题部分
包含运行数据库的地址信息及数据版本信息。
2) 原始SQL
用户执行输入的SQL,这部分主要是为了后续对比SQL改写时使用。语句显示时使用了格式化。
3) 系统级参数
脚本选择显示了部分与SQL性能相关的参数。这部分是写死在代码中的,如需扩展需要修改脚本。
4) 优化器开关
下面是和优化器相关的一些参数,通过调整这些参数可以人为干预优化器行为。
5) 执行计划
就是调用explain extended的输出结果。如果结果过长,可能出现显示串行的问题(暂时未解决)。
6) 优化器改写后的SQL
通过这里可判断优化器是否对SQL进行了某种优化(例如子查询的处理)。
7) 统计信息
在SQL语句中所有涉及到的表及其索引的统计信息都会在这里显示出来。
8) 运行状态信息
在会话级别对比了执行前后的状态(SHOW STATUS),并将出现变化的部分显示出来。需要注意的是,因为收集状态数据是采用SELECT方式,会造成个别指标的误差(例如Com_select)。
9) PROFILE详细信息
调用SHOW PROFILE得到的详细信息。
10) PROFILE汇总信息
根据PROFILE的资源消耗情况,显示不同阶段消耗对比情况(TOP N),直观显示"瓶颈"所在。
项目中用到的一些特殊字符和图标 html代码 XML/HTML Code 复制内容到剪贴板 div ...
Elasticsearch 是通过 Lucene 的倒排索引技术实现比关系型数据库更快的过滤。特...
正则忽略大小写 – RegexOptions.IgnoreCase 例如: 复制代码 代码如下: Str = R...
DELETEFROMTablesWHEREIDNOTIN(SELECTMin(ID)FROMTablesGROUPBYName) Min的话保...
工具:Eclipse,Oracle,smartupload.jar;语言:jsp,Java;数据存储:Oracle。...
4月11日20:30~22:00通过腾讯会议进行了第二次在线学习讨论我把学习笔记整理一下...
本文实例讲述了Laravel框架源码解析之反射的使用。分享给大家供大家参考,具体如...
复制代码 代码如下: % URL="http://news.163.com/special/00011K6L/rss_newstop....
上篇文章给大家介绍了 Java正则表达式匹配,替换,查找,切割的方法 ,接下来,...
错误描述: 在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报...