Mysql--基础知识点--86--慢查询

1 判断是不是网络、接口问题;
2 若不是网络接口问题,查看服务器性能cpu、内存、硬盘。若mysql的cpu很高则表示读写频率高,若网站的访问量又不高,则可能是(1)mysql参数问题;(2)linux系统参数;(3)mysql的sql语句查询慢的问题。
2.1 mysql参数的问题,采取措施:(i) 调整缓存池大小 (ii)调整连接数大小。
2.2 linux系统参数,采取措施:(i) 调整文件句柄数 (ii) 调整tcp连接TIMEWAIT状态相关参数;MySQL–基础知识点–55–MySQL优化中系统内核优化部分
2.3 mysql的sql语句查询慢问题,采取措施:(i) 使用show processlist; 查询当前活动连接,可以显现出谁在执行sql,以及正在执行的sql执行了多长时间。(ii) 使用慢查询日志查看慢查询sql [@1 查询慢查询日志三个相关参数:show variables like ‘query’; @2 三个慢查询日志参数:slow_query_time 慢查询时间阈值,超过这个时间的查询的查询语句会被记录到慢查询日志里;slow_query_log 是否打开慢查询,值为off/on;slow_query_log_file 慢查询日志的位置;@3 启用慢查询 set global slow_query_log=ON @4 摸拟一条慢查询 select * from edu_user where id=1 and sleep(60);] @4 mysqldumpslow 分析慢查询日志,访问最慢的sql、查询频次最高的sql等。(iii) explain分析慢查询sql执行任务,通过查看 EXPLAIN 的输出,你可以了解查询的性能瓶颈,并据此进行优化。例如,如果你发现查询没有使用索引,或者查询了过多的行,那么你可能需要重新考虑索引策略,或者修改查询以使其更高效。(iv)表结构优化:@1 没索引加索引; @2 有索引的对索引进行优化 (v) 查询语句的优化MySQL–基础知识点–55–MySQL优化中SQL优化部分
3 若以上都没问题,考虑数据量大的问题。措施:(i) 读写分离;(ii) 应用级别的缓存;(iii)分库分表分区。

补充:

mysqldumpslow是MySQL提供的一个命令行工具,主要用于分析MySQL的慢查询日志(slow query log)。以下是关于mysqldumpslow的详细介绍和使用方法:
 
一、基本用途
分析慢查询日志:从慢查询日志中提取信息,并以易读的方式展示最耗时的查询,以便进一步分析和优化。
提高性能:帮助开发人员和数据库管理员识别和优化数据库中的慢查询,提高系统的性能和响应时间。
二、使用方法
查看慢查询日志
在命令行中输入mysqldumpslow /path/to/slowquery.log,以查看整个慢查询日志文件中的所有慢查询。
排序选项
-s参数用于指定排序方式,可以按查询时间、锁等待时间、返回行数等进行排序。
-s t:按时间顺序(从最新到最旧)排序。
-s at:按查询时间长短排序,显示查询时间最长的慢查询。
-s al:按锁等待时间长短排序。
-s ar:按返回行数排序。
指定显示的记录数
-t NUM参数用于指定显示多少条慢查询记录。默认情况下,mysqldumpslow将显示前10条慢查询记录。
过滤特定的查询
使用-g PATTERN参数进行正则匹配,筛选出与特定模式相关的慢查询。
其他选项
-v:输出debug信息。
-d:指定输出排序规则,包括多种排序方式的组合。
-r:输出结果反序排序,默认是降序(desc)排序。
-a:不将数字抽象为N、字符抽象为S。
-n NUM:将超过N个数字的数值字符抽象显示。
-l:总时间包含锁定时间。
三、注意事项
在使用mysqldumpslow之前,需要确保MySQL的慢查询日志功能已经开启,并且慢查询日志文件存在且可读取。
mysqldumpslow工具通常与MySQL数据库服务器一起安装,无需单独安装。
虽然mysqldumpslow提供了基本的慢查询分析功能,但对于更复杂的性能问题,可能需要结合其他工具和方法进行综合分析和优化。
通过合理地使用mysqldumpslow工具,可以有效地识别和优化MySQL数据库中的慢查询,提高系统的整体性能和响应速度。

EXPLAIN 是 MySQL 中的一个关键字,用于分析 SQL 查询的执行计划。当你对查询性能有疑问,或者想知道 MySQL 是如何执行某个查询时,EXPLAIN 可以提供非常有价值的信息。
 
使用 EXPLAIN 的基本语法是:

EXPLAIN SELECT ... FROM ... WHERE ...;
eg: EXPLAIN SELECT * FROM users WHERE username = 'john_doe';

