MySQL强化关键_018_MySQL 优化手段及性能分析工具

news2025/7/21 13:43:16

目  录

一、优化手段

二、SQL 性能分析工具

1.查看数据库整体情况

(1)语法格式

(2)说明

2.慢查询日志 

(1)说明

(2)开启慢查询日志功能

(3)实例 

 3.show profiles

(1)语法格式

(2)实例

4.explain

(1)id

(2)select_type

(3)type

(4)possible_keys

(5)key

(6)key_len

(7)rows

(8)Extra


一、优化手段

        MySQL 优化手段包括但不限于:

  1. SQL 查询优化:成本最低,通过优化查询语句、适当添加索引等方式进行;
  2. 数据库表结构优化:通过规范化设计、优化索引和数据类型等方式进行库表结构优化,需要对数据库结构进行调整和改进;
  3. 系统配置优化:根据硬件和操作系统的特点,调整最大连接数、内存管理、IO调度等参数;
  4. 硬件优化:成本较高,升级硬盘、增加内存容量、升级处理器等硬件方面。

二、SQL 性能分析工具

1.查看数据库整体情况

(1)语法格式

show global status like 'Com_select';

show global status like 'Com_insert';

show global status like 'Com_update';

show global status like 'Com_delete';

show global status like 'Com_______';


(2)说明

  1. 这些结果反映了从 MySQL 服务器启动到当前时刻,所有 SQL 执行总数;
  2. 对于 MySQL 性能优化而言,通过查看【Com_select】的值可以了解 SELECT 查询在整个 MySQL 服务期间所占比例;
  3. 若【Com_select】值较高,表示该数据库是读密集型数据库;
  4. 若【Com_select】值较低,同时【Com_insert】、【Com_update】、【Com_delete】值较高,表示该数据库是写密集型数据库。

2.慢查询日志 

(1)说明

  1. 慢查询日志可以将查询较慢的 DQL 语句记录下来,便于定位调优位置;
  2. 慢查询日志默认关闭,修改 MySQL 安装根目录下的 my.ini 文件开启慢查询日志功能;
  3. 查看慢查询日志是否开启:【show variables like 'slow_query_log';】;


(2)开启慢查询日志功能

  1. 【slow_query_log=1】:表示开启慢查询日志功能;
  2. 【long_query_time=3】:表示只要 SELECT 语句执行耗时超过 3 秒就将其记录日志;
  3. 修改完 my.ini 需要重启 MySQL 服务;
  4. 慢查询日志默认存储在【[ MySQL 安装根目录下 ]\data\[ 计算机名称 ]-slow.log】;
  5. 查看计算机名称:在 dos 命令窗口输入【hostname】。

 


(3)实例 

# 为演示慢查询日志记录,先创建一个数据库表
drop table if exists test_log;

create table test_log(
    id int
);

# 插入数据
insert into test_log values
    (1), 
    (2);

# 借助 sleep 使查询时间超过设定值 3
select id, sleep(5) from test_log;

 


 3.show profiles

        可以查看一条 SQL 语句在执行过程中具体耗时情况。

(1)语法格式

# 查看当前数据库是否支持 profile 操作
select @@have_profiling;

# 查看 profiling 是否开启(Navicat for MySQL 默认开启)
select @@profiling;

# 开启 profiling
set profiling=1;

# 查看执行过所有语句耗时情况
show profiles;


(2)实例

select * from users;
select name from users;
select * from users where gender = '女';
show profiles;

# 查看具体每个阶段耗时情况(后加 id)
show profile for query 2;

# 查看整个执行过程中 cpu 占用情况
show profile cpu for query 2;


4.explain

        查看一个 DQL 语句的执行计划。

(1)id

        id 反映一条 DQL 语句执行顺序,id 越大优先级越高,id 相同则按照自上而下顺序执行。

explain select emp_name, dept_name from employees e join departments d on e.dept_no = d.dept_no where e.salary = (select salary from employees where emp_name = 'SMITH');


