Loading [MathJax]/jax/output/CommonHTML/fonts/TeX/AMS-Regular.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >等待事件统计视图 | 全方位认识 sys 系统库

等待事件统计视图 | 全方位认识 sys 系统库

作者头像
老叶茶馆
发布于 2020-12-15 03:00:17
发布于 2020-12-15 03:00:17
73300
代码可运行
举报
运行总次数:0
代码可运行

在上一篇《内存分配统计视图 | 全方位认识 sys 系统库》中,我们介绍了sys 系统库如何查询内存事件统计信息和buffer pool统计信息,本期的内容先给大家介绍按照等待事件统计相关的视图(注意不要和《按 file 分组统计视图|全方位认识 sys 系统库》介绍的内容搞混了,这篇中介绍的等待事件仅针对文件IO等待事件,而本篇介绍的是所有的等待事件)。下面请跟随我们一起开始 sys 系统库的系统学习之旅吧~

01

wait_classes_global_by_avg_latency,x$wait_classes_global_by_avg_latency

按照事件大类(等待事件名称层级中前三层组件组成的名称前缀)分组(如:wait/io/table、wait/io/file、wait/lock/table)的等待事件平均延迟时间(总IO延迟时间/总IOS)等统计信息,默认按照平均延迟时间(执行时间)降序排序。数据来源:events_waits_summary_global_by_event_name

  • 该视图会忽略空闲等待事件(idle事件)信息

下面我们看看使用该视图查询返回的结果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 不带x$前缀的视图
admin@localhost : sys 12:58:11> select * from wait_classes_global_by_avg_latency limit 3;
+--------------------+-------+---------------+-------------+-------------+-------------+
| event_class        | total | total_latency | min_latency | avg_latency | max_latency |
+--------------------+-------+---------------+-------------+-------------+-------------+
| wait/lock/metadata |    2 | 56.57 m      | 12.94 m    | 28.28 m    | 43.63 m    |
| wait/synch/cond    |  7980 | 4.37 h        | 0 ps        | 1.97 s      | 5.01 s      |
| wait/io/socket    | 28988 | 21.02 s      | 0 ps        | 725.29 us  | 103.18 ms  |
+--------------------+-------+---------------+-------------+-------------+-------------+
3 rows in set (0.05 sec)

# 带x$前缀的视图
admin@localhost : sys 12:58:22> select * from x$wait_classes_global_by_avg_latency limit 3;
+--------------------+-------+-------------------+-----------------+-----------------------+------------------+
| event_class        | total | total_latency    | min_latency    | avg_latency          | max_latency      |
+--------------------+-------+-------------------+-----------------+-----------------------+------------------+
| wait/lock/metadata |    2 |  3393932470401750 | 776378395041375 | 1696966235200875.0000 | 2617554075360375 |
| wait/synch/cond    |  7980 | 15739342570225500 |              0 |    1972348693010.7143 |    5006888904375 |
| wait/io/socket    | 28990 |    21024710924250 |              0 |        725240114.6689 |    103181011500 |
+--------------------+-------+-------------------+-----------------+-----------------------+------------------+
3 rows in set (0.02 sec)

视图字段含义如下:

  • event_class:事件类别,事件名称层级中前三层组件组成的名称前缀,如'wait/io/file/sql/slow_log',截取后保留'wait/io/file' 字符串作为事件类别
  • total:对应事件大类的事件总次数
  • total_latency:对应事件大类的事件总延迟时间(执行时间)
  • min_latency:对应事件大类的单次事件最小延迟时间(执行时间)
  • avg_latency:对应事件大类中,每个事件的平均延迟时间(执行时间)
  • max_latency:对应事件大类的单次事件在最大延迟时间(执行时间)

02

wait_classes_global_by_latency,x$wait_classes_global_by_latency

按照事件大类(等待事件名称前三层前缀)分组(如:wait/io/table、wait/io/file、wait/lock/table)的等待事件平均延迟时间等统计信息,默认情况下按照总延迟时间(执行时间)降序排序。数据来源:events_waits_summary_global_by_event_name

