首页 > 编程知识 正文

mysql数据分析,zabbix监控mysql表空间

时间:2023-05-03 16:26:02 阅读:56563 作者:423

Mysql数据库监控分析

Mysql是当今关系数据库中使用频率较高的数据库之一,其监控手段的多样性得益于社区的活跃。 今天谈谈Mysql数据库的监视分析手段吧。 Mysql的常见监控分析方法为常规慢SQL日志获取、PT工具、Monyog工具(商用),重点介绍常规方法慢SQL和商用工具的Monyog。

另一方面,慢SQL是Mysql数据库的象征性监视方法,主要步骤如下:

1、找到消耗高的SQL语句(慢的SQL、CPU消耗高的) )。

1 )打开缓慢的SQL开关

slow_query_log开关参数是否接通

关闭时,set global slow_query_log=0; 设置打开

2 )查看long_query_time设置较慢的SQL阈值

将long_query_time更改为合理阈值,设置全局long _ query _ time=0.1;

3 )显示低速SQL日志的路径

4 )低速sql分析工具用mysqldumpslow格式化分析低速sql日志

mysqldumpslowST-T3/MySQL data/citicsql/data/data/drms 501-slow.log遇到三个最慢的SQL语句

mysqldumpslowscT10查找使用最多的10个sql语句。

2、如果没有较慢的SQL,但数据库的CPU仍然很高,则需要捕获当前使用的SQL并进行细分分析,以查看当前正在执行的SQL语句

1 )根据show processlist; 显示实时线程执行sql信息。

2 )将较慢的SQL阈值设置为足够小,并打印所有SQL语句。

3、对慢SQL或消耗CPU的SQL进行具体分析

1 )通过执行计划分析,将计划命令作为explain SQL语句执行;

2 )显示基于SQL中使用的数据表构建的索引信息、show index from tablename

3 )根据执行计划,优化SQL增加索引后,重新运行执行计划进行比较

注:说明执行计划的主要信息项:列的含义

一组Id为的数字,指示查询中select子句或操作表的执行顺序。 如果Id相同,则被认为是从上面开始依次执行的组。 在所有组中,id值越大,优先级越高,将首先执行。

Select_type表示查询中每个select子句的类型。 简单or复杂)

简单:易于选择,不使用union或子查询

PRIMARY:最外层选择

UNION:union中第二个或更高版本的select语句

从属union:union的第二个或后续选择

subquery :“选择”或“WHERE”列表包含子查询。 此子查询被标记为“subquery”,该子查询的第一个

已删除:来自列表中的子查询标记为已删除

从UNION RESULT:union表中检索结果的选择将标记为unionresult

表查询的表名

分区匹配的分区。 必须指定关键字Partitions

类型访问类型,如所有表、索引等

All :全表扫描

索引:所有表扫描,与ALL区分,索引只扫描索引树

范围:索引范围扫描。 常见于between、等查询

Ref:是对非唯一行的索引扫描,它返回与单个值匹配的所有行

Eq_ref :唯一的索引等效查询。 常用于主键或唯一索引扫描

Constsystem :在优化部分查询并将其转换为常量时使用这些类型的访问。

NULL:在优化过程中分解语句,而不需要在执行过程中访问表或索引

Possible_keys指示Mysql可用于在表中查找行的索引。 如果与查询相关的字段中有索引,则会列出该索引,但不一定由查询使用

Key显示Mysql在查询中实际使用的索引,如果没有使用索引,则显示为NULL。

Key_len表示索引中使用的字节数,Key_len是索引字段的最大可能长度,而不是实际使用的长度。 也就是说,Key_len是根据表定义计算的,而不是在表中查找的。

Ref用于搜索索引列值的列或常量

Rows表示Mysql根据表统计信息和索引选择情况,估计找到所需记录所需读取的行数。

筛选查询条件筛选器表中行数的百分比。

Extra的其他信息

当MYSQL找到与行匹配的行时,Distinct:将不再搜索该行

Not exists:

MYSQL优化了LEFT JOIN,一旦它找到了匹配LEFT JOIN标准的行,就不再搜索了

Range checked for each Record(index map:#):没有找到理想的索引,因此对于从前面表中来的每一个行组合,MYSQL检查使用哪个索引,并用它来从表中返回行。这是使用索引的最慢的连接之一

Using filesort: 看到这个的时候,查询就需要优化了。MYSQL需要进行额外的步骤来发现如何对返回的行排序。它根据连接类型以及存储排序键值和匹配条件的全部行的行指针来排序全部行

Using index: 列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表的全部的请求列都是同一个索引的部分的时候

Using temporary 看到这个的时候,查询需要优化了。这里,MYSQL需要创建一个临时表来存储结果,这通常发生在对不同的列集进行ORDER BY上,而不是GROUP BY上

Using where 使用了WHERE从句来限制行将与下一张表匹配或者是返回给用户。如果不想返回表中的全部行,并且连接类型ALL或index,这就会发生,或者是查询有问题不同连接类型的解释(按照效率高低的顺序排序)

二、MONYOG工具介绍

MonYog是比较全面的监控Mysql数据库的工具,从快照到实时监控到参数获取一应俱全,下面主要介绍常用的功能。

1、Dashboard:图形化监控大屏包括了连接数、吞吐量、缓存命中、事务等监控、CPU、内存、IO等

2、OverView:全局监控当前数据库下的SQL的运行情况,包括SQL语句、执行次数、总耗时和平均单个SQL耗时

3、RealTime:快照抓取能够抓取当前时间段内的SQL的执行情况,能够查看完整SQL耗时和对应的执行计划信息

4、ServerConfig:全量数据库的参数配置信息

详细的MONYOG使用手册等信息,请参考:https://webyog.com/product/monyog/

小提示:

1、所有的关系型数据库的监控点其实都一样,区别在于监控手段方法,因此要了解其本质。

2、数据库的慢SQL只是其问题分析方向之一,没有慢SQL不代表没有性能问题,要进行精细化分析。

3、数据库的的慢SQL分析,不只是索引影响,生产和线下压测的差异性的关键因素还有数据量、数据分布、数据模型、参数配置等。

4、数据库的设计要遵循设计规范,按照标准规范设计才能将性能问题扼杀在摇篮中。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。