MySQL 语句优化工具 开源版本

相信很多朋友都有LAMP或LNAMP建站,那么必然会有使用MySQL,对于非DBA的我们,优化SQL语句总是无从下手,大叔偶然之下,发现网上有大佬写的一个MySQL的语句优化工具,Python版本的,而且代码全公开,算是开源吧。

有需要的朋友可以前往下载。

工具说明

1、准备条件

模块 – MySQLDB

模块 – sqlparse

Python版本 = 2.7.3 (2.6.x版本应该也没问题,3.x版本没测试)

2、调用方法

python mysql_tuning.py -p tuning_sql.ini -s 'select xxx'

1) 参数说明

-p 指定配置文件名称

-s 指定SQL语句

3、配置文件

共分两节信息,分别是[database]描述数据库连接信息,[option]运行配置信息。

1) [database]

server_ip   = 127.0.0.1

db_user     = testuser

db_pwd      = testpwd

db_name     = test

2) [option]

sys_parm    = ON     //是否显示系统参数

sql_plan    = ON //是否显示执行计划

obj_stat    = ON //是否显示相关对象(表、索引)统计信息

ses_status  = ON //是否显示运行前后状态信息(激活后会真实执行SQL)

sql_profile = ON   //是否显示PROFILE跟踪信息(激活后会真实执行SQL)

4、输出说明

1) 标题部分:===== BASIC INFORMATION =====

包含运行数据库的地址信息及数据版本信息。

2) 原始SQL:===== ORIGINAL SQL TEXT =====

用户执行输入的SQL,这部分主要是为了后续对比SQL改写时使用。语句显示时使用了格式化。

3) 系统级参数:===== SYSTEM PARAMETER =====

脚本选择显示了部分与SQL性能相关的参数。这部分是写死在代码中的,如需扩展需要修改脚本。

4) 优化器开关:===== OPTIMIZER SWITCH =====

优化器相关的一些参数,通过调整这些参数可以人为干预优化器行为。

5) 执行计划:===== SQL PLAN =====

就是调用explain extended的输出结果。如果结果过长,可能出现显示串行的问题(暂时未解决)。

6) 优化器改写后的SQL:===== OPTIMIZER REWRITE SQL =====

通过这里可判断优化器是否对SQL进行了某种优化(例如子查询的处理)。

7) 统计信息:===== OBJECT STATISTICS =====

在SQL语句中所有涉及到的表及其索引的统计信息都会在这里显示出来。

8) 运行状态信息:===== SESSION STATUS (DIFFERENT) =====

在会话级别对比了执行前后的状态(SHOW STATUS),并将出现变化的部分显示出来。需要注意的是,因为收集状态数据是采用SELECT方式,会造成个别指标的误差(例如Com_select)。

9) PROFILE详细信息:===== SQL PROFILING(DETAIL)=====

调用SHOW PROFILE得到的详细信息。

10) PROFILE汇总信息:===== SQL PROFILING(SUMMARY)=====

根据PROFILE的资源消耗情况,显示不同阶段消耗对比情况(TOP N),直观显示”瓶颈”所在。

工具下载

优化工具

提取码:,解压码:

下载

原作者:韩锋

原创文章,转载请注明出处:MySQL 语句优化工具 开源版本@方块李分享博客

声明:本站大部分内容均收集于网络,且本站不提供存储、下载服务,本站所有内容只做学习和交流使用,版权归原作者所有。本站发布的内容若侵犯到您的权益,请点击右侧""联系站长删除,我们将及时处理!
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论