下面我们看看使用该视图查询返回的结果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 不带x$前缀的视图
admin@localhost : sys 12:58:26> select * from wait_classes_global_by_latency limit 3;
+--------------------+----------+---------------+-------------+-------------+-------------+
| event_class        | total    | total_latency | min_latency | avg_latency | max_latency |
+--------------------+----------+---------------+-------------+-------------+-------------+
| wait/synch/cond    |    7983 | 4.38 h        | 0 ps        | 1.97 s      | 5.01 s      |
| wait/lock/metadata |        2 | 56.57 m      | 12.94 m    | 28.28 m    | 43.63 m    |
| wait/io/table      | 16096791 | 4.59 m        | 12.03 us    | 17.11 us    | 2.02 m      |
+--------------------+----------+---------------+-------------+-------------+-------------+
3 rows in set (0.02 sec)

# 带x$前缀的视图
admin@localhost : sys 12:58:40> select * from x$wait_classes_global_by_latency limit 3;
+--------------------+----------+-------------------+-----------------+-----------------------+------------------+
| event_class        | total    | total_latency    | min_latency    | avg_latency          | max_latency      |
+--------------------+----------+-------------------+-----------------+-----------------------+------------------+
| wait/synch/cond    |    7984 | 15759344050722375 |              0 |    1973865737815.9287 |    5006888904375 |
| wait/lock/metadata |        2 |  3393932470401750 | 776378395041375 | 1696966235200875.0000 | 2617554075360375 |
| wait/io/table      | 16096791 |  275441586767625 |        12026625 |        17111583.7168 |  121243803313125 |
+--------------------+----------+-------------------+-----------------+-----------------------+------------------+
3 rows in set (0.02 sec)

视图字段含义如下:

  • 该视图字段含义和wait_classes_global_by_avg_latency,x$wait_classes_global_by_avg_latency 视图字段含义相同,只是排序字段不同而已

03

waits_by_host_by_latency,x$waits_by_host_by_latency

按照主机和事件名称分组的等待事件统计信息,默认情况下按照主机名和总的等待事件延迟时间降序排序,数据来源:events_waits_summary_by_host_by_event_name

  • 该视图忽略空闲等待事件(idle事件)信息

下面我们看看使用该视图查询返回的结果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 不带x$前缀的视图
admin@localhost : sys 12:58:43> select * from waits_by_host_by_latency limit 3;
+-------------+----------------------------------------------+-------+---------------+-------------+-------------+
| host        | event                                        | total | total_latency | avg_latency | max_latency |
+-------------+----------------------------------------------+-------+---------------+-------------+-------------+
| 10.10.20.14 | wait/io/socket/sql/client_connection        | 24568 | 20.53 s      | 835.48 us  | 70.46 ms    |
| 10.10.20.14 | wait/synch/mutex/innodb/trx_pool_mutex      |  2326 | 14.59 s      | 6.27 ms    | 215.63 ms  |
| 10.10.20.14 | wait/synch/cond/sql/MYSQL_BIN_LOG::COND_done |  1707 | 13.74 s      | 8.05 ms    | 43.33 ms    |
+-------------+----------------------------------------------+-------+---------------+-------------+-------------+
3 rows in set (0.00 sec)

# 带x$前缀的视图
admin@localhost : sys 12:59:04> select * from x$waits_by_host_by_latency limit 3;
+-------------+----------------------------------------------+-------+----------------+-------------+--------------+
| host        | event                                        | total | total_latency  | avg_latency | max_latency  |
+-------------+----------------------------------------------+-------+----------------+-------------+--------------+
| 10.10.20.14 | wait/io/socket/sql/client_connection        | 24568 | 20526083640375 |  835480125 |  70457480625 |
| 10.10.20.14 | wait/synch/mutex/innodb/trx_pool_mutex      |  2326 | 14586650782125 |  6271131000 | 215632752375 |
| 10.10.20.14 | wait/synch/cond/sql/MYSQL_BIN_LOG::COND_done |  1707 | 13737760876125 |  8047897125 |  43332152250 |
+-------------+----------------------------------------------+-------+----------------+-------------+--------------+
3 rows in set (0.01 sec)

视图字段含义如下:

  • host:发起连接的主机名
  • event:等待事件名称
  • total:对应主机发生的等待事件总次数
  • total_latency:对应主机的等待事件总延迟时间
  • avg_latency:对应主机的等待事件的平均延迟时间
  • max_latency:对应主机的单次等待事件的最大延迟时间