(2)select_type

  1. 反映查询语句的类型,其常用值包括:
    1. SIMPLE:表示查询中不包含子查询或 UNION 操作,这类查询通常是一个表或最多一个 JOIN 连接;
    2. PRIMARY:表示当前查询是一个主查询;
    3. SUBQUERY:表示当前查询是一个子查询;
    4. UNION:表示查询中包含 UNION 操作;
    5. DERIVED:表示派生表,即查询语句出现在 from 后。

(3)type

  1. 反映查询表中数据时的访问类型,其常用值包括:
    1. NULL:效率最高,一般不会优化到此级别,只有查询时没有查询表,访问类型才是 NULL;
    2. system:访问系统表,一般较难优化此级别;
    3. const:根据主键或唯一性索引查询,索引值是常量;
    4. eq_ref:根据主键或唯一性索引查询,索引值不是常量;
    5. ref:使用非唯一索引进行查询;
    6. range:使用了索引,扫描了索引树的一部分;
    7. index:使用了索引,遍历了整个索引树;
    8. ALL:全表扫描。
  2. 效率最高的是 NULL,效率最低的是 ALL。

(4)possible_keys

        此查询可能用到的索引。 


(5)key

        实际用到的索引。 


(6)key_len

        反映索引在查询中使用的列,所占的总字节数。 


(7)rows

        查询扫描的预估计行数。 


(8)Extra

        与查询相关的额外信息和说明。

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

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

相关文章

ASP.NET MVC添加模型示例

ASP.NET MVC高效构建Web应用ASP.NET MVC 我们总在谈“模型”,那到底什么是模型?简单说来,模型就是当我们使用软件去解决真实世界中各种实际问题的时候,对那些我们关心的实际事物的抽象和简化。比如,我们在软件系统中设…

【Part 3 Unity VR眼镜端播放器开发与优化】第二节|VR眼镜端的开发适配与交互设计

文章目录 《VR 360全景视频开发》专栏Part 3|Unity VR眼镜端播放器开发与优化第一节|基于Unity的360全景视频播放实现方案第二节|VR眼镜端的开发适配与交互设计一、Unity XR开发环境与设备适配1.1 启用XR Plugin Management1.2 配置OpenXR与平…

第1天:认识RNN及RNN初步实验(预测下一个数字)

RNN(循环神经网络) 是一种专门设计用来处理序列数据的人工神经网络。它的核心思想是能够“记住”之前处理过的信息,并将其用于当前的计算,这使得它非常适合处理具有时间顺序或上下文依赖关系的数据。 核心概念:循环连…

树莓派安装openwrt搭建软路由(ImmortalWrt固件方案)

🤣👉我这里准备了两个版本的openwrt安装方案给大家参考使用,分别是原版的OpenWrt固件以及在原版基础上进行改进的ImmortalWrt固件。推荐使用ImmortalWrt固件,当然如果想直接在原版上进行开发也可以,看个人选择。 &…

电子电气架构 --- 如何应对未来区域式电子电气(E/E)架构的挑战?

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

易学探索助手-个人记录(十二)

近期我完成了古籍处理板块页面升级,补充完成原文、句读、翻译的清空、保存和编辑(其中句读仅可修改标点)功能,新增原文和句读的繁简体切换功能 一、古籍处理板块整体页面升级 将原来一整个页面呈现的布局改为分栏呈现&#xff0…

Python窗体编程技术详解

文章目录 1. Tkinter简介示例代码优势劣势 2. PyQt/PySide简介示例代码(PyQt5)优势劣势 3. wxPython简介示例代码优势劣势 4. Kivy简介示例代码优势劣势 5. PySimpleGUI简介示例代码优势劣势 技术对比总结选择建议 Python提供了多种实现图形用户界面(GUI)编程的技术&#xff0c…

NVMe协议简介之AXI总线更新

更新AXI4总线知识 AXI4总线协议 AXI4总线协议是由ARM公司提出的一种片内总线协议 ,旨在实现SOC中各模块之间的高效可靠的数据传输和管理。AXI4协议具有高性能、高吞吐量和低延迟等优点,在SOC设计中被广泛应用 。随着时间的推移,AXI4的影响不…

