MySQL5.7 慢查询SQL语句集合

文章目录

    • 1. 按平均执行时间排序的慢查询
    • 2. 按总执行时长排序的慢查询
    • 3. MySQL 5.7 慢查询配置检查
    • 4. 扫描行数分析(找出全表扫描)
    • 5. 高频执行的慢查询
    • 6. 当前正在执行的查询
    • 7. 慢查询统计汇总
    • 8. 表结构和索引分析
      • 8.1 表索引详情查询
      • 8.2 表大小统计

1. 按平均执行时间排序的慢查询

SELECT SCHEMA_NAME as '数据库名',LEFT(DIGEST_TEXT, 150) as 'SQL语句摘要',COUNT_STAR as '执行次数',ROUND(AVG_TIMER_WAIT/1000000000000, 4) as '平均执行时间(秒)',ROUND(SUM_TIMER_WAIT/1000000000000, 4) as '总执行时间(秒)',ROUND(MAX_TIMER_WAIT/1000000000000, 4) as '最大执行时间(秒)',ROUND(MIN_TIMER_WAIT/1000000000000, 4) as '最小执行时间(秒)',CASE WHEN COUNT_STAR > 0 THEN ROUND(SUM_ROWS_EXAMINED/COUNT_STAR, 0)ELSE 0 END as '平均扫描行数',CASE WHEN COUNT_STAR > 0 THEN ROUND(SUM_ROWS_SENT/COUNT_STAR, 0)ELSE 0 END as '平均返回行数',FIRST_SEEN as '首次出现',LAST_SEEN as '最后出现'
FROM performance_schema.events_statements_summary_by_digest 
WHERE SCHEMA_NAME IS NOT NULL AND SCHEMA_NAME NOT IN ('information_schema', 'performance_schema', 'mysql', 'sys')AND DIGEST_TEXT IS NOT NULLAND COUNT_STAR > 0AND AVG_TIMER_WAIT > 1000000000  -- 平均执行时间超过1毫秒
ORDER BY AVG_TIMER_WAIT DESC
LIMIT 20;

2. 按总执行时长排序的慢查询

SELECT SCHEMA_NAME as '数据库名',LEFT(DIGEST_TEXT, 120) as 'SQL语句摘要',COUNT_STAR as '执行次数',ROUND(AVG_TIMER_WAIT/1000000000000, 4) as '平均执行时间(秒)',ROUND(SUM_TIMER_WAIT/1000000000000, 4) as '总执行时间(秒)',ROUND(MAX_TIMER_WAIT/1000000000000, 4) as '最大执行时间(秒)',CASE WHEN COUNT_STAR > 0 THEN ROUND(SUM_ROWS_EXAMINED/COUNT_STAR, 0)ELSE 0 END as '平均扫描行数',-- MySQL 5.7 不支持窗口函数,使用子查询计算比例ROUND((SUM_TIMER_WAIT / (SELECT SUM(SUM_TIMER_WAIT) FROM performance_schema.events_statements_summary_by_digest WHERE SCHEMA_NAME IS NOT NULL AND SCHEMA_NAME NOT IN ('information_schema', 'performance_schema', 'mysql', 'sys'))) * 100, 2) as '占总时间比例(%)'
FROM performance_schema.events_statements_summary_by_digest 
WHERE SCHEMA_NAME IS NOT NULL AND SCHEMA_NAME NOT IN ('information_schema', 'performance_schema', 'mysql', 'sys')AND DIGEST_TEXT IS NOT NULLAND COUNT_STAR > 0AND SUM_TIMER_WAIT > 5000000000000  -- 总执行时间超过5秒
ORDER BY SUM_TIMER_WAIT DESC
LIMIT 20;

3. MySQL 5.7 慢查询配置检查

