SQL BOY 4 款脚本工具利器

2023-11-18

对于正在运行的mysql 性能如何?参数设置的是否合理?账号设置的是否存在安全隐患?

你是否了然于胸?

俗话说工欲善其事,必先利其器,定期对你的MYSQL数据库进行一个体检,是保证数据库安全运行的重要手段。

今天和大家分享几个mysql 优化的工具,你可以使用它们对你的mysql进行一个体检,生成awr报告,让你从整体上把握你的数据库的性能情况。

1、mysqltuner.pl

这是mysql一个常用的数据库性能诊断工具,主要检查参数设置的合理性包括日志文件、存储引擎、安全建议及性能分析。针对潜在的问题,给出改进的建议,是mysql优化的好帮手。

在上一版本中,MySQLTuner支持MySQL / MariaDB / Percona Server的约300个指标。

项目地址:https://github.com/major/MySQLTuner-perl

1.1 下载

 
  1. [root@localhost ~]#wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl

1.2 使用

 
  1. [root@localhost ~]# ./mysqltuner.pl --socket /var/lib/mysql/mysql.sock

  2. >> MySQLTuner1.7.4- MajorHayden<major@mhtx.net>

  3. >> Bug reports, feature requests, and downloads at http://mysqltuner.com/

  4. >> Runwith'--help'for additional options and output filtering

  5. [--] Skipped version check forMySQLTuner script

  6. Please enter your MySQL administrative login: root

  7. Please enter your MySQL administrative password: [OK] Currently running supported MySQL version 5.7.23

  8. [OK] Operating on 64-bit architecture

1.3、报告分析

1)重要关注[!!](中括号有叹号的项)例如[!!] Maximum possible memory usage: 4.8G (244.13% of installed RAM),表示内存已经严重用超了。

2)关注最后给的建议“Recommendations ”。

2、tuning-primer.sh

这是mysql的另一个优化工具,针于mysql的整体进行一个体检,对潜在的问题,给出优化的建议。

项目地址:https://github.com/BMDan/tuning-primer.sh

目前,支持检测和优化建议的内容如下:

2.1 下载

 
  1. [root@localhost ~]#wget https://launchpad.net/mysql-tuning-primer/trunk/1.6-r1/+download/tuning-primer.sh

2.2 使用

 
  1. [root@localhost ~]# [root@localhost dba]# ./tuning-primer.sh

  2. -- MYSQL PERFORMANCE TUNING PRIMER --

  3. - By: MatthewMontgomery-

2.3 报告分析

重点查看有红色告警的选项,根据建议结合自己系统的实际情况进行修改,例如:

3、pt-variable-advisor

pt-variable-advisor 可以分析MySQL变量并就可能出现的问题提出建议。

3.1 安装

https://www.percona.com/downloads/percona-toolkit/LATEST/

 
  1. [root@localhost ~]#wget https://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

  2. [root@localhost ~]#yum install percona-toolkit-3.0.13-1.el7.x86_64.rpm

3.2 使用

pt-variable-advisor是pt工具集的一个子工具,主要用来诊断你的参数设置是否合理。

 
  1. [root@localhost ~]# pt-variable-advisor localhost --socket /var/lib/mysql/mysql.sock

3.3 报告分析

重点关注有WARN的信息的条目,例如:

4、pt-qurey-digest

pt-query-digest 主要功能是从日志、进程列表和tcpdump分析MySQL查询。

4.1安装

具体参考3.1节

4.2使用

pt-query-digest主要用来分析mysql的慢日志,与mysqldumpshow工具相比,py-query_digest 工具的分析结果更具体,更完善。

 
  1. [root@localhost ~]# pt-query-digest /var/lib/mysql/slowtest-slow.log

4.3 常见用法分析

1)直接分析慢查询文件:

 
  1. pt-query-digest /var/lib/mysql/slowtest-slow.log > slow_report.log

2)分析最近12小时内的查询:

 
  1. pt-query-digest --since=12h/var/lib/mysql/slowtest-slow.log > slow_report2.log

3)分析指定时间范围内的查询:

 
  1. pt-query-digest /var/lib/mysql/slowtest-slow.log --since '2017-01-07 09:30:00'--until'2017-01-07 10:00:00'> > slow_report3.log

4)分析指含有select语句的慢查询

 
  1. pt-query-digest --filter '$event->{fingerprint} =~ m/^select/i'/var/lib/mysql/slowtest-slow.log> slow_report4.log