设计模式——责任链设计模式(行为型)

摘要 责任链设计模式是一种行为型设计模式,旨在将请求的发送者与接收者解耦,通过多个处理器对象按链式结构依次处理请求,直到某个处理器处理为止。它包含抽象处理者、具体处理者和客户端等核心角色。该模式适用于多个对象可能处理请求的场景…

基于Android的医院陪诊预约系统

博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,没有什么华丽的语言&#xff0…

基于Spring Boot 电商书城平台系统设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…

【金融基础学习】债券回购方式

债券回购作为货币市场的重要工具,本质上是一种以债券为抵押的短期资金借贷行为。在银行间市场,质押式回购与**买断式回购*是两种主要形式。 1. 质押式回购(Pledged Repo, RP) – 所有权不转移的短期融资工具 1.1 质押式回购概述 质押式回购是交易双方…

第五十九节:性能优化-GPU加速 (CUDA 模块)

在计算机视觉领域,实时性往往是关键瓶颈。当传统CPU处理高分辨率视频流或复杂算法时,力不从心。本文将深入探索OpenCV的CUDA模块,揭示如何通过GPU并行计算实现数量级的性能飞跃。 一、GPU加速:计算机视觉的必由之路 CPU的强项在于复杂逻辑和低延迟任务,但面对图像处理中高…

单元测试-概述入门

目录 main方法测试缺点: 在pom.xm中,引入junit的依赖。,在test/java目录下,创建测试类,并编写对应的测试方法,并在方法上声明test注解。 练习:验证身份证合法性 测试成功 测试失败 main方法测试缺点&am…

⚡ Hyperlane —— 比 Rocket 更快的 Rust Web 框架!

⚡ Hyperlane —— 比 Rocket 更快的 Rust Web 框架! 在现代 Web 服务开发中,开发者需要一个既轻量级又高性能的 HTTP 服务器库来简化开发流程,同时确保服务的高效运行。Hyperlane 正是为此而生——一个专为 Rust 开发者设计的 HTTP 服务器库…

《AI Agent项目开发实战》DeepSeek R1模型蒸馏入门实战

一、模型蒸馏环境部署 注:本次实验仍然采用Ubuntu操作系统,基本配置如下: 需要注意的是,本次公开课以Qwen 1.5-instruct模型为例进行蒸馏,从而能省略冷启动SFT过程,并且 由于Qwen系列模型本身性能较强&…

字节golang后端二面

前端接口使用restful格式,post与get的区别是什么? HTTP网络返回的状态码有哪些? go语言切片与数组的区别是什么? MySQL实现并发安全避免两个事务同时对一个记录写操作的手段有哪些? 如何实现业务的幂等性(在…

vscode + cmake + ninja+ gcc 搭建MCU开发环境

vscode cmake ninja gcc 搭建MCU开发环境 文章目录 vscode cmake ninja gcc 搭建MCU开发环境1. 前言2. 工具安装及介绍2.1 gcc2.1.1 gcc 介绍2.1.2 gcc 下载及安装 2.2 ninja2.2.1 ninja 介绍2.2 ninja 安装 2.3 cmake2.3.1 cmake 介绍2.3.2 cmake 安装 2.4 VScode 3. 上手…

三种经典算法优化无线传感器网络(WSN)覆盖(SSA-WSN、PSO-WSN、GWO-WSN),MATLAB代码实现

三种经典算法优化无线传感器网络(WSN)覆盖(SSA-WSN、PSO-WSN、GWO-WSN),MATLAB代码实现 目录 三种经典算法优化无线传感器网络(WSN)覆盖(SSA-WSN、PSO-WSN、GWO-WSN),MATLAB代码实现效果一览基本介绍程序设…

JVM 核心组件深度解析:堆、方法区、执行引擎与本地方法接口

一、JVM 堆内存:对象的生存与消亡之地 作为 Java 虚拟机中最大的内存区域,堆内存是所有对象实例的 “出生地” 与 “安息所”。从程序运行的角度看,所有通过new关键字创建的对象都在堆中分配内存,其生命周期完全由垃圾回收机制&am…