-- 查看慢查询相关配置
SHOW VARIABLES LIKE '%slow%';-- 查看慢查询时间阈值
SHOW VARIABLES LIKE 'long_query_time';-- 查看performance_schema配置状态
SHOW VARIABLES LIKE 'performance_schema';-- 检查performance_schema相关表是否启用
SELECT TABLE_NAME, ENABLED 
FROM performance_schema.setup_instruments 
WHERE NAME LIKE '%statement%' AND NAME LIKE '%sql%';-- 检查consumers是否启用
SELECT NAME, ENABLED 
FROM performance_schema.setup_consumers 
WHERE NAME LIKE '%statements%';

4. 扫描行数分析(找出全表扫描)

SELECT SCHEMA_NAME as '数据库名',LEFT(DIGEST_TEXT, 100) as 'SQL语句摘要',COUNT_STAR as '执行次数',ROUND(AVG_TIMER_WAIT/1000000000000, 4) as '平均执行时间(秒)',SUM_ROWS_EXAMINED as '总扫描行数',CASE WHEN COUNT_STAR > 0 THEN ROUND(SUM_ROWS_EXAMINED/COUNT_STAR, 0)ELSE 0 END as '平均扫描行数',SUM_ROWS_SENT as '总返回行数',CASE WHEN SUM_ROWS_EXAMINED > 0 THEN ROUND(SUM_ROWS_SENT/SUM_ROWS_EXAMINED*100, 2)ELSE 0 END as '扫描效率(%)',CASE WHEN SUM_ROWS_SENT > 0 THEN ROUND(SUM_ROWS_EXAMINED/SUM_ROWS_SENT, 0)ELSE SUM_ROWS_EXAMINED END as '扫描/返回比例'
FROM performance_schema.events_statements_summary_by_digest 
WHERE SCHEMA_NAME IS NOT NULL AND SCHEMA_NAME NOT IN ('information_schema', 'performance_schema', 'mysql', 'sys')AND DIGEST_TEXT IS NOT NULLAND COUNT_STAR > 0AND SUM_ROWS_EXAMINED > 100000  -- 扫描行数超过10万
ORDER BY SUM_ROWS_EXAMINED DESC
LIMIT 15;

5. 高频执行的慢查询

SELECT SCHEMA_NAME as '数据库名',LEFT(DIGEST_TEXT, 120) as 'SQL语句摘要',COUNT_STAR as '执行次数',ROUND(AVG_TIMER_WAIT/1000000000000, 4) as '平均执行时间(秒)',ROUND(SUM_TIMER_WAIT/1000000000000, 4) as '总执行时间(秒)',ROUND(AVG_TIMER_WAIT/1000000, 2) as '平均执行时间(毫秒)',CASE WHEN COUNT_STAR > 0 THEN ROUND(SUM_ROWS_EXAMINED/COUNT_STAR, 0)ELSE 0 END as '平均扫描行数',DATE(FIRST_SEEN) as '首次出现日期',DATE(LAST_SEEN) as '最后出现日期',TIMESTAMPDIFF(DAY, FIRST_SEEN, LAST_SEEN) as '持续天数'
FROM performance_schema.events_statements_summary_by_digest 
WHERE SCHEMA_NAME IS NOT NULL AND SCHEMA_NAME NOT IN ('information_schema', 'performance_schema', 'mysql', 'sys')AND DIGEST_TEXT IS NOT NULLAND COUNT_STAR > 1000  -- 执行次数超过1000次AND AVG_TIMER_WAIT > 100000000  -- 平均执行时间超过100毫秒
ORDER BY COUNT_STAR DESC, AVG_TIMER_WAIT DESC
LIMIT 15;

6. 当前正在执行的查询

SELECT p.ID as '进程ID',p.USER as '用户',p.HOST as '主机',p.DB as '数据库',p.COMMAND as '命令类型',p.TIME as '执行时间(秒)',p.STATE as '状态',LEFT(IFNULL(p.INFO, ''), 200) as 'SQL语句',CASE WHEN p.TIME > 60 THEN '极慢'WHEN p.TIME > 10 THEN '慢'WHEN p.TIME > 1 THEN '一般'ELSE '正常'END as '性能等级'
FROM information_schema.PROCESSLIST p
WHERE p.COMMAND != 'Sleep'AND p.TIME > 1  -- 执行时间超过1秒AND p.ID != CONNECTION_ID()  -- 排除当前连接
ORDER BY p.TIME DESC;

