mysql的topsql_TOP SQL监控之MySQL篇

本文介绍了多种MySQL监控方式,包括慢查询日志、Performance Schema以及Druid连接池监控。详细阐述了如何通过Performance Schema查询平均响应时间最多、行读最多、执行次数最多等关键指标,帮助优化SQL性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL的监控方式也有很多种:

慢查询日志slow_log

优点:MySQL自带,记录的慢SQL语句完整;

缺点:需要登录mysql服务器;如果slow_log文件太大,还需要利用其他工具分析日志,比如mysqldumpslow;

performance_shema

优点:MySQL自带,只要有查询权限即可;

缺点:记录的SQL语句可能不完整(SQL语句过长,依稀记得是这样)

授权语句:grant select on performance_schema.* to 'test'@'%';

常用查询语句:

****查询平均响应时间最多****

SELECT AVG_TIMER_WAIT/1000000000000 as AVG_TIMER_WAIT_S,essbd.*

FROM performance_schema.events_statements_summary_by_digest essbd

ORDER BY AVG_TIMER_WAIT DESC limit 100;

****查询行读最多****

SELECT SUM_ROWS_EXAMINED/COUNT_STAR as AVG_ROWS_EXAMINED,essbd.*

FROM performance_schema.events_statements_summary_by_digest essbd

ORDER BY SUM_ROWS_EXAMINED/COUNT_STAR DESC limit 100;

**** 查询执行次数最多 ****

SELECT *

FROM performance_schema.events_statements_summary_by_digest

ORDER BY COUNT_STAR  DESC limit 100;

**** 查询排序次数最多 ****

SELECT SUM_SORT_ROWS/COUNT_STAR as AVG_SORT_ROWS,essbd.*

FROM performance_schema.events_statements_summary_by_digest essbd

ORDER BY SUM_SORT_ROWS/COUNT_STAR DESC limit 100;

**** 查询返回结果集最多 ****

SELECT SUM_ROWS_SENT/COUNT_STAR as AVG_ROWS_SENT, essbd.*

FROM performance_schema.events_statements_summary_by_digest essbd

ORDER BY SUM_ROWS_SENT/COUNT_STAR  DESC limit 100;

**** 查询是否无索引 ****

SELECT SUM_NO_INDEX_USED/COUNT_STAR as AVG_NO_INDEX_USED, essbd.*

FROM performance_schema.events_statements_summary_by_digest essbd

ORDER BY SUM_NO_INDEX_USED/COUNT_STAR  DESC limit 100;

**** 查询锁定时间最多 ****

SELECT SUM_LOCK_TIME/COUNT_STAR/1000000000000 as AVG_LOCK_TIME, essbd.*

FROM performance_schema.events_statements_summary_by_digest essbd

ORDER BY SUM_LOCK_TIME/COUNT_STAR  DESC limit 100;

**** 查询IO最多 ****

SELECT AVG_TIMER_READ/1000000000000 as AVG_TIMER_READ_S,

AVG_TIMER_FETCH /1000000000000 as AVG_TIMER_FETCH_S,tiwsbtt.*

FROM performance_schema.table_io_waits_summary_by_table tiwsbtt

order by AVG_TIMER_READ desc limit 100;

druid monitor

如果服务端是用的druid连接池,那么可以配置druid monitor来进行监控。

3423320043fa49f191e3a8025774457a.png

优点:从应用层直接进行监控,还可以看到连接池的使用情况;

缺点:需要额外配置druid monitor,如果是微服务框架,貌似每个服务都需要独立去查看监控数据;

#!/bin/sh #安装插件 cd /root/mysql if test -e ./sharutils-4.6.1-2.x86_64.rpm then echo 'sharutils开始安装...' rpm -ivh sharutils-4.6.1-2.x86_64.rpm echo 'sharutils安装完成...' else echo 'sharutils文件不存在!' exit fi #安装msql8 if test -e ./mysql8.0.19_64-636.sh then if test -e ./mysql8.0.19_64-636.sh.sha256 then echo '准备安装mysql8' sh ./mysql8.0.19_64-636.sh else echo 'mysql8.sha256文件不存在!' exit fi else echo 'mysql8.sh文件不存在!' exit fi if [ $? -eq 0 ]; then echo 'mysql安装完成...' else echo 'mysql安装失败!' exit fi #执行重启不需验证 /topwalk/baseapp/bin/mysqld restart --skip_grant_tables #安装tcl sh ./tcl-install.sh if [ $? -eq 0 ]; then echo 'tcl安装完成...' else echo 'tcl安装失败!' exit fi #安装expect sh ./expect-install.sh if [ $? -eq 0 ]; then echo 'expect安装完成...' else echo 'expect安装失败!' exit fi #创建mysql用户,授权 sh ./initdb.sh if [ $? -eq 0 ]; then echo 'mysql用户创建,授权完成...' else echo 'mysql用户创建,授权失败!' exit fi ln -s /topwalk/baseapp/bin/mysqld /etc/init.d/ sed -i '/MYSQL_HOME/d' /etc/profile echo "export MYSQL_HOME=/topwalk/baseapp/mysql" >>/etc/profile echo 'export PATH=$PATH:$MYSQL_HOME/bin' >>/etc/profile systemctl enable mysqld source /etc/profile service mysqld restart #初始化库 /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 < topsql/CREATE_TOPBASIC.sql /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 < topsql/CREATE_TOPDMS.sql /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 < topsql/CREATE_TOPUIS.sql #初始化表 /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 TOPBASIC < topsql/TOPBASIC.sql /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 TOPDMS < topsql/TOPDMS.sql /topwalk/baseapp/mysql/bin/mysql -udms -ptRstOpwalkroot0823 TOPUIS < topsql/TOPUIS.sql #安装nginx cp -dpRf ./nginx /usr/local/ useradd nginx -m -d /usr/local/nginx/ -s /bin/bash chown -R nginx.nginx /usr/local/ngi
07-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值