5)针对某个用户的慢查询

 
  1. pt-query-digest --filter '($event->{user} || "") =~ m/^root/i'/var/lib/mysql/slowtest-slow.log> slow_report5.log

6)查询所有所有的全表扫描或full join的慢查询

 
  1. pt-query-digest --filter '(($event->{Full_scan} || "") eq "yes") ||(($event->{Full_join} || "") eq "yes")'/var/lib/mysql/slowtest-slow.log> slow_report6.log

4.4 报告分析

  • 第一部分:总体统计结果 Overall:总共有多少条查询 Time range:查询执行的时间范围 unique:唯一查询数量,即对查询条件进行参数化以后,总共有多少个不同的查询 total:总计 min:最小 max:最大 avg:平均 95%:把所有值从小到大排列,位置位于95%的那个数,这个数一般最具有参考价值 median:中位数,把所有值从小到大排列,位置位于中间那个数

  • 第二部分:查询分组统计结果 Rank:所有语句的排名,默认按查询时间降序排列,通过--order-by指定 Query ID:语句的ID,(去掉多余空格和文本字符,计算hash值) Response:总的响应时间 time:该查询在本次分析中总的时间占比 calls:执行次数,即本次分析总共有多少条这种类型的查询语句 R/Call:平均每次执行的响应时间 V/M:响应时间Variance-to-mean的比率 Item:查询对象

  • 第三部分:每一种查询的详细统计结果 ID:查询的ID号,和上图的Query ID对应 Databases:数据库名 Users:各个用户执行的次数(占比) Query_time distribution :查询时间分布, 长短体现区间占比。Tables:查询中涉及到的表 Explain:SQL语句

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL BOY 4 款脚本工具利器 的相关文章

  • 如何在Sequelize中设置查询超时?

    我想看看如何在 Sequelize 中设置查询的超时时间 我查看了 Sequelize 文档以获取一些信息 但我找不到我要找的东西 我发现的最接近的是 pools acquire 选项 但我不想设置传入连接的超时 而是设置正在进行的查询的超
  • Mysql 中 UNION 子句的替代方案

    我有两张桌子 表 a 表 b table a ID 1 2 3 4 5 7 table b ID 2 3 4 5 6 我必须得到这样的输出而无需UNION命令 ID 1 2 3 4 5 6 7 注意 我有一个联合解决方案 select fr
  • 列中差异的数量

    我想检索一列每行中有多少个字母的差异 例如 如果您有一个值 test 而另一行有一个值 testing 则 test 和 testing 之间的差异为 4 个字母 该列的数据值为 4 I have reflected about it an
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 如何在 PostgreSQL 中使用具有多个值的 SQL LIKE 条件?

    有没有更短的方法来查找多个匹配项 SELECT from table WHERE column LIKE AAA OR column LIKE BBB OR column LIKE CCC 这个问题适用于 PostgreSQL 9 1 但如
  • 如何从 PostgreSQL 中的时间戳列值提取一天中的时间(或小时)?

    我正在尝试从 PostgreSQL 中的 时间戳 列中提取一天中的时间 这是我的做法 但是 太糟糕了 知道如何做得更好吗 SELECT date part hour date demande text hours date part min
  • 对多个数据库执行 SQL 查询

    我知道我的帖子与该论坛中的其他帖子的标题非常相似 但我真的找不到我需要的答案 这是我的问题 我的 Windows Server 上运行着 SQL Server 在我的 SQL Server 中 我有大约 30 个数据库 它们都具有相同的表和
  • Mysql 创建定义器

    我创建了一个在 CentOS Web 服务器上运行的 Intranet Web 应用程序 该应用程序使用另一个本地服务器 始终是 CentOS 作为 MySQL 数据库 在数据库内部我创建了例程 这些例程总是这样开始 CREATE DEFI
  • 比特纳米。重置mysql根密码

    我如何重置 MySQL 中的 root 密码和帐户 因为我按照如何为其他服务器授予权限的说明操作 并且意外地将 root 用户 Mysql 绑定到其他 IP 地址 现在看来我无法在 localhost 上以管理员身份登录 Thanks 您有
  • Mysql 将 int 转换为 MAC

    我有一些数据可以转换 其中有 2 列 其中一列有 IP 它包含整数值 我在 mysql 查询中使用了以下函数 是否有一个函数可以用来转换我的 mac 列 其中包含整数和数据类型是bigint to MAC地址 SELECT INET NTO
  • SELECT 语句会受到 SQL 注入攻击吗?

    实际上有2个问题 我知道我必须尽可能多地使用存储过程 但我想知道以下内容 A 我可以从 SELECT 语句 例如 Select from MyTable 获得 SQL 注入攻击吗 B 另外 当我在 ASP NET 中使用 SQLDataSo
  • PDO PHP 连接,致命错误

    我的连接类 firstcode php class DB functions public db function construct try db new PDO mysql localhost dbname xxx charset ut
  • 内连接不重复,可以吗?

    鉴于这两个表 表 A1 有两行具有相同的值 a A1 a a 表 A2 有两行主键值为 A B 它们与 a 关联 A2 PK col2 A a B a 我想要的是 A1 和 A2 的连接并得到这个结果 a A a B 显然内连接在这里不起作
  • 为表中的每个组选择前 N 行

    我面临一个非常常见的问题 即 为表中的每个组选择前 N 行 考虑一个表id name hair colour score列 我想要一个结果集 对于每种头发颜色 都能得到前 3 名得分手的名字 为了解决这个问题 我得到了我所需要的Rick O
  • 自加入表

    我有一张像这样的桌子 Employee name salary a 10000 b 20000 c 5000 d 40000 我想获取所有工资高于A工资的员工 我不想使用任何嵌套或子查询 在采访中被问及并暗示是使用自连接 我真的不知道如何实
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 一次从多个表中删除行

    我正在尝试将 2 个查询合并为一个这样的查询 result db gt query DELETE FROM menu WHERE name new or die db gt error result db gt query DELETE F
  • 使用间隔阈值对不同的连续时间戳记录进行分组

    我有一系列间歇性间隔的带有时间戳的 GPS 坐标 我正在使用 PostGIS 将它们渲染到地图画布上 为了渲染它们 需要使用 PostGIS 中的 ST MakeLine 聚合函数将点聚合成线 从而在地图上留下 GPS 数据丢失的间隙 数据
  • 如何修改现有表以添加时区

    我有一个包含 500 多个表的大型应用程序 我必须将应用程序转换为时区感知 当前应用程序使用new java util Date GETDATE 与服务器的时区 即没有任何时区支持 我已将这项任务分为几个步骤 以便于开发 我确定的第一个步骤
  • 在 Oracle 行的多个列上使用透视

    我在 Oracle 表中有以下示例数据 tab1 我正在尝试将行转换为列 我知道如何在某一列上使用 Oracle 数据透视表 但是否可以将其应用于多个列 样本数据 Type weight height A 50 10 A 60 12 B 4

