mysql优化前情提要

2023-11-22 19:30
文章标签 mysql 优化 database 提要

本文主要是介绍mysql优化前情提要,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

mysql优化前情提要

  • 前情提要
  • 慢查询
  • 慢查询日志分析工具:
    • mysqldumpslow工具(mysql自带):
    • percona-toolkit工具(就比较专业了):
      • 使用pt-query-digest查看慢查询日志
  • 分析查询语句:

前情提要

如果mysql的性能或者语句执行时间没有达到你的预期,首先你得知道到底是哪条sql语句出了问题,不能把项目里面的sql全部手动走一次再返回来分析吧,这样从人力和时间上都不允许呦,所以,mysql自带了一些功能可以帮助我们定位问题!!!

慢查询

mysql开启慢查询日志:slow_query_log=ONlong_query_time=3 #查询时间多久以上slow_query_log_file=/var/lib/mysql/slow-log.log
查看mysql慢查询开启情况:show variables like '%slow_query%';
查看mysql慢查询时间阈值:show variables like 'long_query_time%';
注:慢查询日志包括被锁阻塞的时间--->Lock_time:~ 

慢查询日志分析工具:

mysqldumpslow工具(mysql自带):

例如:得到按照时间排序的前10条里面含有左连接的查询语句:
mysqldumpslow -s t -t 10 -g “left join” /var/log/mysql/slow.log(慢查询日志路径)

	-s:是表示按照何种方式排序 c:访问计数 l:锁定时间 r:返回记录 t:查询时间 al:平均锁定时间ar:平均返回记录数 at:平均查询时间-t:是top n的意思,即为返回前面多少条的数据-g:后边可以写一个正则匹配模式,大小写不敏感的

percona-toolkit工具(就比较专业了):

	下载安装:wget https://www.percona.com/downloads/percona-toolkit/3.0.11/binary/tarball/percona-toolkit-3.0.11_x86_64.tar.gztar -xf percona-toolkit-3.0.11_x86_64.tar.gzcd percona-toolkit-3.0.11perl Makefile.PLmakemake install
一般到这里就结束了,如果出现了错误,请继续Can't locate ExtUtils/MakeMaker.pm in @INC 错误的解决方式:yum install -y perl-ExtUtils-CBuilder perl-ExtUtils-MakeMakerCan't locate Time/HiRes.pm in @INC 错误的解决方式:yum install -y perl-Time-HiResCan't locate Digest/MD5.pm in @INC 错误的解决方式:yum install perl-Digest-MD5.x86_64

使用pt-query-digest查看慢查询日志

语句:pt-query-digest /var/lib/mysql/localhost-slow.logpt-query-digest语法及重要选项pt-query-digest [OPTIONS] [FILES] [DSN]--create-review-table 当使用--review参数把分析结果输出到表中时,如果没有表就自动创建。--create-history-table 当使用--history参数把分析结果输出到表中时,如果没有表就自动创建。--filter 对输入的慢查询按指定的字符串进行匹配过滤后再进行分析--limit  限制输出结果百分比或数量,默认值是20,即将最慢的20条语句输出,如果是50%则按总响应时间占比从大到小排序,输出到总和达到50%位置截止。--host mysql服务器地址--user mysql用户名--password mysql用户密码--history 将分析结果保存到表中,分析结果比较详细,下次再使用--history时,如果存在相同的语句,且查询所在的时间区间和历史表中的不同,则会记录到数据表中,可以通过查询同一CHECKSUM来比较某类型查询的历史变化。--review 将分析结果保存到表中,这个分析只是对查询条件进行参数化,一个类型的查询一条记录,比较简单。当下次使用--review时,如果存在相同的语句分析,就不会记录到数据表中。--output 分析结果输出类型,值可以是report(标准分析报告)、slowlog(Mysql slow log)、json、json-anon,一般使用report,以便于阅读。--since 从什么时间开始分析,值为字符串,可以是指定的某个”yyyy-mm-dd [hh:mm:ss]”格式的时间点,也可以是简单的一个时间值:s(秒)、h(小时)、m(分钟)、d(天),如12h就表示从12小时前开始统计。--until 截止时间,配合—since可以分析一段时间内的慢查询。

分析查询语句:

查看当前session是否开启profiling控制,默认是0 关闭状态select @@profiling;
开启profile功能set profiling=1; --1是开启、0是关闭
查看最近执行的sql语句以及执行时间show profiles;
查看最近一条的sql语句的执行详情(查询出来的字段,如果有一个值特别大,就按值分析)show profile;
定位一条sql语句的执行详情:show profile for query 序号;(此序号来源于show profiles;的Query_ID )

在这里插入图片描述

这篇关于mysql优化前情提要的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/412399

相关文章

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

Mysql实现范围分区表(新增、删除、重组、查看)

《Mysql实现范围分区表(新增、删除、重组、查看)》MySQL分区表的四种类型(范围、哈希、列表、键值),主要介绍了范围分区的创建、查询、添加、删除及重组织操作,具有一定的参考价值,感兴趣的可以了解... 目录一、mysql分区表分类二、范围分区(Range Partitioning1、新建分区表:2、分

MySQL 定时新增分区的实现示例

《MySQL定时新增分区的实现示例》本文主要介绍了通过存储过程和定时任务实现MySQL分区的自动创建,解决大数据量下手动维护的繁琐问题,具有一定的参考价值,感兴趣的可以了解一下... mysql创建好分区之后,有时候会需要自动创建分区。比如,一些表数据量非常大,有些数据是热点数据,按照日期分区MululbU

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

MySQL中查找重复值的实现

《MySQL中查找重复值的实现》查找重复值是一项常见需求,比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值,具有一定的参考价值,感兴趣的可以了解一下... 目录技术背景实现步骤方法一:使用GROUP BY和HAVING子句方法二:仅返回重复值方法三:返回完整记录方法四:

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满