当你执行一个带有 EXPLAIN 的查询时,MySQL 不会实际执行这个查询,而是返回一个关于查询执行划的表格。这个表格包含了多个列,每个列都提供了关于查询执行的不同方面的信息。
想知道 MySQL 是如何执行某个查询时,EXPLAIN 可以提供非常有价值的信息。
 
以下是一些常见的 EXPLAIN 输出列及其描述:
想知道 MySQL 是如何执行某个查询时,EXPLAIN 可以提供非常有价值的信息。

  • id:查询标识符,每个 SELECT(和某些子查询)都会有一个唯一的 ID。
  • select_type:查询的类型(例如 SIMPLE、SUBQUERY、UNION 等)。
  • table:查询涉及的表。
  • type:连接类型(例如 ALL、index、range、ref、eq_ref、const 等),它告诉你 MySQL 如何连接表。ref 和 const 通常是好的,而 ALL 则可能表示性能问题。
  • possible_keys:查询可能使用的索引。
  • key:实际使用的索引(如果 MySQL 决定使用索引的话)。
  • key_len:使用的索引的长度。
  • ref:哪些列或常量被用作索引查找的引用。
  • rows:MySQL 估计需要检查的行数(注意,这只是一个估计值)。
  • Extra:包含 MySQL 解决查询的附加信息(例如使用了哪些文件排序、使用了临时表等)。
    想知道 MySQL 是如何执行某个查询时,EXPLAIN 可以提供非常有价值的信息。

 
通过查看 EXPLAIN 的输出,你可以了解查询的性能瓶颈,并据此进行优化。例如,如果你发现查询没有使用索引,或者查询了过多的行,那么你可能需要重新考虑索引策略,或者修改查询以使其更高效。

2.3.iv,@2

  • 最左前缀匹配原则,组合索引非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。
  • 较频繁作为查询条件的字段才去创建索引
    更新频繁字段不适合创建索引
  • 若是不能有效区分数据的列不适合做索引列(如性别,男女未知,最多也就三种,区分度实在太低)
  • 尽量的扩展索引,不要新建索引。比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可。
  • 定义有外键的数据列一定要建立索引。
  • 对于那些查询中很少涉及的列,重复值比较多的列不要建立索引。
  • 对于定义为text、image和bit的数据类型的列不要建立索引。最左前缀匹配原则,组合索引非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。
  • 较频繁作为查询条件的字段才去创建索引
  • 更新频繁字段不适合创建索引
  • 若是不能有效区分数据的列不适合做索引列(如性别,男女未知,最多也就三种,区分度实在太低)
  • 尽量的扩展索引,不要新建索引。比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可。
  • 定义有外键的数据列一定要建立索引。
  • 对于那些查询中很少涉及的列,重复值比较多的列不要建立索引。
  • 对于定义为text、image和bit的数据类型的列不要建立索引。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/28267.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

逢3必过报数游戏-第13届蓝桥杯省赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第84讲。 逢3必过报数游戏&…

c++_0基础_讲解7 练习

这一讲我为大家准备了几道题目&#xff0c;大家试着独自做一下&#xff08;可能来自不同网站&#xff09; 整数大小比较 - 洛谷 题目描述 输入两个整数&#xff0c;比较它们的大小。若 x>yx>y &#xff0c;输出 > &#xff1b;若 xyxy &#xff0c;输出 &#xff…

---异常---

我们在运行程序时总遇到各种与报错&#xff0c;数组越界&#xff0c;空指针的引用&#xff0c;这些在java中都称为异常 对于不同的错误都具有一个与他对应的异常类来秒描述 这是对于数组越界这个类里有的方法&#xff0c;这些是描述异常的 在java中有一个完整的描述异常的类的…

嵌入式数据库的一般架构

嵌入式数据库的架构与应用对象紧密相关&#xff0c;其架构是以内存、文件和网络等三种方式为主。 1.基于内存的数据库系统 基于内存的数据库系统中比较典型的产品是每个McObject公司的eXtremeDB嵌入式数据库&#xff0c;2013年3月推出5.0版&#xff0c;它采用内存数据结构&…

2024年黑龙江省特岗招聘公告出了!!!