随机推荐

  • 后端开发缓存篇之缓存及缓存模式的介绍

    一 什么是缓存 缓存 简单说就是为了节约对原始资源重复获取的开销 而将结果数据副本存放起来以供获取的方式 二 什么时候使用缓存 1 以 幂等和安全的方式对资源的获取操作 2 缓存数据必须是重复获取的 缓存能生效的本质是空间换时间 缓存的命中
  • Centos 7 升级Openssh7.4到9.2

    本次使用在线升级 因此要求系统yum wget等功能能正常使用 环境 cat etc redhat release CentOS Linux release 7 6 1810 Core ssh V OpenSSH 7 4p1 OpenSSL
  • wired xdisplay只能复制无法拓展

    我出现的问题是ipad可以复制屏幕 但是在系统显示设置中却没有显示有第二块屏幕 如果显示有第二块屏幕 直接win p调成拓展就可以解决了 如果出现的问题和我一样 可以按下面步骤解决 1 ipad和桌面端连接 2 PC端xDisplay 高级
  • 微软和Facebook推出Docs.com

    来源 德胜网 4月22日 据国外媒体报道 Facebook和微软在联手一项在线文件共享服务 看起来多一点像Google Docs 周三在Facebook的F8会议Docs com上线 该网站允许Facebook用户使用Facebook连接登
  • 2.虚拟机CentOS7.6安装SOA

    1 安装JDK8 1 1检查是否自带OpenJDK rpm qa grep jdk 卸载openjdk sudo yum y remove java openjdk 验证是否卸载了openjdk 1 2上传安装包 解压安装包 tar zxv
  • Seata源码分析——@GlobalTransactional

    Seata源码分析 GlobalTransactional 前言 脑图 Seata三大角色 GlobalTransactional 源码入口 GlobalTransactionScanner 初始化TM RM wrapIfNecessary
  • 软考:中级软件设计师:多媒体基础,音频,图像,颜色,多媒体技术的种类,图像音频视频的容量计算,常见的多媒体标准

    软考 中级软件设计师 多媒体基础 提示 系列被面试官问的问题 我自己当时不会 所以下来自己复盘一下 认真学习和总结 以应对未来更多的可能性 关于互联网大厂的笔试面试 都是需要细心准备的 1 自己的科研经历 科研内容 学习的相关领域知识 要熟
  • 第24讲 Python 复数数据类型详解(complex)

    您的 关注 和 点赞 是认可 是支持 是动力 如意见相佐 可留言 本人必将竭尽全力试图做到准确和全面 终其一生进行修改补充更新 本文首发在IT羊资源网 IT羊资源网 网址 https www ityangzy com IT羊资源网是IT世界
  • 我30岁了,转行学编程可以吗? 排除法告诉你答案 ...

    我30岁了 转行学编程可以吗 排除法告诉你答案 白月黑羽网站的读者在群里问过好几次 这个问题 但是这个问题太笼统了 其实不好回答 白月黑羽的这篇博客将根据的你的自身状况 不断的添加 自身条件的假设 采用排除法 认真的回答这个问题 既然有 转
  • ImageJ按照Little-Endian格式存储raw文件

    opencv图像处理是针对little endian数据 多帧堆叠情况下 否则结果错误 下面介绍如何用imageJ存储raw 参考 https imagej nih gov ij docs menus file html 1 在ImageJ
  • 毕设 STM32的FRID高速收费系统(源码+硬件+论文)

    文章目录 0 前言 1 主要功能 2 系统架构 3 硬件设计原理图 4 软件设计流程 称重模块HX711模块子流程 步进电机子流程 5 关键代码 6 最后 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和
  • Python库这么多,如何记住呢?

    大家不要着急去收藏Python库 了解python的一些常用库就可以了 具体学到什么方向可以找个项目直接做 过程中接触到什么库再去学 下面给大家介绍几种查找Python库的方法 一 查看官方文档 要知道有哪些 大家可以查看官方文档 比如常用
  • 关键字static的理解

    1 概念 像在VB C C C Java PHP Objective C JavaScript中我们可以看到static作为关键字和函数出现 在其他的高级计算机语言如FORTRAN ALGOL COBOL BASIC LISP SNOBOL
  • Kotlin - 文件类 File

    文件操作 遍历 walk 自上而下 深度优先 遍历整个文件夹 walkBottomUp 自下而上的顺序遍历文件目录和内容 walkTopDown 自上而下的顺序遍历文件目录和内容 名称 extension 文件名的后缀格式 不包含 例如 m
  • [激光原理与应用-45]:《焊接质量检测》-2- 常见焊接缺陷与检验方法

    目录 一 概述 二 焊接缺陷的分类 2 1 按产生原因 2 2 按性质分有 2 3 按在焊缝中的位置分有 三 焊接缺陷检验的常用方法 一 概述 对于一个金属结构来说 焊接检验就是对所有焊缝或焊接接头而言的 也就是对焊接缺陷的检验 但焊接接头
  • idea 编译成功启动失败

    环境 Windows10 IntelliJ IDEA 2021 2 3 Ultimate Edition Apache Maven 3 8 3 SpringBoot版本 2 1 13 RELEASE 问题描述 SpringBoot项目启动时
  • html输入浮点型,input框限定输入值为浮点型代码分享

    本文主要为大家带来一篇对于input 框限定输入值为浮点型的js代码 小编觉得挺不错的 现在就分享给大家 也给大家做个参考 一起跟随小编过来看看吧 希望能帮助到大家 在一些项目中 比如金额用到浮点型 对于input 限定可以参考以下 fun
  • 信创-大数据平台CPU架构支持

    一 CDH和HDP CDP CDP数据中心类似于CDH和HDP 直接安装在硬件服务器上 目前支持市面上主流的X86服务器 包括国内海光服务器 CDH不支持ARM 以上两种大数据平台都仅支持x86架构 早在几年期RedHat联手clouder
  • IntelliJ Idea 常用快捷键 列表(实战终极总结!!!!)

    自动代码 常用的有fori sout psvm Tab即可生成循环 System out main方法等boilerplate样板代码 例如要输入for User user users 只需输入user for Tab 再比如 要输入Dat
  • SQL BOY 4 款脚本工具利器

    对于正在运行的mysql 性能如何 参数设置的是否合理 账号设置的是否存在安全隐患 你是否了然于胸 俗话说工欲善其事 必先利其器 定期对你的MYSQL数据库进行一个体检 是保证数据库安全运行的重要手段 今天和大家分享几个mysql 优化的工