mysql需要监控的参数_MYSQL 监控的参数 之 问 和 答 系列 (一)小监控大文章

本文探讨了如何通过监控MYSQL的SQL执行数量、连接数、临时表创建、锁状态和内存使用,以及如何选择合适的指标如questions、thread_cache_size和慢查询来评估系统性能。还介绍了如何设置参数和使用工具来确保系统的高效运行。
摘要由CSDN通过智能技术生成

2d44fceb17fe29b3e36c691cf39c084e.png

其实说到监控,无非两个目的,报警与解决问题。英文表达 metrics and alerts ,所以监控的指标那就的分两种,1 触发到某个设定值就要报警,因为要出事了,2 记录每一时刻的值,发现问题好对其进行分析,发现问题解决问题。

OK 弄清楚这两点后,一般来说MYSQL 监控的方向分为三点 1  应用需要的资源 2 资源的使用率与限制  3  被执行的查询

下面就来一轮问和答

问题1  MYSQL 中的参数 queries 和 quesions 到底我监控那个才能得知当前系统的执行的SQL 数?

7fe2470cdf0bbcca01d0e4f9a273c1f8.png

从定义上看着Queries 是包含存储过程,并且不包含 com_ping 和 com_statistics ,而Questions 则是包含大量Com 操作的。那到底使用那个作为展示的参数?   一般会使用 quersions 的值作为一个监控值,例如pmm 中并没有 queries 而选择显示的是 questions 作为一个数据库执行语句的监控值。

另外还有一些监控选择了,Com_insert + Com_update + Com_delete 方式来记录 MYSQL 中 的 dml 操作,Com_select 记录查询的操作,将具体的操作分开监控也是一个好的方法。

问题 2  怎么检查MYSQL 的连接数及周边

问:我通过Connections 的增减量来判断当前的连接数可以吗?

通过Connections 当然是可以查看一定时间尝试连接MYSQL的连接数量,但实际上大多来监控MYSQL 的连接数的方式

通过 Thread cache 来进行查看

4a50dc4a420642783a58368d27416099.png

实际通过 threads  来监控,通过threads 监控可以查看几个指标,

1 通过 threads_connected 可以看到你当前数据库系统中的连接数

2 treads_cached 当前线程池中的缓存有多少空闲的线程

通过上面两个参数你可以解决

1 当前有多少连接

2 你的 thread_cache_size 到底设置的够不够,如果你的 threads cached 已经剩下的不多,就要考虑添加你的 thread_cache_size了

936a3c8c1d863e09cb46a0fa5dcfee4c.png

3 问:我需要观察创建临时表的问题吗?

我想应该的监控,尤其create temp disk tables 变得很多的情况下

9baa0df10851e802046e78825f2c223b.png

想想如果你的大量的表都是在磁盘上建立的tmp 那结果一定是不怎么样,

所以保证大部分的临时表都能在内存中建立是一个性能不错的标志。

如果很糟糕的话,就要考虑 例如 MAX_TMP_TABLES 以及tmp_table_size 两个参数的设置,以及好好看看你的执行那些SQL 语句里面有没有“”怪胎”

4  问: 我如果在不关注慢查询的情况下,我怎么能快速得知当前系统中有多少不大好的语句。

一般在系统中如果有全表扫描,或者JOIN 的无索引扫描表,是最令人痛恨的,那统计一段时间这样的语句的数量,这个系统怎么样,大致就有点斤两了。

那么统计 select_scan  select_fulll_join  以及  select_full_range_join 等这些语句的执行数据量是可以作为一个系统中,这几个值中尤其要关注 select_full_join 基本上一个优秀的系统,这个值应该是0

另外还有sort scan 通过扫描整张表来获得的排序,这个也是要好好看看这些语句都是怎么写的。

当然最后也是可以通过 slow_queries 来进行当前慢查询语句数据的检测。

所以通过上面的这些监控项目大致就可以全方位的了解当下系统的与语句有关的情况。

5 问 总有开发问我当前系统的锁多不多,我怎么回答?

锁分为正常的SQL 语句执行时需要的锁以,可以通过以下的参数来监控以下,并回答部分问题

1  table_lock_waited 如果这个值比较高的话,就说明等待表锁的情况比较多,就需要关注了。

2  查看当前INNODB 的行级锁的情况

innodb_row_lock_time_avg  平均每次锁等待的时间单位毫秒

innodb_row_lock_waits  查询语句等待行锁的时间 单位毫秒

3  同时还有另外一个锁,就是死锁,死锁时怎么监控,当然你可以使用工具,但在监控上怎么显示你当前的死锁,这里面每个版本的MYSQL 就不大一样的,有的是可以打上count deadlock patch  来记录死锁,或者使用 metrics表来记录

228c712299c0b6e4669be4d3bd131ce9.png

基本上通过上面的状态就可以覆盖大部分范围了。

6  系统运行慢的时候,经常有人问,内存的状态怎么样, 我一般怎么回答?

关于内存的状态,其实还是蛮有讨论的余地,

首先观察的第一个敏感的位置是 Innodb_buffer_pool_bytes_data, 对比你现在的innodb_buffer_pool_size 的大小,你当前的内存使用在一个什么位置要有一个对比,另外有可能你使用的 innodb_buffer_pool 超过当初的设置的值10% 也是有可能的,innodb_buffer_pool_size 不是一个强行值可能会有超过设置值的情况,这时候你就要考虑内存到底设置够不够用的问题了。

就需要考虑另一个buffer hit 的量了, 1- 一般可以通过去磁盘提取数据的量比对程序运行中需要读取的数据量 * 100 。

(1 -  innodb_buffer_pool_read/innodb_buffer_pool_read_requests) * 100   一般如果低于95,就需要考虑内存的性能问题了

除此之外,adptive hash index size 也会使用大量大的内存,这点也要进行监控。

今天先说道这里

待  .......

40a1d660f2c8f72fd698cc72deebc2ca.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值