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

有了这四个脚本工具,老板再也不怕我写出烂SQL了

时间:2023-03-17 15:00:46 科技观察

运行mysql性能如何?参数设置是否正确?账户设置是否存在安全隐患?你知道吗?俗话说,工欲善其事,必先利其器。定期对您的MYSQL数据库进行体检是保证数据库安全运行的重要手段。今天给大家分享几款mysql优化工具。你可以用它们对你的mysql进行体检并生成awr报告,这样你就可以从整体上掌握你的数据库的性能。1.mysqltuner.pl这是mysql常用的数据库性能诊断工具。主要检查参数设置的合理性,包括日志文件、存储引擎、安全建议和性能分析。针对潜在问题,给出改进建议,是mysql优化的好帮手。在之前的版本中,MySQLTuner支持MySQL/MariaDB/PerconaServer大约300个指标。项目地址:https://github.com/major/MySQLTuner-perl1.1下载[root@localhost~]#wgethttps://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl1.2使用[root@localhost~]#./mysqltuner.pl--socket/var/lib/mysql/mysql.sock>>MySQLTuner1.7.4-MajorHayden>>Bug报告,功能请求,并在http://mysqltuner.com/上下载>>使用“--help”运行以获得其他选项和输出过滤[--]跳过MySQLTuner脚本的版本检查请输入您的MySQL管理登录名:root请输入您的MySQL管理密码:[OK]目前运行支持的MySQL版本5.7.23[OK]运行在64位架构1.3,报告分析1)重要注意[!!](括号内有感叹号的项目)如[!!]Maximumpossiblememoryusage:4.8G(244.13%ofinstalledRAM),说明内存已经被严重使用。2)关注最后一条建议“Recommendations”。2.tuning-primer.sh这是mysql的另一个优化工具。对mysql进行整体体检,针对潜在问题给出优化建议。项目地址:https://github.com/BMDan/tuning-primer.sh目前支持检测和优化建议的内容如下:2.1下载[root@localhost~]#wgethttps://launchpad.net/mysql-tuning-primer/trunk/1.6-r1/+download/tuning-primer.sh2.2使用[root@localhost~]#[root@localhostdba]#./tuning-primer.sh--MYSQL性能调优PRIMER---By:MatthewMontgomery-2.3报告分析重点查看红色提示的选项,根据自己系统的实际情况根据建议修改,例如:3.pt-variable-advisorpt-variable-advisor可以分析MySQL变量并讨论可能出现的问题提出建议。3.1安装https://www.percona.com/downloads/percona-toolkit/LATEST/[root@localhost~]#wgethttps://www.percona.com/downloads/percona-toolkit/3.0.13/binary/redhat/7/x86_64/percona-toolkit-3.0.13-re85ce15-el7-x86_64-bundle.tar[root@localhost~]#yuminstallpercona-toolkit-3.0.13-1.el7.x86_64.rpm3.2使用pt-variable-advisor是pt工具集的一个子工具,主要用来诊断你的参数设置是否合理。[root@localhost~]#pt-variable-advisorlocalhost--socket/var/lib/mysql/mysql.sock3.3报表分析重点关注有WARN信息的条目,例如:4.pt-qurey-digestpt-query-digest主要功能是从日志、进程列表和tcpdump中分析MySQL查询。4.1安装详见3.1节。4.2使用pt-query-digest主要用于分析mysql的慢日志。与mysqldumpshow工具相比,py-query_digest工具的分析结果更加具体和完整。[root@localhost~]#pt-query-digest/var/lib/mysql/slowtest-slow.log4.3常见用法分析1)慢查询文件直接分析:pt-query-digest/var/lib/mysql/slowtest-slow.log>slow_report.log2)分析最近12小时内的查询:pt-query-digest--since=12h/var/lib/mysql/slowtest-slow.log>slow_report2.log3)分析指定时间段内的查询时间范围查询:pt-query-digest/var/lib/mysql/slowtest-slow.log--since'2017-01-0709:30:00'--until'2017-01-0710:00:00'>>slow_report3.log4)分析指包含select语句的慢查询:pt-query-digest--filter'$event->{fingerprint}=~m/^select/i'/var/lib/mysql/slowtest-慢的。log>slow_report4.log5)某个用户的慢查询:pt-query-digest--filter'($event->{user}||"")=~m/^root/i'/var/lib/mysql/slowtest-slow.log>slow_report5.log6)查询所有全表扫描或fulljoin慢查询:pt-query-digest--filter'(($event->{Full_scan}||"")eq"yes")||(($event->{Full_join}||"")eq"yes")'/var/lib/mysql/slowtest-slow.log>slow_report6.log4.4报告分析第1部分:总体统计结果总体:howmanyqueryintotaltimerange:查询执行的时间范围unique:不重复查询的个数,即查询条件参数化后,一共有howmanydifferentqueriestotal:totalmin:minimummax:maximumavg:average95%:把所有的值从小到大排列,95%处的数一般是最有参考价值的median:中位数,把所有的值从小到大排列,位置在数字中间。第二部分:查询分组统计Rank:所有语句的排名,默认按查询时间降序排列,指定QueryIDby--order-by:语句的ID,(去掉多余的空格和文本字符,计算hash值)Response:totalresponsetimetime:本次分析query的总时间比calls:执行次数,即本次分析有多少条该类型的query语句R/Call:每次执行的平均响应时间V/M:Variance-to-meanratioofresponsetimeItem:QueryobjectPart3:每次查询的详细统计结果ID:查询的ID号,与上图QueryID对应Databases:数据库名Users:编号oftimeseachuserexecutes(proportion)Query_timedistribution:查询时间分布,长度反映区间的比例Tables:查询涉及的表Explain:SQL语句