首页 > 数据库 >MySQL的关键指标及采集方法

MySQL的关键指标及采集方法

时间:2023-08-06 22:00:43浏览次数:36  
标签:queries 指标 采集 Queries 关键 Questions MySQL Com

MySQL 是个服务,所以我们可以借用 Google 四个黄金指标的思路来解决问题。

1、延迟

应用程序会向 MySQL 发起 SELECT、UPDATE 等操作,处理这些请求花费了多久,是非常关键的,甚至我们还想知道具体是哪个 SQL 最慢,这样就可以有针对性地调优。

  1. 在客户端埋点。即上层业务程序在请求 MySQL 的时候,记录一下每个 SQL 的请求耗时,把这些数据统一推给监控系统,监控系统就可以计算出平均延迟、95 分位、99 分位的延迟数据了。不过因为要埋点,对业务代码有一定侵入性。
  2. Slow queries。。MySQL 提供了慢查询数量的统计指标:
show global status like 'Slow_queries';
SHOW VARIABLES LIKE 'long_query_time';
  1. 通过 performance schema 和 sys schema 拿到统计数据。比如 performance schema 的 events_statements_summary_by_digest 表,这个表捕获了很多关键信息,比如延迟、错误量、查询量。

2、流量

统计 SELECT、UPDATE、DELETE、INSERT 等语句执行的数量。如果流量太高,超过了硬件承载能力,显然是需要监控、需要扩容的。这些类型的指标在 MySQL 的全局变量中都可以拿到。

show global status where Variable_name regexp 'Com_insert|Com_update|Com_delete|Com_select|Questions|Queries';
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| Com_delete              | 2091033   |
| Com_delete_multi        | 0         |
| Com_insert              | 8837007   |
| Com_insert_select       | 0         |
| Com_select              | 226099709 |
| Com_update              | 24218879  |
| Com_update_multi        | 0         |
| Empty_queries           | 25455182  |
| Qcache_queries_in_cache | 0         |
| Queries                 | 704921835 |
| Questions               | 461095549 |
| Slow_queries            | 107       |
+-------------------------+-----------+
12 rows in set (0.001 sec)

这些指标都是 Counter 类型,单调递增,另外 Com_ 是 Command 的前缀,即各类命令的执行次数。整体吞吐量主要是看 Questions 指标,但 Questions 很容易和它上面的 Queries 混淆。从例子里我们可以明显看出 Questions 的数量比 Queries 少。Questions 表示客户端发给 MySQL 的语句数量,而 Queries 还会包含在存储过程中执行的语句,以及 PREPARE 这种准备语句,所以监控整体吞吐一般是看 Questions。

流量方面的指标,一般我们会统计写数量(Com_insert + Com_update + Com_delete)、读数量(Com_select)、语句总量(Questions)。

3、错误

错误量这类指标有多个应用场景,比如客户端连接 MySQL 失败了,或者语句发给 MySQL,执行的时候失败了,都需要有失败计数。

  1. 在客户端采集、埋点,不管是 MySQL 的问题还是网络的问题,亦或者中间负载均衡的问题或 DNS 解析的问题,只要连接失败了,都可以发现。缺点就是会有代码侵入性。
  2. 从 MySQL 中采集相关错误,比如连接错误可以通过 Aborted_connects 和 Connection_errors_max_connections 拿到。

4、饱和度

首先我们要关注 MySQL 所在机器的 CPU、内存、硬盘 I/O、网络流量这些基础指标。

MySQL 本身也有一些指标来反映饱和度,比如刚才我们讲到的连接数,当前连接数(Threads_connected)除以最大连接数(max_connections)可以得到连接数使用率,是一个需要重点监控的饱和度指标。

MySQL的关键指标及采集方法_MySQL监控

标签:queries,指标,采集,Queries,关键,Questions,MySQL,Com
From: https://blog.51cto.com/key3feng/6987200

相关文章

  • mysql连接的时候,null, message from server: “Host ‘xx.xx.xx.xx‘ is not allowed
    连接mysql的时候,提示“null,messagefromserver:“Host‘xx.xx.xx.xx‘isnotallowedtoconnecttothisMySQLserver“”解决出现这个提示,是由于我们使用root用户登录时,没有给root用户设置能访问的机器,所以我们设置一下,就可以了。第一步:登录mysql:输入 mysql-uroot......
  • Java8时间与Mysql时间
    对应版本Java8里面新出来了一些API,LocalDate、LocalTime、LocalDateTime非常好用如果想要在JDBC中,使用Java8的日期LocalDate、LocalDateTime,则必须要求数据库驱动的版本不能低于4.2上面说了,数据库驱动的版本不能低于4.2,如何判断呢?直接打开数据库驱动jar,里面有个META-INF/MA......
  • MySQL 8.0中的invisible功能
    在本文中,将讨论mysql8.0中的几个新功能和一个旧功能。·invisiblecolumns·generatedinvisibleprimarykeys·invisibleindexes 不可见的列(invisiblecolumns)不可见的列功能自8.0.23版开始实现的。什么是不可见的列?它本质上是表中的普通列,有自己的名称和数据类型。它的......
  • 零基础尝试mysql主从复制
    本文参考了这篇文章  https://blog.csdn.net/tenc1239/article/details/130451736 感谢大佬的分享前提:自己准备好两个数据库环境,我用的是本机的vm虚拟机linux中的mysql(版本8.0.33)和本机windows中的mysql(8.1.0)一、配置主库  1、配置my.cnf 文件#服务id用来保证......
  • 【面试经验分享】MySQL数据库面试题:如何定位慢查询?
    面试官:MySQL中,如何定位慢查询?候选人:嗯~,我们当时做压测的时候有的接口非常的慢,接口的响应时间超过了2秒以上,因为我们当时的系统部署了运维的监控系统Skywalking,在展示的报表中可以看到是哪一个接口比较慢,并且可以分析这个接口哪部分比较慢,这里可以看到SQL的具体的执行时间,所以可以......
  • Docker系列 (1) - 使用 Docker 部署 MySQL 8.1
     MySQL是世界上最受欢迎的开源数据库。凭借其可靠性、易用性和性能,MySQL已成为Web应用程序的数据库优先选择。本文演示在Docker上部署MySQL8.1。MySQL:https://www.mysql.com/1.部署环境   IP地址(本地测试环境):192.168.0.10   操作系统:LinuxCentOS7.9 ......
  • MySQL数据库的常用命令
    1.创建数据库指定字符集:CREATE DATABASEdb_nameDEFAULTCHARACTERSETutf8COLLATEutf8_general_ci 2.新建用户:createuser'hive'@'localhost'identifiedby'123456';如果提示:ERROR1290(HY000):TheMySQLserverisrunningwiththe--skip-gra......
  • 创建usr local mysql在home下
    ln-s目录软链接名称......
  • mysql关闭bin_log
    vim/etc/my.cnf......
  • 本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止。M
    下载好mysql后,想要启动mysql服务时出现了以上问题。整了半天终于解决了,方案如下:1.首先进入到MySQL的安装目录下,每个人的安装目录可能会有所不同,比如我的是C:\ProgramFiles\MySQL\MySQLServer8.0;2.看一下与bin同级的目录中有没有data这个文件夹,若有,则把原有的data文件夹删掉......