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

相关文章

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

MySQL错误代码2058和2059的解决办法

《MySQL错误代码2058和2059的解决办法》:本文主要介绍MySQL错误代码2058和2059的解决办法,2058和2059的错误码核心都是你用的客户端工具和mysql版本的密码插件不匹配,... 目录1. 前置理解2.报错现象3.解决办法(敲重点!!!)1. php前置理解2058和2059的错误