当前位置: 首页 > article >正文

性能测试-mysql监控

mysql常用监控指标
慢查询sql
慢查询:指执行速度低于设置的阀值的sql语句
作用:帮助定位查询速度较慢的sql语句,方便更好的优化数据库系统的性能

开启mysql慢查询日志

参数说明:
slow_query_log:慢查询日志开启状态【on:开启,off:关闭】
slow_query_log_file:慢查询日志存放位置
long_query_time:慢查询时长设置(超过该时长才会被记录)

设置步骤:
1、查询相关参数配置

show variables like "slow_query%";

在这里插入图片描述

show variables like "long_query_time";

在这里插入图片描述
2、开启慢查询并配置
开启慢查询日志

set global slow_query_log='ON';
#设置慢查询日志存放位置
set global slow_query_log_file='/data/slow_query.log';
#设置慢查询时间标准,设置之后会在下次会话才生效
set global long_query_time=1

连接数

利用mysql的sql语句监控mysql的连接数

show variables like "%connections%";

max_connections:所有与数据库建立连接的最大数量
max_user_connections:每个用户与数据库建立连接的最大数量

数据库内的最大连接时间

show variables like "%time%";

connection_timeout:最大连接时长
long_query_time:慢查询时长设置(超过该时长才会被记录)

查看当前数据库连接数
方法一:show processlist
方法二:show status like “%Thread%”

threads_connected:当前连接的数量
threads_created:曾经连接的数量
threads_running:当前正在处理状态的连接

监控缓存命中率

用户使用数据库服务器操作的过程:
用户向连接器发送sql语句,连接器先去缓存查找信息,如果在缓存中查找到结果,就返回给连接器,连接器再返回给用户(这是常见的流程);
如果在缓存中没查询到结果,就会先去分析器,再去优化器,之后去执行器,去执行引擎,最后返回给用户。

缓存命中率:所有查询语句,命中缓存的请求数,占所有请求的比例

查看是否开启缓存命中率

#缓存的开关
show variables like "%query_cache_type%";
#缓存的大小
show variables liel "%query_cache_size%";

开启缓存设置
mysql的配置文件my.ini或者my.cnf中:
1、query_cache_size:设置为具体大小
2、增加一行:query_cache_type=1

查看缓存相关选项

show global status like "QCache%";

在这里插入图片描述

Qcache_hits:缓存命中次数
Qcache_inserts:插入缓存次数

缓存命中率计算方式:
查询缓存命中率≈(Qcache_hits-Qcache_inserts)/Qcache_hits*100%
缓存命中率一般不低于99%

缓存失效原因
1、新的查询语句
2、表被修改过(insert、update,delete)

mysql锁

目的:解决客户端并发访问冲突问题

查看死锁

show OPEN TABLES where in_use>0;
UNLOCK TABLES;//解锁

锁定表

LOCK TABLES XX(表名) READ;

监控数据库索引

目的就是加快检索表中数据,尽快找到符合限制条件的记录id的辅助数据结构

主键id、自带索引,所以根据主键的查询结果,查询速度比较快(主要采取二分法)
非主键,可以添加索引,加快程序的运行速度

http://www.lryc.cn/news/2383296.html

相关文章:

  • 游戏引擎学习第301天:使用精灵边界进行排序
  • CSS attr() 函数详解
  • 【AI生成PPT】使用ChatGPT+Overleaf自动生成学术论文PPT演示文稿
  • 流复备机断档处理
  • Linux 安装 pytorch+cuda+gpu 大模型开发环境过程记录
  • 局部放大maya的视图HUD文字大小的方法
  • 数学复习笔记 16
  • 初识Linux · NAT 内网穿透 内网打洞 代理
  • STM32接收红外遥控器的遥控信号
  • Redis从入门到实战 - 高级篇(下)
  • NGINX常用功能—笔记
  • JVM 性能问题排查实战10连击
  • 【jvm第8集】jvm调优工具(图形化工具)
  • Python测试单例模式
  • 多技术栈 iOS 项目的性能调试实战:从 Flutter 到 Unity(含 KeyMob 工具实测)
  • STM32简易计算机设计
  • GUI实验
  • 量子计算 | 量子密码学的挑战和机遇
  • linux系统查看硬盘序列号
  • 分享一些多模态文档解析思路
  • CSS 选择器入门
  • 【Django】Django DRF 中如何手动调用分页器返回分页数据(APIView,action场景)
  • AI知识梳理——RAG、Agent、ReAct、LangChain、LangGraph、MCP、Function Calling、JSON-RPC
  • Vue组件通信方式及最佳实践
  • 【实用教程】如何快速搭建一套私有的埋点系统?
  • 深入解析 Uniswap:自动做市商模型的数学推导与智能合约架构
  • spring配置并使用rabbitmq
  • Android开发——不同布局的定位属性 与 通用属性
  • React 19版本refs也支持清理函数了。
  • Python高效网络爬虫开发指南