04

waits_by_user_by_latency,x$waits_by_user_by_latency

按照用户和事件名称分组的等待事件统计信息,默认情况下按照用户名和总的等待事件延迟事件降序排序,数据来源:events_waits_summary_by_user_by_event_name

  • 该视图忽略空闲等待事件(idle事件)信息

下面我们看看使用该视图查询返回的结果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 不带x$前缀的视图
admin@localhost : sys 12:59:07> select * from waits_by_user_by_latency limit 3;
+-------+---------------------------------------------------+----------+---------------+-------------+-------------+
| user  | event                                            | total    | total_latency | avg_latency | max_latency |
+-------+---------------------------------------------------+----------+---------------+-------------+-------------+
| admin | wait/lock/metadata/sql/mdl                        |        2 | 56.57 m      | 28.28 m    | 43.63 m    |
| admin | wait/synch/cond/sql/MDL_context::COND_wait_status |    3395 | 56.56 m      | 999.66 ms  | 1.00 s      |
| admin | wait/io/table/sql/handler                        | 16096791 | 4.59 m        | 17.11 us    | 2.02 m      |
+-------+---------------------------------------------------+----------+---------------+-------------+-------------+
3 rows in set (0.01 sec)

# 带x$前缀的视图
admin@localhost : sys 12:59:22> select * from x$waits_by_user_by_latency limit 3;
+-------+---------------------------------------------------+----------+------------------+------------------+------------------+
| user  | event                                            | total    | total_latency    | avg_latency      | max_latency      |
+-------+---------------------------------------------------+----------+------------------+------------------+------------------+
| admin | wait/lock/metadata/sql/mdl                        |        2 | 3393932470401750 | 1696966235200875 | 2617554075360375 |
| admin | wait/synch/cond/sql/MDL_context::COND_wait_status |    3395 | 3393839154564375 |    999658071750 |    1004173431750 |
| admin | wait/io/table/sql/handler                        | 16096791 |  275441586767625 |        17111250 |  121243803313125 |
+-------+---------------------------------------------------+----------+------------------+------------------+------------------+
3 rows in set (0.01 sec)

视图字段含义如下:

  • user:与该连接关联的用户名
  • 其他字段与waits_by_host_by_latency,xwaits_by_user_by_latency视图是按照用户名和事件名称分组

05

waits_global_by_latency,x$waits_global_by_latency

按照事件名称分组的等待事件统计信息,默认按照等待事件总延迟时间降序排序。数据来源:events_waits_summary_global_by_event_name

  • 该视图忽略空闲等待事件(idle事件)信息

下面我们看看使用该视图查询返回的结果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 不带x$前缀的视图
admin@localhost : sys 12:59:25> select * from waits_global_by_latency limit 3;
+---------------------------------------------------+-------+---------------+-------------+-------------+
| events                                            | total | total_latency | avg_latency | max_latency |
+---------------------------------------------------+-------+---------------+-------------+-------------+
| wait/synch/cond/sql/MYSQL_BIN_LOG::update_cond    |  2891 | 3.45 h        | 4.29 s      | 5.01 s      |
| wait/lock/metadata/sql/mdl                        |    2 | 56.57 m      | 28.28 m    | 43.63 m    |
| wait/synch/cond/sql/MDL_context::COND_wait_status |  3395 | 56.56 m      | 999.66 ms  | 1.00 s      |
+---------------------------------------------------+-------+---------------+-------------+-------------+
3 rows in set (0.02 sec)

# 带x$前缀的视图
admin@localhost : sys 12:59:40> select * from x$waits_global_by_latency limit 3;
+---------------------------------------------------+-------+-------------------+------------------+------------------+
| events                                            | total | total_latency    | avg_latency      | max_latency      |
+---------------------------------------------------+-------+-------------------+------------------+------------------+
| wait/synch/cond/sql/MYSQL_BIN_LOG::update_cond    |  2892 | 12411771548807250 |    4291760563125 |    5006888904375 |
| wait/lock/metadata/sql/mdl                        |    2 |  3393932470401750 | 1696966235200875 | 2617554075360375 |
| wait/synch/cond/sql/MDL_context::COND_wait_status |  3395 |  3393839154564375 |    999658071750 |    1004173431750 |
+---------------------------------------------------+-------+-------------------+------------------+------------------+
3 rows in set (0.02 sec)