2024年黑龙江省农村义务教育阶段学校特设岗位教师招聘822人公告 (1、网上报名 时间&#xff1a;6月17日9&#xff1a;00—6月22日17&#xff1a;00。 网址&#xff1a; https&#xff1a;//sfyz.hljea.org.cn&#xff1a;7006/tgjs 2、网上资格审查 资格审查时间&#xff1a;6月…

英语学习笔记36——Where ... ?

Where … ? ……在哪里&#xff1f; 词汇 Vocabulary beside prep. 在……旁边 同义词&#xff1a; near by 构成&#xff1a;be side side n. 边 搭配&#xff1a;side walk 人行道 例句&#xff1a;Bobby在我旁边。    Bobby is beside me. off prep. 离开&#xff…

C/C++中内存开辟与柔性数组

C/C中内存的开辟 在C中&#xff0c;我们都知道有三个区&#xff1a; 1. 栈区&#xff08;stack&#xff09;&#xff1a;在执行函数时&#xff0c;函数内局部变量的存储单元都可以在栈上创建&#xff0c;函数执行结 束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指…

使用itextPDF实现PDF电子公章工具类

一、制作公章 在线网站&#xff1a;印章生成器 - Kalvin在线工具 (kalvinbg.cn) 然后对公章进行下载保存 盖章图片&#xff1a; 二、生成数字签名 2.1&#xff1a; java工具keytool生成p12数字证书文件 Keytool是用于管理和证书的工具&#xff0c;位于%JAVA_HOME%/bin目录。…

代码随想录——组合总数Ⅲ(Leetcode216)

题目链接 回溯 class Solution {List<List<Integer>> res new ArrayList<List<Integer>>();List<Integer> list new ArrayList<Integer>();public List<List<Integer>> combinationSum3(int k, int n) {backtracking(k, …

揭秘最强气象武器的库,SPEI-Python不可思议之处.

spei-python是一个专门用于计算标准化降水蒸散指数&#xff08;Standardized Precipitation Evapotranspiration Index,SPEI&#xff09;的Python库.SPEI是一种综合考虑降水和潜在蒸散发的干旱指数,用于评估干旱的严重程度和持续时间. 安装 ## 可以使用 pip 来安装 spei-pyth…

【EtherCAT电机板】CiA402增加cst模式

在EtherCAT电机板上实现cst功能&#xff0c;在xml中增加cst相关pdo&#xff0c;在402程序增加cst模式。 1、XML配置修改 cst模式需要用到目标转矩和反馈实际转矩PDO&#xff0c;结合CiA402手册&#xff0c;这两个PDO对应的索引号分别为&#xff1a;0x6071&#xff08;Target t…

java框架技术xml文件存档

mybatis-config.xml <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration><settin…

Qt 实战(4)信号与槽 | 4.3、信号连接信号

文章目录 一、信号连接信号1、什么是信号连接信号&#xff1f;2、如何实现信号连接信号3、总结 前言&#xff1a; 在Qt框架中&#xff0c;信号与槽&#xff08;Signals and Slots&#xff09;机制是对象间通信的核心。通常情况下&#xff0c;我们习惯于将信号连接到槽函数上&am…

基于微信小程序的在线答题小程序设计与实现

个人介绍 hello hello~ &#xff0c;这里是 code袁~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的…

JavaFX VBox

VBox布局将子节点堆叠在垂直列中。新添加的子节点被放置在上一个子节点的下面。默认情况下&#xff0c;VBox尊重子节点的首选宽度和高度。 当父节点不可调整大小时&#xff0c;例如Group节点&#xff0c;最大垂直列的宽度基于具有最大优选宽度的节点。 默认情况下&#xff0c;…

Linux sftp服务搭建,新增账户

注意&#xff1a;操作前记得多开一个窗口用top挂起&#xff0c;修改失败可能会导致ssh再也连接不上! 1、创建用户&#xff0c;并且不允许登录 #创建用户&#xff0c;并且不允许登录 useradd -s /sbin/nologin pppsftp#设置密码 passwd pppsftp#设置用户不过期 chage -M -1 p…

分数布朗运动FBM期权定价模型

BS定价模型和蒙特卡洛模拟期权定价方法都 假设标的资产价格的对数服从布朗运动 &#xff0e; 但是实际 的金融市场中标的资产价格运动过程具有 “尖峰厚尾 ” 现象 &#xff0c; 运用分数布朗运动 &#xff08;FBM &#xff09;来刻画标的资产 价格的运动过程可能更加合适。 …

鸿蒙开发电话服务:【@ohos.telephony.radio (网络搜索)】

网络搜索 说明&#xff1a; 本模块首批接口从API version 6开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import radio from ohos.telephony.radioradio.getRadioTech getRadioTech(slotId: number, callback: AsyncCallback<{p…

【51单片机】从零学郭天祥10天入门学会51单片机

本文用于个人笔记。 一、单片机预备知识 1.1 电平特性 数字电路只有两种电平&#xff1a;高和低&#xff08;本课程中&#xff09;定义单片机为TTL电平 高&#xff1a;5V 低&#xff1a;0V RS232电平&#xff1a;计算机的串口 高&#xff1a;-12V …

单列集合顶层接口Collection及五类遍历方式(迭代器)

collection add方法细节&#xff1a; remove方法细节&#xff1a; contains方法细节&#xff1a; 如果集合中存储的是自定义对象, student之类的, 也想通过contains进行判断, 就必须在javaBean中重写equals方法 contains在arrayList中源代码&#xff1a;在底层调用了equals方…