SQL 数据库监控:SQL语句监控工具与实践案例
SQL 数据库监控:SQL语句监控工具与实践案例
SQL语句监控的主要方法
SQL监控主要通过以下几种方式实现:
- 数据库内置监控功能:大多数数据库系统提供内置的SQL监控工具
- 数据库性能视图/系统表:通过查询特定的系统视图获取SQL执行信息
- 专用监控工具:第三方工具提供更全面的监控功能
- 日志分析:分析数据库查询日志
主流数据库的监控工具
MySQL监控
- 内置工具:
SHOW PROCESSLIST
、EXPLAIN
、慢查询日志 - 性能视图:
performance_schema
、sys
库 - 第三方工具:Percona PMM、MySQL Enterprise Monitor、VividCortex
PostgreSQL监控
- 内置工具:
pg_stat_activity
、pg_stat_statements
- 扩展:
auto_explain
、pgBadger
- 第三方工具:pgAdmin、pganalyze
Oracle监控
- 内置工具:AWR报告、ASH报告、SQL Trace
- 视图:
V$SQL
、V$SQLAREA
、V$SESSION
- 工具:OEM (Oracle Enterprise Manager)
SQL Server监控
- 内置工具:SQL Server Profiler、扩展事件(XEvents)
- DMV:
sys.dm_exec_query_stats
、sys.dm_exec_sql_text
- 工具:SQL Sentry、Redgate SQL Monitor
小案例:MySQL慢查询监控与分析
1. 启用慢查询日志
-- 查看当前慢查询设置
SHOW VARIABLES LIKE '%slow_query%';
SHOW VARIABLES LIKE '%long_query_time%';-- 启用慢查询日志(临时,重启失效)
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1; -- 设置慢查询阈值为1秒
SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log';-- 永久生效需修改my.cnf/my.ini
[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 1
log_queries_not_using_indexes = 1
2. 使用mysqldumpslow分析慢查询日志
# 查看最慢的10个查询
mysqldumpslow -s t -t 10 /var/log/mysql/mysql-slow.log# 查看使用次数最多的慢查询
mysqldumpslow -s c -t 10 /var/log/mysql/mysql-slow.log# 查看特定用户的慢查询
mysqldumpslow -s t -t 10 -g "user=webapp" /var/log/mysql/mysql-slow.log
3. 使用performance_schema实时监控
-- 启用performance_schema(默认已启用)
SELECT * FROM performance_schema.setup_instruments
WHERE NAME LIKE '%statement/%';-- 查看当前执行的SQL
SELECT * FROM performance_schema.events_statements_current;-- 查看历史SQL执行统计
SELECT * FROM performance_schema.events_statements_history_long;-- 查看消耗资源最多的SQL
SELECT digest_text, count_star, avg_timer_wait/1000000000 as avg_ms
FROM performance_schema.events_statements_summary_by_digest
ORDER BY avg_timer_wait DESC LIMIT 10;
4. 使用Percona PMM进行专业监控
Percona Monitoring and Management (PMM) 是一个开源的数据库监控解决方案:
- 安装PMM客户端和服务器
- 配置MySQL数据源
- 通过Web界面查看:
- 查询分析(QAN)
- 实时性能指标
- 历史趋势分析
监控案例:电商网站订单查询优化
问题描述:电商网站订单页面加载缓慢,怀疑是数据库查询问题。
监控步骤:
-
启用慢查询日志:
SET GLOBAL slow_query_log = 'ON'; SET GLOBAL long_query_time = 0.5; -- 设置为0.5秒
-
分析日志发现以下慢查询:
SELECT * FROM orders o JOIN customers c ON o.customer_id = c.id JOIN order_items oi ON o.id = oi.order_id WHERE o.status = 'processing' AND o.created_at > '2023-01-01' ORDER BY o.created_at DESC;
-
使用EXPLAIN分析:
EXPLAIN SELECT * FROM orders...;
结果显示orders表没有status和created_at的联合索引
-
优化方案:
ALTER TABLE orders ADD INDEX idx_status_created (status, created_at);
-
验证效果:
- 查询时间从1.2秒降至0.05秒
- 监控系统显示CPU使用率下降30%
监控最佳实践
- 建立基线:了解系统正常状态下的性能指标
- 设置警报:对关键指标设置阈值警报
- 定期审查:定期分析监控数据,发现潜在问题
- 关联分析:将SQL性能与系统资源使用关联分析
- 长期存储:保留历史数据用于趋势分析和容量规划
通过以上方法和工具,可以有效地监控SQL语句执行情况,及时发现并解决性能问题。
相关文章:
SQL 数据库监控:SQL语句监控工具与实践案例
SQL 数据库监控:SQL语句监控工具与实践案例 SQL语句监控的主要方法 SQL监控主要通过以下几种方式实现: 数据库内置监控功能:大多数数据库系统提供内置的SQL监控工具数据库性能视图/系统表:通过查询特定的系统视图获取SQL执行信…...
AB测试面试题
AB测试面试题 常考AB测试问答题(1)AB测试的优缺点是什么?(2)AB测试的一般流程/介绍一下日常工作中你是如何做A/B实验的?(3)第一类错误 vs 第二类错误 vs 你怎么理解AB测试中的第一、二类错误?(4)统计显著=实际显著?(5)AB测试效果统计上不显著?(6)实验组优于对…...

颠覆性技术革命:CAD DWG图形瓦片化实战指南
摘要 CAD DWG图形瓦片化技术通过金字塔模型构建多分辨率地图体系,实现海量工程图纸的Web高效可视化。本文系统解析栅格瓦片与矢量瓦片的技术原理,详细对比两者在生成效率、样式自由度和客户端性能等维度的差异,并结合工程建设、工业设计和智…...

不换设备秒通信,PROFINET转Ethercat网关混合生产线集成配置详解
在汽车制造中,连接Profinet控制的PLC(如西门子S7)与EtherCAT伺服驱动器(如倍福AX5000),实现运动控制同步。 在汽车制造的混合生产线集成中,实现西门子S7 PLC与倍福AX5000 EtherCAT伺服驱动器的…...

c++STL-string的使用
这里写自定义目录标题 string的使用string写成类模板的原因string的版本举例构造、析构函数和赋值重载构造函数和析构函数operator Iterators迭代器begin和endrbegin和rendcbegin和cend,crbegin和crend(c11) capacity容量有关函数不同编译器下…...

UNet网络 图像分割模型学习
UNet 由Ronneberger等人于2015年提出,专门针对医学图像分割任务,解决了早期卷积网络在小样本数据下的效率问题和细节丢失难题。 一 核心创新 1.1对称编码器-解码器结构 实现上下文信息与高分辨率细节的双向融合 如图所示:编码器进行了4步&…...

使用 SHAP 进行特征交互检测:揭示变量之间的复杂依赖关系
我们将探讨如何使用 SHAP(SHapley 加法解释)来检测和可视化机器学习模型中的特征交互。了解特征组合如何影响模型预测对于构建更透明、更准确的模型至关重要。SHAP 有助于揭示这些复杂的依赖关系,并使从业者能够以更有意义的方式解释模型决策…...

Python-MCPInspector调试
Python-MCPInspector调试 使用FastMCP开发MCPServer,熟悉【McpServer编码过程】【MCPInspector调试方法】-> 可以这样理解:只编写一个McpServer,然后使用MCPInspector作为McpClient进行McpServer的调试 1-核心知识点 1-熟悉【McpServer编…...

Java设计模式-策略模式(行为型)
策略模式详解 一、策略模式概述 1.1 基本概念 策略模式是一种行为型设计模式,它主要用于处理算法的不同变体。其核心思想是将算法的定义与使用分离开来,把一系列具体的算法封装成独立的策略类,这些策略类实现相同的策略接口。客户端可以在…...

html body 设置heigth 100%,body内元素设置margin-top出滚动条(margin 重叠问题)
今天在用移动端的时候发现个问题,html,body 设置 height:100% 会出现纵向滚动条 <!DOCTYPE html> <html> <head> <title>html5</title> <style> html, body {height: 100%; } * {margin: 0;padding: 0; } </sty…...

C语言模糊不清的知识
1、malloc、calloc、realloc的区别和用法 malloc实在堆上申请一段连续指定大小的内存区域,并以void*进行返回,不会初始化内存。calloc与malloc作用一致,只是calloc会初始化内存,自动将内存清零。realloc用于重新分配之前通过mallo…...

如何配置光猫+路由器实现外网IP访问内部网络?
文章目录 前言一、网络拓扑理解二、准备工作三、光猫配置3.1 光猫工作模式3.2 光猫端口转发配置(路由模式时) 四、路由器配置4.1 路由器WAN口配置4.2 端口转发配置4.3 动态DNS配置(可选) 五、防火墙设置六、测试配置七、安全注意事…...

springboot3+vue3融合项目实战-大事件文章管理系统获取用户详细信息-ThreadLocal优化
一句话本质 为每个线程创建独立的变量副本,实现多线程环境下数据的安全隔离(线程操作自己的副本,互不影响)。 关键解读: 核心机制 • 同一个 ThreadLocal 对象(如示意图中的红色区域 tl)被多个线…...

【高数上册笔记篇02】:数列与函数极限
【参考资料】 同济大学《高等数学》教材樊顺厚老师B站《高等数学精讲》系列课程 (注:本笔记为个人数学复习资料,旨在通过系统化整理替代厚重教材,便于随时查阅与巩固知识要点) 仅用于个人数学复习,因为课…...

c++STL-string的模拟实现
cSTL-string的模拟实现 string的模拟实现string的模拟线性表的实现构造函数析构函数获取长度(size)和获取容量(capacity)访问 [] 和c_str迭代器(iterator)交换swap拷贝构造函数赋值重载(&#x…...

YashanDB(崖山数据库)V23.4 LTS 正式发布
2024年回顾 2024年11月我们受邀去深圳参与了2024国产数据库创新生态大会。在大会上崖山官方发布了23.3。这个也是和Oracle一样采用的事编年体命名。 那次大会官方希望我们这些在一直从事在一线的KOL帮助产品提一些改进建议。对于这样的想法,我们都是非常乐于合作…...

python 写一个工作 简单 番茄钟
1、图 2、需求 番茄钟(Pomodoro Technique)是一种时间管理方法,由弗朗西斯科西里洛(Francesco Cirillo)在 20 世纪 80 年代创立。“Pomodoro”在意大利语中意为“番茄”,这个名字来源于西里洛最初使用的一个…...
C++.IP协议通信
C++IP协议通信 1. TCP协议通信1.1 服务端实现创建套接字绑定地址监听连接接受连接数据传输关闭连接1.2 客户端实现创建套接字连接服务器数据传输关闭连接1.3 示例代码服务端代码示例客户端代码示例绑定地址接收数据发送数据关闭套接字2.2 客户端实现创建套接字发送数据接收数据…...
css背景相关
背景书写 background: url(src); // 注意:在写动态样式时,backgournd赋值格式错误,是不会在浏览器dom的style上显示的 // 但是可以创建不可见的img,预加载来提高性能背景也会加载图片资源 同img的src一样,background也…...

PyCharm 加载不了 conda 虚拟环境,不存在的
#工作记录 前言 在开发过程中,PyCharm 无法加载 Conda 虚拟环境是常见问题。 在不同情况下,“Conda 可执行文件路径”的指定可能会发生变化,不会一尘不变,需要灵活处置。 以下是一系列解决此问题的经验参考。 检查 Conda 安装…...

设计模式学习整理
目录 UML类图 设计模式六大原则 1.单一职责原则 2.里氏替换原则 3.依赖倒置原则 4.接口隔离原则 5.迪米特法则(最少知道原则) 6.开(放封)闭原则 设计模式分类 1.创建型模式 2.结构型模式 4.行为型模式 一、工厂模式(factory——简单工厂模式和抽象工厂模式) 1.1、…...

二分查找的理解
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h>int binary_search(int arr[], int k, int sz) {int left 0;int right sz - 1;//这个是下标,减一是因为在0开始的,怕越界(访问无效)while (left < right){int mid…...

【Java】线程实例化 线程状态 线程属性
线程实例化 继承 Thread 类 创建类继承自 Thread 类 . class MyThread extends Thread重写 run() 方法 . Overridepublic void run(){// 线程要执行的任务代码}实例化自定义线程类 . 实现 Runnable 接口 创建类实现 Runnable 接口 . class MyRunnable implements Runnable实…...

卫宁健康WiNGPT3.0与WiNEX Copilot 2.2:医疗AI创新的双轮驱动分析
引言:医疗AI的双翼时代 在医疗信息化的浪潮中,人工智能技术的深度融入正在重塑整个医疗行业。卫宁健康作为国内医疗健康和卫生领域数字化解决方案的领军企业,持续探索AI技术在医疗场景中的创新应用。2025年5月10日,在第29届中国医院信息网络大会(CHIMA2025)上,卫宁健康…...

I2C通讯
3.1. 本章节的代码仓库 1 2 3 4 5 6 #如之前有获取则可跳过 #获取仓库 git clone https://gitee.com/LubanCat/lubancat_rk_code_storage.git#代码所在的位置 lubancat_rk_code_storage/quick_start/i2c3.2. i2c I2C(Inter-Integrated Circuit)是一种通用的总线协…...

Excel实现单元格内容拼接
一、应用场景: 场景A:将多个单元格拼接,比如写测试用例时,将多个模块拼接,中间用“-”隔开 场景B:将某单元格内容插入另一单元格固定位置(例如在B1中添加A1的内容) 二、实际应用&a…...

2025前端面试遇到的问题(vue+uniapp+js+css)
Vue相关面试题 vue2和vue3的区别 一、核心架构差异 特性Vue2Vue3响应式系统基于Object.defineProperty基于Proxy(支持动态新增/删除属性)代码组织方式Options API(data/methods分块)Composition API(逻辑按功能聚合&am…...
大模型核心基础简介
大模型核心基础简介目录 一、大模型简介定义核心特征 二、大模型的发展历程1. 早期奠基(1950s–2010s)1950s–1980s:神经网络萌芽1990s–2010s:深度学习前夜 2. 架构革命:Transformer的诞生与预训练范式(20…...

广东省省考备考(第八天5.11)—言语:逻辑填空(每日一练)
错题 解析 第一空,搭配“期盼”,且根据“生命,是来自上天的馈赠”,可知父母对孩子的出生是非常期盼的。A项“望穿秋水”,形容对远地亲友的殷切盼望,C项“望眼欲穿”,形容盼望殷切,均…...

github+ Picgo+typora
github Picgotypora 本文将介绍如何使用Picgo在typora中实现上传服务 创建github仓库以及配置token 创建仓库 注意需要Initialize 添加README 配置为public 配置token github点击头像找到setting 选择Developer setting 配置token generate 选第一个第二个都行(我这里选第…...