当Mysql缓慢时,这几招可解燃眉之急

news2024/11/28 6:39:41

第一步定位问题源:
常见的以查询Mysql性能问题的方法
1.大部分的性能问题都是查询过慢的问题,可以查询慢sql日志。
通过慢查询日志定位那些执行效率较低的SQL语句,用–log-slow-queries[= file_name]选项启动时,mysqld写一个包含所有执行时间超过long_query_time秒的SQL语句的日志文件。
long_query_time 可以在 my.cnf配置文件里设置
也可以直接设置 set global long_query_time=4

2.使用show processlist命令查看当前MySQL在进行的线程
包括线程的状态、是否锁表等,可以实时地查看 SQL 的执行情况,同时对一些锁表操作进行优化。
show processlist; 只列出前100条
show full processlist;列出全部线程情况
在这里插入图片描述

3.排查机器内存,磁盘,IO,网络是否资源不够

(1) linux 系统命令
(2)free 命令 显示系统内存使用情况
(3)vmstat 命令 看到整个机器的CPU,内存,IO的使用情况
(4)top 命令 实时显示各个进程的资源占用情况

二、性能优化
1.使用索引的优点
(1)没有合适的索引匹配查询导致查询慢,
(2)使用索引的优点、大大减少了服务器需要扫描的数量,
(3)索引可以帮助服务器避免排序和临时表
(4)索引可以帮助将随机I/O变为顺序I/O
2.索引的类型:
(1)普通索引,普通单列索引
(2)唯一索引,具有唯一约束,可以有多个null
(3)组合索引,多个建组成的索引,使用需要查询符合最左匹配原则。
(4)全文索引,和B-tree索引不会冲突,全文索引适用于MATCH AGAINST 操作,而不是普通的WHERE条件操作。
(5)哈希索引

3.查询语句是否语句的执行计划是否使用了合适的索引。

(1)使用explain关键字查看语句的执行计划
使用方法:explain 【查询语句】
在这里插入图片描述
key 列表示用到了那个索引。
rows列表示预计要扫描多少行。
一般来说扫描的行数越少速度越快。

(2)强制使用索引
use index 关键字 建议mysql使用索引,可以指定多个索引让mysql选择。

SELECT * FROM sys_user use index(id, idx_phone) WHERE phone = '123456';

ignore index 关键字 禁止mysql使用指定的索引,防止查询语句使用错误的索引,可指定多个索引。

SELECT * FROM sys_user ignore index(id, idx_email) WHERE phone = '123456';

force index 关键字 强制mysql使用指定索引进行查询。

SELECT * FROM sys_user force index(id, idx_email) WHERE phone = '123456';

4.索引如何挑选

(1)一般常用/高流量的查询条件上建索引。

(2)按照数据的区分度建索引。同样的在where条件中,区分度越高的列上建索引查询得更快。建立组合索引时,多个列将区分度高的列排前面。

(3)按照索引的功能建索引,如果字段有唯一性约束则建唯一索引。如果有多列是常用的筛选条件,那就用组合索引

5.索引失效的情况
(1)使用 or 关键字
(2)复合索引未用左列字段;
(3)like以%开头;
(4)需要类型转换;
(5)where中索引列有运算;
(6)where中索引列使用了函数;
(7)如果mysql觉得全表扫描更快时(数据少);

6.什么时候不建议用索引:
(1)唯一性差;
(2)频繁更新的字段不用(更新索引消耗);
(3)where中不用的字段;
(4)索引使用<>时,效果一般;

7.查询优化
优化数据访问
简单衡量查询开销的三个指标:
*响应时间
*扫描行数
*返回行数

(1)确认应用程序是否检索的太多不必要的数据,减少应用程序访问行和访问列。

(2)检查多表join in 时,是否返回了全部的列,只返回需要的列即可。

(3)使用合适索引减少扫描的行数。

(4)使用覆盖索引,避免回表查询。

(5)order by 排序操作和 group by 分组操作尽量使用索引,避免生成临时表和文件排序。

8.DML性能问题*
(1)避免死锁产生。
(2)分析语句在事务中将含有锁竞争的语句放到后面去执行。
(3)能用普通索引的就不用唯一索引,唯一索引用不上 change buffer 的优化机制。