7. 慢查询统计汇总

SELECT '指标类型' as metric_type,'数值' as metric_value,'单位' as unit
FROM (SELECT 1 as dummy) t
WHERE 1=0  -- 创建表头UNION ALLSELECT '总查询类型数',CAST(COUNT(*) as CHAR),'个'
FROM performance_schema.events_statements_summary_by_digest 
WHERE SCHEMA_NAME IS NOT NULL AND SCHEMA_NAME NOT IN ('information_schema', 'performance_schema', 'mysql', 'sys')UNION ALLSELECT '慢查询类型数(>1秒)',CAST(COUNT(*) as CHAR),'个'
FROM performance_schema.events_statements_summary_by_digest 
WHERE SCHEMA_NAME IS NOT NULL AND SCHEMA_NAME NOT IN ('information_schema', 'performance_schema', 'mysql', 'sys')AND AVG_TIMER_WAIT > 1000000000000UNION ALLSELECT '极慢查询类型数(>10秒)',CAST(COUNT(*) as CHAR),'个'
FROM performance_schema.events_statements_summary_by_digest 
WHERE SCHEMA_NAME IS NOT NULL AND SCHEMA_NAME NOT IN ('information_schema', 'performance_schema', 'mysql', 'sys')AND AVG_TIMER_WAIT > 10000000000000UNION ALLSELECT '总执行次数',CAST(SUM(COUNT_STAR) as CHAR),'次'
FROM performance_schema.events_statements_summary_by_digest 
WHERE SCHEMA_NAME IS NOT NULL AND SCHEMA_NAME NOT IN ('information_schema', 'performance_schema', 'mysql', 'sys')UNION ALLSELECT '总执行时间',CAST(ROUND(SUM(SUM_TIMER_WAIT)/1000000000000/3600, 2) as CHAR),'小时'
FROM performance_schema.events_statements_summary_by_digest 
WHERE SCHEMA_NAME IS NOT NULL AND SCHEMA_NAME NOT IN ('information_schema', 'performance_schema', 'mysql', 'sys');

8. 表结构和索引分析

8.1 表索引详情查询

SELECT s.TABLE_SCHEMA as '数据库',s.TABLE_NAME as '表名',s.INDEX_NAME as '索引名',s.COLUMN_NAME as '列名',s.SEQ_IN_INDEX as '索引位置',s.CARDINALITY as '基数',s.NULLABLE as '可为空',CASE s.INDEX_TYPEWHEN 'BTREE' THEN 'B树索引'WHEN 'HASH' THEN '哈希索引'WHEN 'FULLTEXT' THEN '全文索引'ELSE s.INDEX_TYPEEND as '索引类型',CASE WHEN s.INDEX_NAME = 'PRIMARY' THEN '主键'WHEN s.NON_UNIQUE = 0 THEN '唯一索引'ELSE '普通索引'END as '索引分类'
FROM information_schema.STATISTICS s
WHERE s.TABLE_SCHEMA NOT IN ('information_schema', 'performance_schema', 'mysql', 'sys')
ORDER BY s.TABLE_SCHEMA, s.TABLE_NAME, s.INDEX_NAME, s.SEQ_IN_INDEX;

8.2 表大小统计