视图字段含义如下:

  • events:等待事件名称
  • 其他字段含义和waits_by_host_by_latency,xwaits_global_by_latency视图只按照事件名称分组

本期内容就介绍到这里,本期内容参考链接如下:

https://dev.mysql.com/doc/refman/5.7/en/sys-waits-global-by-latency.html

https://dev.mysql.com/doc/refman/5.7/en/sys-wait-classes-global-by-latency.html

https://dev.mysql.com/doc/refman/5.7/en/sys-wait-classes-global-by-avg-latency.html

https://dev.mysql.com/doc/refman/5.7/en/sys-waits-by-host-by-latency.html

https://dev.mysql.com/doc/refman/5.7/en/sys-waits-by-user-by-latency.html

"翻过这座山,你就可以看到一片海!"。坚持阅读我们的"全方位认识 sys 系统库"系列文章分享,你就可以系统地学完它。谢谢你的阅读,我们下期不见不散!

| 作者简介

罗小波·数据库技术专家

《千金良方——MySQL性能优化金字塔法则》、《数据生态:MySQL复制技术与生产实践》作者之一。熟悉MySQL体系结构,擅长数据库的整体调优,喜好专研开源技术,并热衷于开源技术的推广,在线上线下做过多次公开的数据库专题分享,发表过近100篇数据库相关的研究文章。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老叶茶馆 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
[PYTHON]python 基础笔记(
尽管这是一个简单的问题,但是问题本身并没有给我们足够的信息来解决它。进一步的分析是必需的。例如,我们如何确定该备份哪些文件?备份保存在哪里?我们怎么样存储备份?
py3study
2020/01/14
6720
python---备份目录和文件
1.需要备份的文件和目录由一个列表指定。 2.备份应该保存在主备份目录中。 3.文件备份成一个tar.gz文件。 4.zip存档的名称是当前的日期和时间。 5.我们使用标准的tar.gz命令.
py3study
2020/01/06
8280
从0开始的Python学习013编写一个Python脚本
通过之前的学习我们已经了解了Python的很多基础运用了,现在我们尝试着做一个有使用价值的小脚本。
Happy、Liu
2019/04/24
8970
从0开始的Python学习013编写一个Python脚本
python备份脚本解析
5)source 可以修改为想备份的目录,因为备份目录一般不经常变动,所以这里写死了
py3study
2020/01/09
6150
python常用的备份脚本
4)source 可以修改为想备份的目录,因为备份目录一般不经常变动,所以这里写死了
py3study
2020/01/07
1.1K0
利用Python进行文件的自动备份(第三版和第四版)
# 利用python进行文件的自动备份(第三版和第四版) # 代码 import os import time ''' 第三版和第四版差别不大整合在一起,用户注释的内容可以添加到文件名中来实现 ''' source = [r'E:\aaa.txt'] target_dir = 'E:\\Backup\\' if not os.path.exists(target_dir): os.mkdir(target_dir) # 子目录名称 today = target_dir + os.sep + t
benym
2022/07/14
5830
Python 学习笔记: 备份工具
1 #!/usr/bin/python  2 #filename:backup_ver3.py  3 import os  4 import time  5   6 source=['/media/Work/WorkSpaces/gooapp','/media/Work/WorkSpaces/RsaTool']  7 target_dir='/media/Work/backup/'  8 today = target_dir + time.strftime('%Y%m%d')  9 now = time.s
用户3135539
2018/09/12
4330
Python自动化备份系统及网站
随着目前IT迅猛的发展,自动化运维对于Linux运维人员也越来越重要,传统的运维方式靠大量的人力,现在也逐渐转向自动化运维,我们常见的跟自动化有关的软件有哪些呢。
py3study
2020/01/07
9070
python脚本备份
#!/usr/bin/python #encodeing:utf-8 import os import time import string #需要备份的目录 source = ['/usr/local/nagios','/var/www/html/cacti'] #存放备份的路径 target_dir = '/data/backup/nagios&cacti' #目录日期 today = target_dir + time.strftime('%Y%m%d') #当前时间 now = time.strft
py3study
2020/01/10
6800
利用Python进行文件的自动备份(第二版)
# 利用python进行文件的自动备份(第二版) # 代码 import os import time ''' 第二版是第一版的改进, 启用一种更好的文件命名机制——使用时间作为文件名,存储在以当前时间为名字的文件夹中,这一文件夹则照常存储在主备份目录下。 ''' # 例如在 Windows 下: source = [r'E:\aaa.txt'] # 在这里要注意到我们必须在字符串中使用双引号 # 用以括起其中包含空格的名称。 # 2. 备份文件必须存储在一个 # 主备份目录中 # 例如在 Windo
benym
2022/07/14
4760
Notes for python (2)
#!/usr/bin/python # Filename: using_tuple.py zoo = ('wolf', 'elephant', 'penguin') print 'Number of animals in the zoo is', len(zoo) new_zoo = ('monkey', 'dolphin', zoo) print 'Number of animals in the new zoo is', len(new_zoo) print 'All animals in new zoo are', new_zoo print 'Animals brought from old zoo are', new_zoo[2] print 'Last animal brought from old zoo is', new_zoo[2][2]
py3study
2020/01/13
6420
利用Python进行文件的自动备份
os.system 函数的命令,这一函数可以使命令像是从系统中运行的。也就是说,从 shell 中运行的——如果运行成功,它将返回 0 ,如果运行失败,将返回一个错误代码。
benym
2022/07/14
8060
python语言实现postgresql
today = backup_path + time.strftime('%Y-%m-%d')
py3study
2020/01/09
5680
用python备份文件
光说不练假把式,用小脚本学习Python。 一个简单的备份脚本。 #!/usr/bin/env python3 #-*- coding:utf-8 -*- #for backup import os import time #需要备份的目录 source = ['/var/log/history/','/var/log/httpd/'] #保存备份的目录 target_dir = '/tmp/' today_dir = target_dir + time.strftime('%Y%m%d') time_d
py3study
2020/01/14
1.4K0
python备份mysql脚本
今天简单的写了个python的mysql备份脚本,其实也不是很难呀。比shell简洁了很多!
py3study
2020/01/08
9920
python 脚本实现备份文件
''' 功能:备份文件 版本:1.0 作者:白 ''' import  os,time,sys d_dir = '/data/backup/' d_file = 'system_bak.tar.gz' s_dir = ['/etc','/boot','/var/www/html'] date = time.strftime('%Y%m%d') r_dir = d_dir + date + '/' r_name = r_dir + d_file def all_bak():     print('Backup
py3study
2020/01/08
1.2K0
python备份目录脚本
#!/usr/bin/env python #backup app python script. import os import time import sys
py3study
2020/01/10
9120
Python运维脚本:提高工作效率
📌 猫头虎博主回归! 在日常的运维工作中,自动化是提高效率的关键。Python,作为一种强大且易于上手的编程语言,已经成为许多运维工程师的首选工具。在本文中,我将为你展示如何使用Python编写实用的运维脚本,从基础任务自动化到复杂系统管理,一切都为了提高你的工作效率。 以确保每位渴望提高运维效率的工程师都能找到这里。猫头虎与你一同,探索Python运维的神奇之旅!
猫头虎
2024/04/09
5260
Python学习笔记四(Python
Python os模块提供了一个统一的操作系统接口函数,通过python os模块可以实现对系统本身的命令,文件,目录进行操作,官方参考文档( http://docs.python.org/library/os)。 1)os.sep 可以取代操作系统特定的路径分割符(在Linux、Unix下它是'/',在Windows下它是'\\',而在Mac OS下它是':')。
py3study
2020/01/10
3570
Python:实现文件归档
实现功能: 将E:\123文件备份至E:\backup 文件夹下,以当前的日期为子目录存放备份后的文件 #! /usr/bin/python #Filename:backup.py #功能说明:备份文件,以当前日期为子目录存放备份后的文件 import os import time #要备份的目录,可在此列表中增加 source = [r'E:\123'] #备份文件存放的目录 target_dir = 'E:\\backup\\' #取当前时间为备份子目录名 today = targ
IT架构圈
2018/06/01
9240
相关推荐
[PYTHON]python 基础笔记(
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档