9.数据库参数的优化:
(1)尽量把表字段设置为 not null,避免影响mysql的优化
(2)innodb_buffer_pool_size:调整InnoDB存储引擎的缓存池大小。

三、紧急情况下kill掉异常线程,保证mysql整体可用。

在使用mysql时,可能会发生死锁、应用端没有释放连接、大量的慢查询,占用大量数据库连接,导致mysql连接数不够,无法对外提供服务,处于不可用的状态,这时要kill掉那些异常连接保证数据库整体可用。

KILL命令的语法格式如下:
KILL [CONNECTION | QUERY] thread_id

批量kill 慢查询的方式
select concat(‘kill ‘, id,’;’) from information_schema.processlist where time > 3;

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

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

相关文章

售后退换货客服话术

在客服的工作生涯里&#xff0c;售后退换货这种问题&#xff0c;对于我们客服来说可以说是见惯不惯了。今天小编给大家准备了一些退换货的售后回复话术&#xff0c;让大家工作起来更加高效。 一、引导退换货 1.亲&#xff0c;麻烦您收到后请先试穿&#xff0c;请一定要保持衣服…

WordPress入门版,保姆级记录

服务器里用户越近&#xff0c;访问速度越快&#xff0c;所以需要根据用户群体选择合适的服务器 国外网站&#xff1a;SiteGround国内网站&#xff1a;阿里云 bidewang.co/sg WordPress托管服务器页面&#xff0c;一般选择第二个套餐 没有域名则选择购买域名 然后填选购买信息…

007-从零搭建微服务-网关中心(一)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff1a;https://gitee.com/csps/mingyue 文档地址&#xff1a;https://gitee.com/csps/mingyue/wikis 新建 mingyue-gateway 在 【从零搭建微服务…

练习SpringBoot烘培坊项目

烘培坊项目 文章目录 烘培坊项目项目概述项目搭建项目关键代码实现实现首页轮播图实现注册功能实现登录功能实现图片上传稿件管理页面内容列表功能稿件管理页面修改功能稿件管理页面删除功能首页三个类型下的分类展示首页三种类型的内容展示点击查看更多进入列表页面在header里…

mysql waf绕过-WAF Bypass技巧(2)

数据库waf绕过的一些玩法 WAF Bypass技巧(0)_luozhonghua2000的博客-CSDN博客 WAF绕过-WAF Bypass技巧(1)_luozhonghua2000的博客-CSDN博客 数据库特性 第一篇: Mysql数据库特性 0x01 前言 我们经常利用一些数据库特性来进行WAF绕过。在Mysgl中,比如可以这样 位置一: 参数和…

泰坦尼克号幸存者预测

本文所有的代码及数据均存放与https://github.com/MADMAX110/Titanic 泰坦尼克号幸存者预测挑战赛是一个非常受欢迎的机器学习实践项目。这是 Kaggle.com 上最受欢迎的比赛之一。 数据中有3个文件:train.csv&#xff0c;test.csv&#xff0c;和gender_submit .csv。 train.csv包…

内存碎片:理解、应用场景和防止措施

目录 摘要1. 引言2. 内存碎片的概念3. 内存碎片的产生原因4. 应用场景4.1 应用场景一&#xff1a;长时间运行的服务器4.2 应用场景二&#xff1a;嵌入式系统 5. 预防和处理内存碎片6. 示例代码&#xff1a;生成内存碎片7. 总结 摘要 本文旨在向初学者详细介绍内存碎片的概念、…

【爬虫】4.1 Scrapy 框架爬虫简介

目录 1. Scrapy 框架介绍 2. 建立 Scrapy 项目 3. 入口函数与入口地址 4. Python 的 yield 语句 5. Scrapy 爬虫的数据类型 1. Scrapy 框架介绍 1.1 Scrapy 的安装 pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple/ 1.2 Scrapy爬虫框架结构 “52”结构&…

「HTML和CSS入门指南」table 标签详解

什么是 table 标签? 在 HTML 中,table 标签用于创建表格。使用 table 标签可以帮助您以可视化和结构化的方式呈现数据。 table 标签的基本语法 以下是 table 标签的基本语法: <table><tr><th>姓名</th><th>年龄</th><th>性别&l…

chatgpt赋能python:Python如何辨别非数字符号

