当前位置: 首页 > 科技观察

分享一个MySQL语句优化的辅助工具——DBA必备

时间:2023-03-14 09:49:48 科技观察

概述优化SQL是DBA的常见工作之一。如何高效快速的优化一条语句是每个DBA经常面临的问题。对于一个DBA来说,掌握一门与其工作相匹配的语言是非常有必要的。与shell的简洁和perl的优雅相比,Python是一门严谨的高级语言。它具有上手快、语法简单、扩展丰富、跨平台等诸多优点。许多人称它为“胶水”语言。通过大量丰富的类库和模块,您可以快速构建您需要的工具。今天主要分享一个韩峰老师写的《MySQL语句优化辅助工具》。通过这个小工具,可以自动调用命令将以上内容一次性推送给DBA,大大加快了优化过程。下面是这个小工具的介绍,领取方法附在文末。环境模块-MySQLDB模块-sqlparsePython版本=2.7.31。由于脚本较多,脚本内容被截断。2.调用方法pythonmysql_tuning.py-ptuning_sql.ini-s'yoursql'参数说明:-p指定配置文件名-s指定SQL语句3.这里的配置文件是[database]来描述数据库连接信息,[选项]运行配置信息。4.输出说明1)标题部分包含运行数据库的地址信息和数据版本信息。2)原始SQL用户执行输入SQL,主要用于后续SQL重写对比。显示语句时使用格式化。3)系统级参数脚本选择,显示一些与SQL性能相关的参数。这部分硬编码在代码中,如果需要扩展需要修改脚本。4)优化器开关下面是一些与优化器相关的参数。通过调整这些参数,可以手动干预优化器的行为。5)执行计划是调用explainextended的输出结果。如果结果太长,可能是串口显示有问题(暂未解决)。6)优化器重写的SQL可以判断优化器是否对SQL进行了优化(比如子查询的处理)。7)统计信息这里会显示SQL语句涉及到的所有表及其索引的统计信息。8)运行状态信息在session级别比较执行前后的状态(SHOWSTATUS),显示变化的部分。需要注意的是,由于状态数据是使用SELECT方式采集的,所以会导致个别指标(如Com_select)出错。9)PROFILE详细信息调用SHOWPROFILE得到的详细信息。10)PROFILE汇总信息根据PROFILE的资源消耗,展示不同阶段(TOPN)的消耗对比,直观展示“瓶颈”。