SELECT t.TABLE_SCHEMA as '数据库',t.TABLE_NAME as '表名',t.ENGINE as '存储引擎',IFNULL(t.TABLE_ROWS, 0) as '估算行数',ROUND(IFNULL(t.DATA_LENGTH, 0)/1024/1024, 2) as '数据大小(MB)',ROUND(IFNULL(t.INDEX_LENGTH, 0)/1024/1024, 2) as '索引大小(MB)',ROUND((IFNULL(t.DATA_LENGTH, 0) + IFNULL(t.INDEX_LENGTH, 0))/1024/1024, 2) as '总大小(MB)',t.AUTO_INCREMENT as '自增值',t.CREATE_TIME as '创建时间',t.UPDATE_TIME as '更新时间'
FROM information_schema.TABLES t
WHERE t.TABLE_SCHEMA NOT IN ('information_schema', 'performance_schema', 'mysql', 'sys')AND t.TABLE_TYPE = 'BASE TABLE'
ORDER BY (IFNULL(t.DATA_LENGTH, 0) + IFNULL(t.INDEX_LENGTH, 0)) DESC
LIMIT 20;

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

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

相关文章

MySQL学习(1)——基础库操作

欢迎来到博主的专栏:MySQL学习 博主ID:代码小豪 文章目录 数据库原理基础库操作增删数据库数据库编码与校验规则验证不同的校验规则对于库中数据的影响 备份与恢复数据库 数据库原理 mysql版本:mysql8.0 操作系统:ubuntu22.4 为了减少由于环境配置以及权限限制带来的使用问题&…

C++法则12:右值引用的核心目的:支持移动语义(Move Semantics)

C法则12:右值引用的核心目的:支持移动语义(Move Semantics) 右值引用(Rvalue Reference)是C11引入的最重要特性之一,其主要设计目的就是支持移动语义(Move Semantics)。 …

【LLM学习笔记4】使用LangChain开发应用程序(上)

目录 前言一、模型、提示和解析器(model、prompt、parsers)二、储存三、模型链四、基于文档的问答1.使用向量存储查询2. 结合表征模型和向量存储使用检索问答链回答问题 前言 在前面两部分,我们分别学习了大语言模型的基础使用准则&#xff…

Negative Contrastive Estimation Negative Sampling