Python如何辨别非数字符号 在进行数据处理或者字符串操作时&#xff0c;经常会遇到需要识别和处理非数字符号的情况&#xff0c;如何在Python中进行辨别呢&#xff1f; 什么是非数字符号 非数字符号是指数字以外的字符&#xff0c;包括但不限于以下类型&#xff1a; 字母&a…

Drools 规则引擎原理

目录 Drools规则引擎基本定义介绍优劣优点缺点 基本概念规则引擎构成 规则结构规则引擎执行过程规则存储Kie 介绍Kie 相关组件知识库规则引擎与知识库Drools 存储规则的数据结构 Rete 算法原理优缺点优点缺点 举例 前向和后向链推理机制前向链后向链对比 应用场景概念和特点架构…

MMPretrain

title: mmpretrain实战 date: 2023-06-07 16:04:01 tags: [image classification,mmlab] mmpretrain实战 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ccTl9bOl-1686129437336)(null)] 主要讲解了安装,还有使用教程.安装教程直接参考官网.下面讲…

【mmpose】从openmmlab官方文档看mmpose架构设计,模块组成,快速上手实现关键点检测效果(动物,人体,手部等)

MMPOSE 架构设计 MMPose 1.0 与之前的版本有较大改动&#xff0c;对部分模块进行了重新设计和组织&#xff0c;降低代码冗余度&#xff0c;提升运行效率&#xff0c;降低学习难度。使用 MMPose 1.0 时开发者会关心的内容&#xff1a; 整体代码架构与设计逻辑&#xff1b; 如何…

告别加班!9款Figma汉化插件助你高效工作,提升生产力!

Figma是一款极受设计师欢迎的设计工具&#xff0c;而Figma中文版即时设计则是在Figma基础上改进而来&#xff0c;有着众多的Figma汉化插件&#xff0c;可以加速设计工作&#xff0c;让每位设计师完成更好的创作。 打开即时设计官网首页&#xff0c;点击【设计社区】-【插件广场…

虚函数表详解及其应用场景

目录 概述1. 虚函数表概述2. 虚函数表的实现原理2.1. 虚函数的声明和定义2.2. 虚函数表的创建和初始化2.3. 虚函数调用的过程 3. 虚函数表的应用场景3.1. 多态性3.2. 基类指针和引用的使用3.3. 动态绑定3.4. 接口定义 结论 概述 在面向对象编程中&#xff0c;虚函数表&#xf…

java-JDBC

java-JDBC 1. JDBC概念 JDBC 就是使用Java语言操作关系型数据库的一套API 全称&#xff1a;( Java DataBase Connectivity ) Java 数据库连接 sun公司就指定了一套标准接口&#xff08;JDBC&#xff09;&#xff0c;JDBC中定义了所有操作关系型数据库的规则。 我们需要使用接口…

人群聚集监测预警算法 python

人群聚集监测预警系统采用pythonopencv网络模型AI视频智能分析技术&#xff0c;人群聚集监测预警算法对人员聚集情况进行实时监测&#xff0c;当人群聚集过于密集时&#xff0c;系统将自动发出警报。OpenCV基于C实现&#xff0c;同时提供python, Ruby, Matlab等语言的接口。Ope…

R语言 tidyverse系列学习笔记(系列1)

tidyverse 译 “洁净的宇宙” > “极乐净土” 以 iris 鸢尾花数据集为例 ** 查看数据集** ** 查看维度dimention** dim(iris)iris 数据集有150个对象&#xff08;observation&#xff09;&#xff0c;5列 ( Sepal.Length , Sepal.Width , Petal.Length , Petal.Width , S…

阿里服务器配置服务器自启动

一开始 是在 /etc/rc.local 文件中添加的如下脚本 bash /mnt/cangjie-server/action.sh start bash /usr/local/nginx/sbin/nginx pm2 start npm--name"cangjieWeb"run start 启动服务器&#xff0c;服务并没有执行。 后面把执行脚本的 bash 指令去掉 如下&#xf…

Linux内核中断和Linux内核定时器

目录 Linux内核中断 Linux内核定时器 Linux内核中断 int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,const char *name, void *dev) 功能&#xff1a;注册中断 参数&#xff1a; irq : 软中断号 gpio的软中断号 软中断号 gpio_to_i…