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

article/2025/6/22 4:28:31

目  录

一、优化手段

二、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.hkcw.cn/article/DEdnnBeTly.shtml

相关文章

VMware-workstation安装教程--超详细(附带安装包)附带安装CentOS系统教程

VMware-workstation安装教程--超详细(附带安装包)附带安装CentOS系统教程 一、下载软件VMwware二、下载需要的镜像三、在VMware上安装系统 一、下载软件VMwware 二、下载需要的镜像 三、在VMware上安装系统 VMware 被 Broadcom(博通&#x…

Flutter - 原生交互 - 相机Camera - 01

环境 Flutter 3.29 macOS Sequoia 15.4.1 Xcode 16.3 集成 Flutter提供了camera插件来拍照和录视频,它提供了一系列可用的相机,并使用特定的相机展示相机预览、拍照、录视频。 添加依赖 camera: 提供使用设备相机模块的工具path_provider: 寻找存储图…

HackMyVM-Art

信息搜集 主机发现 ┌──(kali㉿kali)-[~] └─$ nmap -sn 192.168.43.0/24 Starting Nmap 7.95 ( https://nmap.org ) at 2025-05-31 03:00 EDT Nmap scan report for 192.168.43.1 Host is up (0.0047s latency). MAC Address: C6:45:66:05:91:88 (Unknown) Nmap scan rep…

第304个Vulnhub靶场演练攻略:digital world.local:FALL

digital world.local:FALL Vulnhub 演练 FALL (digitalworld.local: FALL) 是 Donavan 为 Vulnhub 打造的一款中型机器。这款实验室非常适合经验丰富的 CTF 玩家,他们希望在这类环境中检验自己的技能。那么,让我们开始吧,看看如何…

使用 HTML + JavaScript 在高德地图上实现物流轨迹跟踪系统

在电商行业蓬勃发展的今天,物流信息查询已成为人们日常生活中的重要需求。本文将详细介绍如何基于高德地图 API 利用 HTML JavaScript 实现物流轨迹跟踪系统的开发。 效果演示 项目概述 本项目主要包含以下核心功能: 地图初始化与展示运单号查询功能…

HTML Day04

Day04 0.引言1. HTML字符实体2. HTML表单2.1 表单标签2.2 表单示例 3. HTML框架4. HTML颜色4.1 16进制表示法4.2 rgba表示法4.3 名称表达法 5. HTML脚本 0.引言 刚刚回顾了前面几篇博客,感觉写的内容倒是很详细,每个知识点都做了说明。但是感觉在知识组织…

命令行式本地与服务器互传文件

文章目录 1. 背景2. 传输方式2.1 SCP 协议传输2.2 SFTP 协议传输 命令行式本地与服务器互传文件 1. 背景 多设备协同工作中,因操作系统的不同,我们经常需要将另外一个系统中的文件传输到本地PC进行浏览、编译。多设备文件互传,在嵌入式开发中…

进程间通信III·System V 系列(linux)

目录 为什么有system V 共享内存 原理 操作 shmget 创建共享内存 shmctl 控制共享内存 shmat 挂接共享内存到进程的虚拟地址空间中 shmdt 将共享内存去关联 特点 模拟练习 Makefile client.cpp server.cpp main.hpp 小知识 为什么有system V linux是一种类unix系…

Kafka 如何保证顺序消费

在消息队列的应用场景中,保证消息的顺序消费对于一些业务至关重要,例如金融交易中的订单处理、电商系统的库存变更等。Kafka 作为高性能的分布式消息队列系统,通过巧妙的设计和配置,能够实现消息的顺序消费。接下来,我…

数据结构:栈(Stack)和堆(Heap)

目录 内存(Memory)基础 程序是如何利用主存的? 🎯 静态内存分配 vs 动态内存分配 栈(stack) 程序执行过程与栈帧变化 堆(Heap) 程序运行时的主存布局 内存(Memo…

数字权限管理(DRM):保护数字内容安全的小卫士

《数字权限管理(DRM):保护数字内容安全的小卫士》 在当今数字化飞速发展的时代,我们每天都在和各种各样的数字内容打交道,像电子书、音乐、电影、软件等等。然而,这些数字内容的版权保护和访问控制也成为了…

进程同步:生产者-消费者 题目

正确答案: 问题类型: 经典生产者 - 消费者问题 同时涉及同步和互斥。 同步:生产者与消费者通过信号量协调生产 / 消费节奏(如缓冲区满时生产者等待,空时消费者等待)。互斥:对共享缓冲区的访问需…

【第三十八周】BLIP-2:一种高效的视觉语言预训练框架

BLIP-2 摘要Abstract文章信息引言方法模型结构Stage1:表征学习Stage2:生成学习模型预训练 实验结果总结 摘要 本篇博客介绍了BLIP-2 ,这是一种面向通用多模态任务的高效视觉语言预训练框架,其核心思想是在冻结大语言模型的前提下,通过引入一…

算法打卡12天

19.链表相交 (力扣面试题 02.07. 链表相交) 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交**:** 题目数据…

Redis最佳实践——安全与稳定性保障之连接池管理详解

Redis 在电商应用的连接池管理全面详解 一、连接池核心原理与架构 1. 连接池工作模型 #mermaid-svg-G7I3ukCljlJZAXaA {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-G7I3ukCljlJZAXaA .error-icon{fill:#552222;}…

无人机+AI视频联网:精准狙击,让‘罪恶之花’无处藏身

引言:禁毒攻坚战,科技是关键 今天是2025年5,正值罂粟等毒株生长关键期。传统人工巡查耗时长、盲区多,而无人机巡检视频AI分析的智慧禁毒方案,正以“高空鹰眼地面AI”的立体化监控网络,实现毒株种植的早发现…

以太网原理与开发802.3

W5500以太网搭建 官方移植库W5500 下载地址:GitCode - 全球开发者的开源社区,开源代码托管平台目录结构Ethernet以太网移植文件文件wizchip_conf 配置 芯片型号 工作模式 wizchip_conf.c配置 临界区片选SPI收发字节配置 自定义注册SPI // 自定义注册SPI相关回调函数 void use…

day5 cpp:,对象的组织(const对象),

1.对象的组织(类比内置类型) const对象 const对象只能调用const成员函数和数据成员,除了四大金刚 若成员函数没有加const(void print() const{}),即便里面没有_ix100修改值,也不能pt2.print()访问,因为是const Point pt2(3,5)--->对象不…

C语言进阶--动态内存管理

学习数据结构重要的三个部分:指针、结构体、动态内存管理(malloc、calloc、realloc、free)。 1.为什么存在动态内存分配? 1.空间开辟大小是固定的; 2.数组在声明时,必须指定数组的长度,它所需…

Excel如何去除公式保留数值

我们有时候使用Excel在修改一部分数值的时候会导致和该数值相关的通过公式进行计算的数值发生变化,但有时我们不想改变这些数值,同样的有时我们在移动一些数值的时候会导致通过这些数值计算的数值变为#!VALUE,这是我们不想发生的,…