1. 基本概念与问题背景 1.1 大规模分类问题 在自然语言处理中,给定上下文 c c c预测单词 w w w的条件概率为: P ( w ∣ c ) exp ⁡ ( s θ ( w , c ) ) ∑ w ′ ∈ V exp ⁡ ( s θ ( w ′ , c ) ) P(w|c) \frac{\exp(s_\theta(w,c))}{\sum_{w\in V…

Flink SQL Connector Kafka 核心参数全解析与实战指南

Flink SQL Connector Kafka 是连接Flink SQL与Kafka的核心组件,通过将Kafka主题抽象为表结构,允许用户使用标准SQL语句完成数据读写操作。本文基于Apache Flink官方文档(2.0版本),系统梳理从表定义、参数配置到实战调优…

vscode内嵌浏览器实时预览vue项目

安装插件 web Preview 启动vue项目 打开预览 ctrl shift p 之后输入并选择 Open Web Preview 即可看到预览窗口,但此时明明我的页面是有内容的,但是窗口却空白的。 因为默认访问端口是3000,我们将其修改为vue项目默认的5173端口即可。 点…

计算机网络:(四)物理层的基本概念,数据通信的基础知识,物理层下面的传输媒体

计算机网络:(四)物理层的基本概念,数据通信的基础知识,物理层下面的传输媒体 前言一、物理层的基本概念1. 什么是物理层2. 物理层的核心使命3. 物理层的四大特性 二、数据通信的基础知识1. 数据通信系统的基本模型1.1 …

Linux系统性能优化

目录 Linux系统性能优化 一、性能优化概述 二、性能监控工具 1. 基础工具 2. 高级工具 三、子系统优化策略 1. CPU优化 2. 内存优化 3. 磁盘I/O优化 4. 网络优化 四、资源限制优化 1. ulimit 2. cgroups(控制组) 五、安全与注意事项 六、…

【streamlit streamlit中 显示 mermaid 流程图有两种方式】

streamlit中显示mermaid 流程图有两种方式 mermaind示例 code """ flowchart LRmarkdown["This **is** _Markdown_"]newLines["Line1Line 2Line 3"]markdown --> newLinesmarkdown["This **is** _Markdown_"]newLines[&quo…

Rust调用 DeepSeek API

Rust 实现类似 DeepSeek 的搜索工具 使用 Rust 构建一个高效、高性能的搜索工具需要结合异步 I/O、索引结构和查询优化。以下是一个简化实现的框架: 核心组件设计 索引结构 use std::collections::{HashMap, HashSet}; use tantivy::schema::{Schema, TEXT, STORED}; use …

Unity3D仿星露谷物语开发69之动作声音

1、目标 Player动作时产生的声音,比如砍倒树木、砸石头。 2、修复NPC快速行进的bug(与本节无关) 修改NPCMovement.cs脚本的MoveToGridPositionRoutine方法。 确保npcCalculatedSpeed的速度不少于最慢速度。 原代码: 修改后的…

【Node.js 的底层实现机制】从事件驱动到异步 I/O

简介 Node.js 作为 JavaScript 后端运行环境,其核心优势在于高并发处理能力和非阻塞 I/O 模型。 特点: 高并发处理:单线程事件循环高效处理大量并发连接I/O 密集型任务:非阻塞 I/O 模型避免线程切换开销,不适合 CPU…

nginx服务器配置时遇到的一些问题

京东云 CentOS 8.2 64位 Nginx配置文件修改后需要重启或重载服务的原因以及不重启的后果: ​​工作进程不主动重读配置​​: Nginx采用master-worker多进程架构。master进程读取配置文件并管理worker进程,worker进程处理实际请求。修改配置…

【论文阅读 | CVPR 2024 |Fusion-Mamba :用于跨模态目标检测】

论文阅读 | CVPR 2024 |Fusion-Mamba :用于跨模态目标检测 1.摘要&&引言2.方法2.1 预备知识2.2 Fusion-Mamba2.2.1 架构特征提取与多模态融合(FMB模块)FMB的应用与输出2.2.2 关键组件3.2.2.1 SSCS 模块:浅层跨模态特征交互…

Nginx-Ingress-Controller自定义端口实现TCP/UDP转发

背景1 使用deployment部署一个http服务,配合使用ingresstls的解析在ingress终止。 apiVersion: networking.k8s.io/v1 kind: Ingress metadata:annotations:name: test.comnamespace: rcs-netswitch-prod spec:defaultBackend:service:name: rcs-netswitch-prodpo…

基于Vue.js的图书管理系统前端界面设计

一、系统前端界面设计要求与效果 (一)系统功能结构图 设计一个基于Vue.js的图书管理系统前端界面。要充分体现Vue的核心特性和应用场景,同时结合信息管理专业的知识。要求系统分为仪表盘、图书管理、借阅管理和用户管理四个主要模块&#x…

Perplexity AI:对话式搜索引擎的革新者与未来认知操作系统

在信息爆炸的数字时代,传统搜索引擎提供的海量链接列表已无法满足用户对高效、精准知识获取的需求。Perplexity AI作为一款融合人工智能与实时网络检索的对话式搜索引擎,正通过技术创新重新定义人们获取信息的方式。这家成立于2022年的硅谷初创企业&…

第七讲 信号

1. 信号铺垫 信号: Linux 系统提供的, 简单轻量的, 用于向指定进程发送特定事件, 让接受信号进程做识别和对应处理实现进程控制的一种异步通信机制. 1~31 普通信号 34 ~ 64 实时信号 信号概览 下面是Linux系统中所有标准信号的名称及其对应的数字: SIGHUP (1…

2025年渗透测试面试题总结-2025年HW(护网面试) 02(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 2025年HW(护网面试) 02 1. 有趣的挖洞经历 2. 高频漏洞及修复方案 3. PHP/Java反序列化漏洞 4. 服务器入…

Odoo 18进阶开发:打造专业级list,kanban视图Dashboard

🎯 项目概述 在现代企业级应用中,数据可视化已成为提升用户体验的关键要素。Odoo 18 作为领先的企业资源规划系统,为开发者提供了强大的视图定制能力。本教程将带您深入了解如何在list(列表)视图和Kanban(…