>

事件总括 | performance_schema全方位介绍(四)

- 编辑:必发娱乐官网 -

事件总括 | performance_schema全方位介绍(四)

原标题:事件计算 | performance_schema全方位介绍(四)

原标题:数据库对象事件与品质总括 | performance_schema全方位介绍(五)

必发娱乐官网 1

必发娱乐官网 2

罗小波·沃趣科技(science and technology卡塔尔(英语:State of Qatar)尖端数据库手艺行家

上风姿罗曼蒂克篇 《事件总结 | performance_schema全方位介绍》详细介绍了performance_schema的事件总计表,但那么些计算数据粒度太粗,仅仅遵照事件的5大品类+客户、线程等维度举行归类总结,但神蹟大家需求从更加细粒度的维度举行分拣总结,比方:某些表的IO开支多少、锁开支多少、以至客商连接的有个别性子总计音信等。当时就需求查阅数据库对象事件计算表与品质总结表了。今天将辅导大家一同踏上星罗棋布第五篇的征程(全系共7个篇章卡塔尔(قطر‎,这期将为我们关怀备至授课performance_schema中目的事件总计表与质量总括表。上边,请跟随大家一同起来performance_schema系统的上学之旅吧~

出品:沃趣科学技术

友情提醒:下文中的总结表中山高校部字段含义与上大器晚成篇 《事件总结 | performance_schema全方位介绍》 中涉及的总计表字段含义雷同,下文中不再赘述。其余,由于有些总结表中的记录内容过长,限于篇幅会轻巧部分文件,如有须要请自行设置MySQL 5.7.11以上版本跟随本文举行同步操作查看。

IT从业多年,历任运营技术员、高端运营程序猿、运行COO、数据库程序员,曾参预版本宣布系统、轻量级监控系统、运营管理平台、数据库管理平台的宏图与编辑,熟知MySQL种类结构,Innodb存款和储蓄引擎,喜好专研开源技巧,追求面面俱到。

01

| 导语

数据库对象总结表

在上后生可畏篇《事件记录 | performance_schema全方位介绍"》中,大家详细介绍了performance_schema的风云记录表,恭喜大家在就学performance_schema的路上迈过了几个最困顿的时代。未来,相信大家早已比较清楚什么是事件了,但有的时候候我们无需了解每时每刻产生的每一条事件记录音讯, 例如:大家期望理解数据库运行以来生机勃勃段时间的风浪总结数据,那个时候就需求查阅事件总计表了。后天将辅导大家一同踏上三番五次串第四篇的征途(全系共7个篇章卡塔尔,在这里黄金时代期里,大家将为大家精细入微授课performance_schema中事件计算表。总括事件表分为5个品种,分别为等候事件、阶段事件、语句事件、事务事件、内部存款和储蓄器事件。上边,请跟随大家共同伊始performance_schema系统的学习之旅吧。

1.数量库表等第对象等待事件计算

| 等待事件总计表

据守数据库对象名称(库等第对象和表等第对象,如:库名和表名)实行总结的守候事件。根据OBJECT_TYPE、OBJECT_SCHEMA、OBJECT_NAME列举办分组,依照COUNT_STAR、xxx_TIMER_WAIT字段实行总括。富含一张objects_summary_global_by_type表。

performance_schema把等待事件计算表根据不一致的分组列(不相同纬度)对等候事件相关的多寡开展联谊(聚合总结数据列包含:事件时有发生次数,总等待时间,最小、最大、平均等待时间),注意:等待事件的募集功用有部分默许是剥夺的,供给的时候可以经过setup_instruments和setup_objects表动态开启,等待事件总计表饱含如下几张表:

我们先来寻访表中著录的计算音讯是何许样子的。

admin@localhost : performance_schema 06:17:11> show tables like '%events_waits_summary%';

admin@localhost : performance _schema 11:10:42> select * from objects_summary _global_by _type where SUM_TIMER_WAIT!=0G;

+-------------------------------------------------------+

*************************** 1. row ***************************

| Tables_in_performance_schema (%events_waits_summary%) |

OBJECT_TYPE: TABLE

+-------------------------------------------------------+

OBJECT_SCHEMA: xiaoboluo

| events_waits_summary_by_account_by_event_name |

OBJECT_NAME: test

| events_waits_summary_by_host_by_event_name |

COUNT_STAR: 56

| events_waits_summary_by_instance |

SUM _TIMER_WAIT: 195829830101250

| events_waits_summary_by_thread_by_event_name |

MIN _TIMER_WAIT: 2971125

| events_waits_summary_by_user_by_event_name |

AVG _TIMER_WAIT: 3496961251500

| events_waits_summary_global_by_event_name |

MAX _TIMER_WAIT: 121025235946125

+-------------------------------------------------------+

1 row in set (0.00 sec)

6rows inset ( 0. 00sec)

从表中的笔录内容能够看出,依照库xiaoboluo下的表test举办分组,总结了表相关的等候事件调用次数,总括、最小、平均、最大延迟时间新闻,利用那个音信,我们能够大要精晓InnoDB中表的拜候功效排名总括情形,一定水平上反应了对存款和储蓄引擎接口调用的功效。

大家先来探访那个表中记录的计算消息是何等样子的。

2.表I/O等待和锁等待事件总括

# events_waits_summary_by_account_by_event_name表

与objects_summary_global_by_type 表总结新闻相符,表I/O等待和锁等待事件计算音讯进而精细,细分了各个表的增加和删除改查的实行次数,总等待时间,最小、最大、平均等待时间,以致精细到有些索引的增加和删除改查的等候时间,表IO等待和锁等待事件instruments(wait/io/table/sql/handler和wait/lock/table/sql/handler )暗中认可开启,在setup_consumers表中无具体的呼应配置,暗许表IO等待和锁等待事件总括表中就能总括有关事件音讯。包括如下几张表:

root@localhost : performance _schema 11:07:09> select * from events_waits _summary_by _account_by _event_name limit 1G

admin@localhost : performance_schema 06:50:03> show tables like '%table%summary%';

*************************** 1. row ***************************

+------------------------------------------------+

USER: NULL

| Tables_in_performance_schema (%table%summary%) |

HOST: NULL

+------------------------------------------------+

EVENT _NAME: wait/synch/mutex/sql/TC_LOG _MMAP::LOCK_tc

| table_io_waits_summary_by_index_usage |# 依据每种索引举办总结的表I/O等待事件

COUNT_STAR: 0

| table_io_waits_summary_by_table |# 遵照每一个表进行总计的表I/O等待事件

SUM _TIMER_WAIT: 0

| table_lock_waits_summary_by_table |# 依据各种表张开总结的表锁等待事件

MIN _TIMER_WAIT: 0

+------------------------------------------------+

AVG _TIMER_WAIT: 0

3rows inset ( 0. 00sec)

MAX _TIMER_WAIT: 0

我们先来探视表中记录的计算新闻是怎么着体统的。

1 row in set (0.00 sec)

# table_io_waits_summary_by_index_usage表

# events_waits_summary_by_host_by_event_name表

admin@localhost : performance _schema 01:55:49> select * from table_io _waits_summary _by_index _usage where SUM_TIMER_WAIT!=0G;

root@localhost : performance _schema 11:07:14> select * from events_waits _summary_by _host_by _event_name limit 1G

*************************** 1. row ***************************

*************************** 1. row ***************************

OBJECT_TYPE: TABLE

HOST: NULL

OBJECT_SCHEMA: xiaoboluo

EVENT _NAME: wait/synch/mutex/sql/TC_LOG _MMAP::LOCK_tc

OBJECT_NAME: test

COUNT_STAR: 0

INDEX_NAME: PRIMARY

SUM _TIMER_WAIT: 0

COUNT_STAR: 1

MIN _TIMER_WAIT: 0

SUM _TIMER_WAIT: 56688392

AVG _TIMER_WAIT: 0

MIN _TIMER_WAIT: 56688392

MAX _TIMER_WAIT: 0

AVG _TIMER_WAIT: 56688392

1 row in set (0.00 sec)

MAX _TIMER_WAIT: 56688392

# events_waits_summary_by_instance表

COUNT_READ: 1

root@localhost : performance _schema 11:08:05> select * from events_waits _summary_by_instance limit 1G

SUM _TIMER_READ: 56688392

*************************** 1. row ***************************

MIN _TIMER_READ: 56688392

EVENT_NAME: wait/synch/mutex/mysys/THR_LOCK_heap

AVG _TIMER_READ: 56688392

OBJECT _INSTANCE_BEGIN: 32492032

MAX _TIMER_READ: 56688392

COUNT_STAR: 0

......

SUM _TIMER_WAIT: 0

1 row in set (0.00 sec)

MIN _TIMER_WAIT: 0

# table_io_waits_summary_by_table表

AVG _TIMER_WAIT: 0

admin@localhost : performance _schema 01:56:16> select * from table_io _waits_summary _by_table where SUM _TIMER_WAIT!=0G;

MAX _TIMER_WAIT: 0

*************************** 1. row ***************************

1 row in set (0.00 sec)

OBJECT_TYPE: TABLE

# events_waits_summary_by_thread_by_event_name表

OBJECT_SCHEMA: xiaoboluo

root@localhost : performance _schema 11:08:23> select * from events_waits _summary_by _thread_by _event_name limit 1G

OBJECT_NAME: test

*************************** 1. row ***************************

COUNT_STAR: 1

THREAD_ID: 1

............

EVENT _NAME: wait/synch/mutex/sql/TC_LOG _MMAP::LOCK_tc

1 row in set (0.00 sec)

COUNT_STAR: 0

# table_lock_waits_summary_by_table表

SUM _TIMER_WAIT: 0

admin@localhost : performance _schema 01:57:20> select * from table_lock _waits_summary _by_table where SUM _TIMER_WAIT!=0G;

MIN _TIMER_WAIT: 0

*************************** 1. row ***************************

AVG _TIMER_WAIT: 0

OBJECT_TYPE: TABLE

MAX _TIMER_WAIT: 0

OBJECT_SCHEMA: xiaoboluo

1 row in set (0.00 sec)

OBJECT_NAME: test

# events_waits_summary_by_user_by_event_name表

............

root@localhost : performance _schema 11:08:36> select * from events_waits _summary_by _user_by _event_name limit 1G

COUNT_READ_NORMAL: 0

*************************** 1. row ***************************

SUM_TIMER_READ_NORMAL: 0

USER: NULL

MIN_TIMER_READ_NORMAL: 0

EVENT _NAME: wait/synch/mutex/sql/TC_LOG _MMAP::LOCK_tc

AVG_TIMER_READ_NORMAL: 0

COUNT_STAR: 0

MAX_TIMER_READ_NORMAL: 0

SUM _TIMER_WAIT: 0

COUNT _READ_WITH _SHARED_LOCKS: 0

MIN _TIMER_WAIT: 0

SUM _TIMER_READ _WITH_SHARED_LOCKS: 0

AVG _TIMER_WAIT: 0

MIN _TIMER_READ _WITH_SHARED_LOCKS: 0

MAX _TIMER_WAIT: 0

AVG _TIMER_READ _WITH_SHARED_LOCKS: 0

1 row in set (0.00 sec)

MAX _TIMER_READ _WITH_SHARED_LOCKS: 0

# events_waits_summary_global_by_event_name表

......

root@localhost : performance _schema 11:08:53> select * from events_waits _summary_global _by_event_name limit 1G

1 row in set (0.00 sec)

*************************** 1. row ***************************

从地点表中的记录消息大家可以观察,table_io_waits_summary_by_index_usage表和table_io_waits_summary_by_table有着近乎的统计列,但table_io_waits_summary_by_table表是包罗全部表的增加和删除改查等待事件分类总括,table_io_waits_summary_by_index_usage区分了种种表的目录的增加和删除改查等待事件分类总计,而table_lock_waits_summary_by_table表总结纬度近似,但它是用于总括增加和删除改核对应的锁等待时间,实际不是IO等待时间,那一个表的分组和计算列含义请大家自行推而广之,这里不再赘言,上面针对那三张表做一些必须的辨证:

EVENT _NAME: wait/synch/mutex/sql/TC_LOG _MMAP::LOCK_tc

table_io_waits_summary_by_table表:

COUNT_STAR: 0

该表允许利用TRUNCATE TABLE语句。只将总结列重新复苏设置为零,并不是删除行。对该表推行truncate还只怕会隐式truncate table_io_waits_summary_by_index_usage表

SUM _TIMER_WAIT: 0

table_io_waits_summary_by_index_usage表:

MIN _TIMER_WAIT: 0

按照与table_io_waits_summary_by_table的分组列+INDEX_NAME列举办分组,INDEX_NAME好似下三种:

AVG _TIMER_WAIT: 0

·只要运用到了目录,则这里体现索引的名字,假诺为PKugaIMA奥迪Q5Y,则代表表I/O使用到了主键索引

MAX _TIMER_WAIT: 0

·倘诺值为NULL,则表示表I/O未有应用到目录

1 row in set (0.00 sec)

·假定是插入操作,则不也许利用到目录,当时的总结值是根据INDEX_NAME = NULL计算的

从下面表中的示范记录消息中,大家得以看看:

该表允许使用TRUNCATE TABLE语句。只将总括列重置为零,实际不是删除行。该表奉行truncate时也会隐式触发table_io_waits_summary_by_table表的truncate操作。其余利用DDL语句校正索引构造时,会促成该表的全部索引总结新闻被重新恢复生机设置

各样表都有各自的四个或多个分组列,以明确怎样聚合事件消息(全部表都有EVENT_NAME列,列值与setup_instruments表中NAME列值对应),如下:

table_lock_waits_summary_by_table表:

events_waits_summary_by_account_by_event_name表:按照列EVENT_NAME、USE奥德赛、HOST实行分组事件新闻

该表的分组列与table_io_waits_summary_by_table表相同

events_waits_summary_by_host_by_event_name表:按照列EVENT_NAME、HOST实行分组事件新闻

该表包括关于内部和表面锁的新闻:

events_waits_summary_by_instance表:按照列EVENT_NAME、OBJECT_INSTANCE_BEGIN进行分组事件音讯。假如叁个instruments(event_name卡塔尔创制有四个实例,则种种实例都富有唯生机勃勃的OBJECT_INSTANCE_BEGIN值,因而种种实例会开展单独分组

·其间锁对应SQL层中的锁。是经过调用thr_lock(卡塔尔国函数来贯彻的。(官方手册上说有三个OPERATION列来分别锁类型,该列有效值为:read normal、read with shared locks、read high priority、read no insert、write allow write、write concurrent insert、write delayed、write low priority、write normal。但在该表的定义上并从未看见该字段卡塔尔(قطر‎

events_waits_summary_by_thread_by_event_name表:按照列THREAD_ID、EVENT_NAME举行分组事件音讯

·外表锁对应存款和储蓄引擎层中的锁。通过调用handler::external_lock(卡塔尔(英语:State of Qatar)函数来得以完结。(官方手册上说有叁个OPERATION列来差距锁类型,该列有效值为:read external、write external。但在该表的概念上并从未见到该字段卡塔尔

events_waits_summary_by_user_by_event_name表:按照列EVENT_NAME、USELX570进行分组事件消息

该表允许选取TRUNCATE TABLE语句。只将总计列重新初始化为零,实际不是删除行。

events_waits_summary_global_by_event_name表:按照EVENT_NAME列进行分组事件新闻

3.文书I/O事件计算

全部表的计算列(数值型)都为如下多少个:

文件I/O事件总结表只记录等待事件中的IO事件(不分包table和socket子系列卡塔尔,文件I/O事件instruments暗中同意开启,在setup_consumers表中无具体的对应配置。它富含如下两张表:

COUNT_STAHighlander:事件被推行的数目。此值富含具备事件的试行次数,须要启用等待事件的instruments

admin@localhost : performance_schema 06:48:12> show tables like '%file_summary%';

SUM_TIMER_WAIT:总计给定计时事件的总等待时间。此值仅针对有计实坚决守护的事件instruments或开启了计时成效事件的instruments,即使有些事件的instruments不扶植计时要么还未开启计时功能,则该字段为NULL。其余xxx_TIMER_WAIT字段值相通

+-----------------------------------------------+

MIN_TIMER_WAIT:给定计时事件的微小等待时间

| Tables_in_performance_schema (%file_summary%) |

AVG_TIMER_WAIT:给定计时事件的平均等待时间

+-----------------------------------------------+

MAX_TIMER_WAIT:给定计时事件的最大等待时间

| file_summary_by_event_name |

PS:等待事件总计表允许选用TRUNCATE TABLE语句。

| file_summary_by_instance |

实践该语句时好似下行为:

+-----------------------------------------------+

对于未依据帐户、主机、客商聚焦的计算表,truncate语句会将总计列值重新初始化为零,并非去除行。

2rows inset ( 0. 00sec)

对此根据帐户、主机、客户聚焦的计算表,truncate语句会删除已早先连接的帐户,主机或顾客对应的行,并将其余有连接的行的计算列值重新复苏设置为零(实地衡量跟未根据帐号、主机、客商聚焦的统计表同样,只会被重新设置不会被删除)。

两张表中著录的内容很接近:

别的,依据帐户、主机、客商、线程聚合的各种等待事件总结表也许events_waits_summary_global_by_event_name表,就算依附的连接表(accounts、hosts、users表卡塔尔执行truncate时,那么信任的这几个表中的总计数据也会同时被隐式truncate 。

·file_summary_by_event_name:依据每种事件名称举办总结的文书IO等待事件

注意:那几个表只针对等候事件新闻实行总计,即含有setup_instruments表中的wait/%开头的搜集器+ idle空闲收集器,每一个等待事件在种种表中的总计记录行数必要看什么分组(举个例子:依照客商分组计算的表中,有稍许个活泼客商,表中就能够有稍许条相通搜集器的笔录),此外,总括计数器是还是不是见到成效还供给看setup_instruments表中相应的等候事件搜罗器是不是启用。

·file_summary_by_instance:遵照每种文件实例(对应现实的各样磁盘文件,举例:表sbtest1的表空间文件sbtest1.ibd卡塔尔举行总计的文件IO等待事件

| 阶段事件计算表

我们先来拜望表中著录的总计新闻是哪些样子的。

performance_schema把阶段事件计算表也如约与等待事件总结表相同的准则进行分类聚合,阶段事件也会有后生可畏对是暗许禁止使用的,生机勃勃部分是展开的,阶段事件计算表富含如下几张表:

# file_summary_by_event_name表

admin@localhost : performance_schema 06:23:02> show tables like '%events_stages_summary%';

admin@localhost : performance _schema 11:00:44> select * from file_summary _by_event _name where SUM_TIMER _WAIT !=0 and EVENT_NAME like '%innodb%' limit 1G;

+--------------------------------------------------------+

*************************** 1. row ***************************

| Tables_in_performance_schema (%events_stages_summary%) |

EVENT_NAME: wait/io/file/innodb/innodb_data_file

+--------------------------------------------------------+

COUNT_STAR: 802

| events_stages_summary_by_account_by_event_name |

SUM_TIMER_WAIT: 412754363625

| events_stages_summary_by_host_by_event_name |

MIN_TIMER_WAIT: 0

| events_stages_summary_by_thread_by_event_name |

AVG_TIMER_WAIT: 514656000

| events_stages_summary_by_user_by_event_name |

MAX_TIMER_WAIT: 9498247500

| events_stages_summary_global_by_event_name |

COUNT_READ: 577

+--------------------------------------------------------+

SUM_TIMER_READ: 305970952875

5rows inset ( 0. 00sec)

MIN_TIMER_READ: 15213375

我们先来走访那么些表中著录的总括信息是怎样子的。

AVG_TIMER_READ: 530278875

# events_stages_summary_by_account_by_event_name表

MAX_TIMER_READ: 9498247500

root@localhost : performance _schema 11:21:04> select * from events_stages _summary_by _account_by _event_name where USER is not null limit 1G

SUM _NUMBER_OF _BYTES_READ: 11567104

*************************** 1. row ***************************

......

USER: root

1 row in set (0.00 sec)

HOST: localhost

# file_summary_by_instance表

EVENT_NAME: stage/sql/After create

admin@localhost : performance _schema 11:01:23> select * from file_summary _by_instance where SUM _TIMER_WAIT!=0 and EVENT_NAME like '%innodb%' limit 1G;

COUNT_STAR: 0

*************************** 1. row ***************************

SUM _TIMER_WAIT: 0

FILE_NAME: /data/mysqldata1/innodb_ts/ibdata1

MIN _TIMER_WAIT: 0

EVENT_NAME: wait/io/file/innodb/innodb_data_file

AVG _TIMER_WAIT: 0

OBJECT _INSTANCE_BEGIN: 139882156936704

MAX _TIMER_WAIT: 0

COUNT_STAR: 33

1 row in set (0.01 sec)

............

# events_stages_summary_by_host_by_event_name表

1 row in set (0.00 sec)

root@localhost : performance _schema 11:29:27> select * from events_stages _summary_by _host_by _event_name where HOST is not null limit 1G

从上边表中的笔录音信大家得以看来:

*************************** 1. row ***************************

·各类文件I/O总计表都有二个或四个分组列,以注脚如何计算这几个事件新闻。那些表中的风浪名称来自setup_instruments表中的name字段:

HOST: localhost

* file_summary_by_event_name表:按照EVENT_NAME列进行分组 ;

EVENT_NAME: stage/sql/After create

* file_summary_by_instance表:有非常的FILE_NAME、OBJECT_INSTANCE_BEGIN列,按照FILE_NAME、EVENT_NAME列实行分组,与file_summary_by_event_name 表相比,file_summary_by_instance表多了FILE_NAME和OBJECT_INSTANCE_BEGIN字段,用于记录具体的磁盘文件有关音讯。

COUNT_STAR: 0

·每一个文件I/O事件总结表犹如下总括字段:

SUM _TIMER_WAIT: 0

* COUNT_STAR,SUM_TIMER_WAIT,MIN_TIMER_WAIT,AVG_TIMER_WAIT,MAX_TIMER_WAIT:那个列总括全数I/O操作数量和操作时间 ;

MIN _TIMER_WAIT: 0

* COUNT_READ,SUM_TIMER_READ,MIN_TIMER_READ,AVG_TIMER_READ,MAX_TIMER_READ,SUM_NUMBER_OF_BYTES_READ:那个列总计了富有文件读取操作,包蕴FGETS,FGETC,FREAD和READ系统调用,还蕴藏了那些I/O操作的多少字节数 ;

AVG _TIMER_WAIT: 0

* COUNT_WRITE,SUM_TIMER_WRITE,MIN_TIMER_WRITE,AVG_TIMER_WRITE,MAX_TIMER_WRITE,SUM_NUMBER_OF_BYTES_W福特ExplorerITE:这么些列总结了具备文件写操作,包含FPUTS,FPUTC,FPRubiconINTF,VFP奥迪Q7INTF,FW君越ITE和PWCRUISERITE系统调用,还蕴藏了那几个I/O操作的多少字节数 ;

MAX _TIMER_WAIT: 0

* COUNT_MISC,SUM_TIMER_MISC,MIN_TIMER_MISC,AVG_TIMER_MISC,MAX_TIMER_MISC:这么些列总结了装有其余文件I/O操作,包含CREATE,DELETE,OPEN,CLOSE,STREAM_OPEN,STREAM_CLOSE,SEEK,TELL,FLUSH,STAT,FSTAT,CHSIZE,RENAME和SYNC系统调用。注意:那一个文件I/O操作未有字节计数新闻。

1 row in set (0.00 sec)

文件I/O事件计算表允许行使TRUNCATE TABLE语句。但只将总计列重新初始化为零,并不是删除行。

# events_stages_summary_by_thread_by_event_name表

PS:MySQL server使用三种缓存才能通过缓存从文件中读取的音信来防止文件I/O操作。当然,倘诺内部存款和储蓄器缺乏时要么内存竞争相当的大时大概形成查询功用低下,此时你或者需求经过刷新缓存只怕重启server来让其数额通过文件I/O重返并不是透过缓存重返。

root@localhost : performance _schema 11:37:03> select * from events_stages _summary_by _thread_by _event_name where thread_id is not null limit 1G

4.套接字事件计算

*************************** 1. row ***************************

套接字事件总计了套接字的读写调用次数和发送选拔字节计数消息,socket事件instruments默许关闭,在setup_consumers表中无具体的相应配置,包蕴如下两张表:

THREAD_ID: 1

·socket_summary_by_instance:针对各种socket实例的具有 socket I/O操作,那个socket操作相关的操作次数、时间和发送采用字节音讯由wait/io/socket/* instruments发生。但当连接中断时,在该表中对应socket连接的新闻将要被剔除(这里的socket是指的当前活跃的连年创立的socket实例)

EVENT_NAME: stage/sql/After create

·socket_summary_by_event_name:针对各类socket I/O instruments,这么些socket操作相关的操作次数、时间和发送选拔字节音讯由wait/io/socket/* instruments发生(这里的socket是指的一时一刻活蹦活跳的接连成立的socket实例)

COUNT_STAR: 0

可透过如下语句查看:

SUM _TIMER_WAIT: 0

admin@localhost : performance_schema 06:53:42> show tables like '%socket%summary%';

MIN _TIMER_WAIT: 0

+-------------------------------------------------+

AVG _TIMER_WAIT: 0

| Tables_in_performance_schema (%socket%summary%) |

MAX _TIMER_WAIT: 0

+-------------------------------------------------+

1 row in set (0.01 sec)

| socket_summary_by_event_name |

# events_stages_summary_by_user_by_event_name表

| socket_summary_by_instance |

root@localhost : performance _schema 11:42:37> select * from events_stages _summary_by _user_by _event_name where user is not null limit 1G

+-------------------------------------------------+

*************************** 1. row ***************************

2rows inset ( 0. 00sec)

USER: root

我们先来拜望表中著录的总计音信是怎么样样子的。

EVENT_NAME: stage/sql/After create

# socket_summary_by_event_name表

COUNT_STAR: 0

root@localhost : performance _schema 04:44:00> select * from socket_summary _by_event_nameG;

SUM _TIMER_WAIT: 0

*************************** 1. row ***************************

MIN _TIMER_WAIT: 0

EVENT_NAME: wait/io/socket/sql/server_tcpip_socket

AVG _TIMER_WAIT: 0

COUNT_STAR: 2560

MAX _TIMER_WAIT: 0

SUM_TIMER_WAIT: 62379854922

1 row in set (0.00 sec)

MIN_TIMER_WAIT: 1905016

# events_stages_summary_global_by_event_name表

AVG_TIMER_WAIT: 24366870

root@localhost : performance _schema 11:43:03> select * from events_stages _summary_global _by_event_name limit 1G

MAX_TIMER_WAIT: 18446696808701862260

*************************** 1. row ***************************

COUNT_READ: 0

EVENT_NAME: stage/sql/After create

SUM_TIMER_READ: 0

COUNT_STAR: 0

MIN_TIMER_READ: 0

SUM _TIMER_WAIT: 0

AVG_TIMER_READ: 0

MIN _TIMER_WAIT: 0

MAX_TIMER_READ: 0

AVG _TIMER_WAIT: 0

必发娱乐官网,SUM _NUMBER_OF _BYTES_READ: 0

MAX _TIMER_WAIT: 0

......

1 row in set (0.00 sec)

*************************** 2. row ***************************

从上面表中的身体力行记录消息中,大家得以看看,同样与等待事件相仿,遵照顾客、主机、客户+主机、线程等纬度举办分组与总括的列,那一个列的含义与等待事件相同,这里不再赘述。

EVENT_NAME: wait/io/socket/sql/server_unix_socket

注意:这么些表只针对阶段事件新闻实行总计,即饱含setup_instruments表中的stage/%开端的搜罗器,各类阶段事件在各样表中的总括记录行数要求看哪样分组(比如:根据顾客分组总结的表中,某些许个活泼客商,表中就能够有多少条相同搜集器的笔录),此外,计猜测数器是不是见到效果还索要看setup_instruments表中相应的阶段事件收罗器是或不是启用。

COUNT_STAR: 24

PS:对那些表使用truncate语句,影响与等待事件雷同。

......

| 事务事件总括表

*************************** 3. row ***************************

performance_schema把作业事件总计表也如约与等待事件总计表肖似的准则举办分拣计算,事务事件instruments独有一个transaction,默许禁用,事务事件总计表犹如下几张表:

EVENT_NAME: wait/io/socket/sql/client_connection

admin@localhost : performance_schema 06:37:45> show tables like '%events_transactions_summary%';

COUNT_STAR: 213055844

+--------------------------------------------------------------+

......

| Tables_in_performance_schema (%events_transactions_summary%) |

3 rows in set (0.00 sec)

+--------------------------------------------------------------+

# socket_summary_by_instance表

| events_transactions_summary_by_account_by_event_name |

root@localhost : performance _schema 05:11:45> select * from socket_summary _by_instance where COUNT_STAR!=0G;

| events_transactions_summary_by_host_by_event_name |

*************************** 1. row ***************************

| events_transactions_summary_by_thread_by_event_name |

EVENT_NAME: wait/io/socket/sql/server_tcpip_socket

| events_transactions_summary_by_user_by_event_name |

OBJECT _INSTANCE_BEGIN: 2655350784

| events_transactions_summary_global_by_event_name |

......

+--------------------------------------------------------------+

*************************** 2. row ***************************

5rows inset ( 0. 00sec)

EVENT_NAME: wait/io/socket/sql/server_unix_socket

大家先来拜访这么些表中著录的总结音信是何许体统的(由于单行记录较长,这里只列出events_transactions_summary_by_account_by_event_name表中的示例数据,别的表的亲自过问数据省略掉意气风发部分肖似字段)。

OBJECT _INSTANCE_BEGIN: 2655351104

# events_transactions_summary_by_account_by_event_name表

......

root@localhost : performance _schema 01:19:07> select * from events_transactions _summary_by _account_by _event_name where COUNT_STAR!=0 limit 1G

*************************** 3. row ***************************

*************************** 1. row ***************************

EVENT_NAME: wait/io/socket/sql/client_connection

USER: root

OBJECT _INSTANCE_BEGIN: 2658003840

HOST: localhost

......

EVENT_NAME: transaction

*************************** 4. row ***************************

COUNT_STAR: 7

EVENT_NAME: wait/io/socket/sql/client_connection

SUM _TIMER_WAIT: 8649707000

OBJECT _INSTANCE_BEGIN: 2658004160

MIN _TIMER_WAIT: 57571000

......

AVG _TIMER_WAIT: 1235672000

4 rows in set (0.00 sec)

MAX _TIMER_WAIT: 2427645000

从上面表中的笔录音信大家得以看来(与公事I/O事件总结近似,两张表也分头根据socket事件类型计算与坚决守住socket instance进行总结)

COUNT _READ_WRITE: 6

·socket_summary_by_event_name表:按照EVENT_NAME列进行分组

SUM _TIMER_READ_WRITE: 8592136000

·socket_summary_by_instance表:按照EVENT_NAME(该列有效值为wait/io/socket/sql/client_connection、wait/io/socket/sql/server_tcpip_socket、wait/io/socket/sql/server_unix_socket:)、OBJECT_INSTANCE_BEGIN列实行分组

MIN _TIMER_READ_WRITE: 87193000

各类套接字总括表都包涵如下总结列:

AVG _TIMER_READ_WRITE: 1432022000

·COUNT_STAR,SUM_TIMER_WAIT,MIN_TIMER_WAIT,AVG_TIMER_WAIT,MAX_TIMER_WAIT:这么些列计算全数socket读写操作的次数和时间消息

MAX _TIMER_READ_WRITE: 2427645000

·COUNT_READ,SUM_TIMER_READ,MIN_TIMER_READ,AVG_TIMER_READ,MAX_TIMER_READ,SUM_NUMBER_OF_BYTES_READ:那些列计算全部选取操作(socket的RECV、RECVFROM、RECVMS类型操作,即以server为参照他事他说加以考查的socket读取数据的操作)相关的次数、时间、接纳字节数等新闻

COUNT _READ_ONLY: 1

·COUNT_WRITE,SUM_TIMER_WRITE,MIN_TIMER_WRITE,AVG_TIMER_WRITE,MAX_TIMER_WRITE,SUM_NUMBER_OF_BYTES_WPRADOITE:那么些列总括了具备发送操作(socket的SEND、SENDTO、SENDMSG类型操作,即以server为参照的socket写入数据的操作)相关的次数、时间、选用字节数等消息

SUM _TIMER_READ_ONLY: 57571000

·COUNT_MISC,SUM_TIMER_MISC,MIN_TIMER_MISC,AVG_TIMER_MISC,MAX_TIMER_MISC:那么些列计算了具有别的套接字操作,如socket的CONNECT、LISTEN,ACCEPT、CLOSE、SHUTDOWN类型操作。注意:那一个操作未有字节计数

MIN _TIMER_READ_ONLY: 57571000

套接字总结表允许使用TRUNCATE TABLE语句(除events_statements_summary_by_digest之外卡塔尔(英语:State of Qatar),只将计算列重新初始化为零,并非剔除行。

AVG _TIMER_READ_ONLY: 57571000

PS:socket总括表不会总计空闲事件生成的等候事件音讯,空闲事件的等候音讯是记录在等候事件总计表中开展计算的。

MAX _TIMER_READ_ONLY: 57571000

5.prepare语句实例总括表

1 row in set (0.00 sec)

performance_schema提供了指向性prepare语句的监督检查记录,并依据如下方法对表中的剧情开展保管。

# events_transactions_summary_by_host_by_event_name表

·prepare语句预编写翻译:COM_STMT_PREPARE或SQLCOM_PREPARE命令在server中创制三个prepare语句。假设语句检查测验成功,则会在prepared_statements_instances表中新扩充加生机勃勃行。假诺prepare语句不能够检查评定,则会追加Performance_schema_prepared_statements_lost状态变量的值。

root@localhost : performance _schema 01:25:13> select * from events_transactions _summary_by _host_by _event_name where COUNT_STAR!=0 limit 1G

·prepare语句实行:为已检查评定的prepare语句实例实施COM_STMT_EXECUTE或SQLCOM_PREPARE命令,同不经常候会更新prepare_statements_instances表中对应的行消息。

*************************** 1. row ***************************

·prepare语句淹未能源分配:对已检验的prepare语句实例奉行COM_STMT_CLOSE或SQLCOM_DEALLOCATE_PREPARE命令,同一时间将去除prepare_statements_instances表中对应的行消息。为了制止能源泄漏,请必须在prepare语句没有必要动用的时候实行此步骤释放财富。

HOST: localhost

作者们先来探视表中记录的总计音讯是何等体统的。

EVENT_NAME: transaction

admin@localhost : performance _schema 10:50:38> select * from prepared_statements_instancesG;

COUNT_STAR: 7

*************************** 1. row ***************************

......

OBJECT _INSTANCE_BEGIN: 139968890586816

1 row in set (0.00 sec)

STATEMENT_ID: 1

# events_transactions_summary_by_thread_by_event_name表

STATEMENT_NAME: stmt

root@localhost : performance _schema 01:25:27> select * from events_transactions _summary_by _thread_by _event_name where SUM _TIMER_WAIT!=0G

SQL_TEXT: SELECT 1

*************************** 1. row ***************************

OWNER_THREAD_ID: 48

THREAD_ID: 46

OWNER_EVENT_ID: 54

EVENT_NAME: transaction

OWNER_OBJECT_TYPE: NULL

COUNT_STAR: 7

OWNER_OBJECT_SCHEMA: NULL

......

OWNER_OBJECT_NAME: NULL

1 row in set (0.00 sec)

TIMER_PREPARE: 896167000

# events_transactions_summary_by_user_by_event_name表

COUNT_REPREPARE: 0

root@localhost : performance _schema 01:27:27> select * from events_transactions _summary_by _user_by _event_name where SUM _TIMER_WAIT!=0G

COUNT_EXECUTE: 0

*************************** 1. row ***************************

SUM_TIMER_EXECUTE: 0

USER: root

MIN_TIMER_EXECUTE: 0

EVENT_NAME: transaction

AVG_TIMER_EXECUTE: 0

COUNT_STAR: 7

MAX_TIMER_EXECUTE: 0

......

SUM_LOCK_TIME: 0

1 row in set (0.00 sec)

SUM_ERRORS: 0

# events_transactions_summary_global_by_event_name表

SUM_WARNINGS: 0

root@localhost : performance _schema 01:27:32> select * from events_transactions _summary_global _by_event _name where SUM_TIMER_WAIT!=0G

SUM_ROWS_AFFECTED: 0

*************************** 1. row ***************************

SUM_ROWS_SENT: 0

EVENT_NAME: transaction

......

COUNT_STAR: 7

1 row in set (0.00 sec)

......

prepared_statements_instances表字段含义如下:

1 row in set (0.00 sec)

·OBJECT_INSTANCE_BEGIN:prepare语句事件的instruments 实例内部存储器地址。

从地点表中的身体力行记录新闻中,大家能够看看,同样与等待事件相仿,依照客商、主机、客商+主机、线程等纬度实行分组与总计的列,那个列的含义与等待事件相符,这里不再赘言,但对于职业总计事件,针对读写事务和只读事务还独立做了总结(xx_READ_WRITE和xx_READ_ONLY列,只读事务须要设置只读事务变量transaction_read_only=on才会进展总括卡塔尔国。

·STATEMENT_ID:由server分配的语句内部ID。文本和二进制合同都选取该语句ID。

注意:那几个表只针对工作事件新闻进行计算,即包含且仅包涵setup_instruments表中的transaction搜集器,每一个事情事件在各类表中的总结记录行数供给看怎么分组(举例:根据客商分组计算的表中,有稍许个活泼顾客,表中就能够有微微条雷同搜集器的记录),别的,总结流速計是还是不是见效还索要看transaction搜罗器是或不是启用。

·STATEMENT_NAME:对于二进制合同的语句事件,此列值为NULL。对于文本公约的口舌事件,此列值是客商分配的外界语句名称。举例:PREPARE stmt FROM'SELECT 1';,语句名字为stmt。

作业聚合总结准则

·SQL_TEXT:prepare的言语文本,带“?”的代表是占位符标识,后续execute语句能够对该标志进行传参。

* 事务事件的征集不思忖隔绝品级,访谈情势或自动提交方式

·OWNER_THREAD_ID,OWNER_EVENT_ID:这个列表示创立prepare语句的线程ID和事件ID。

* 读写作业平常比只读事务占用更加的多财富,由这一件事务计算表满含了用于读写和只读事务的独门计算列

·OWNER_OBJECT_TYPE,OWNER_OBJECT_SCHEMA,OWNER_OBJECT_NAME:对于由客户端会话使用SQL语句直接开立的prepare语句,这个列值为NULL。对于由存款和储蓄程序创制的prepare语句,这么些列值呈现相关存款和储蓄程序的新闻。假如客户在存款和储蓄程序中忘记释放prepare语句,那么这一个列可用于查找这么些未释放的prepare对应的存款和储蓄程序,使用语句查询:SELECT OWNEHighlander_OBJECT_TYPE,OWNER_OBJECT_SCHEMA,OWNER_OBJECT_NAME,STATEMENT_NAME,SQL_TEXT FROM performance_schema.prepared_statemments_instances WHERE OWNER_OBJECT_TYPE IS NOT NULL;

* 事务厅占用的资源要求多少也或者会因职业隔断等级有所出入(举例:锁能源卡塔尔国。可是:每一个server只怕是采用同生机勃勃的隔绝品级,所以不独立提供隔开等第相关的总括列

·TIMER_PREPARE:试行prepare语句笔者消耗的岁月。

PS:对这么些表使用truncate语句,影响与等待事件相近。

· COUNT_REPREPARE:该行消息对应的prepare语句在里面被重新编写翻译的次数,重新编写翻译prepare语句之后,早先的连带总计音信就不可用了,因为那么些计算新闻是当做言语推行的一部分被会集到表中的,并非单独维护的。

| 语句事件总括表

·COUNT_EXECUTE,SUM_TIMER_EXECUTE,MIN_TIMER_EXECUTE,AVG_TIMER_EXECUTE,MAX_TIMER_EXECUTE:实践prepare语句时的相干计算数据。

performance_schema把语句事件总结表也如约与等待事件总结表相通的法规举行分类总括,语句事件instruments暗许全部敞开,所以,语句事件总计表中暗中同意会记录全数的言辞事件总括音信,言辞事件总计表包蕴如下几张表:

·SUM_xxx:其余的SUM_xxx早先的列与语句总计表中的新闻相像,语句计算表后续章节会详细介绍。

events_statements_summary_by_account_by_event_name:依据每一种帐户和言辞事件名称进行总计

允许施行TRUNCATE TABLE语句,不过TRUNCATE TABLE只是重新设置prepared_statements_instances表的总括新闻列,但是不会删除该表中的记录,该表中的记录会在prepare对象被销毁释放的时候自动删除。

events_statements_summary_by_digest:依据各类库品级对象和讲话事件的原始语句文本总计值(md5 hash字符串)实行总结,该总括值是依赖事件的原始语句文本举行简短(原始语句转变为基准语句卡塔尔(قطر‎,每行数据中的相关数值字段是统筹相仿计算值的总结结果。

PS:什么是prepare语句?prepare语句实在正是二个预编写翻译语句,先把SQL语句进行编写翻译,且能够设定参数占位符(举例:?符号),然后调用时经过顾客变量传入具体的参数值(叫做变量绑定),要是一个讲话需求反复实践而仅仅只是where条件分裂,那么使用prepare语句能够大大裁减硬深入分析的花销,prepare语句有多少个步骤,预编写翻译prepare语句,履行prepare语句,释放销毁prepare语句,prepare语句支持二种合同,前边早就关系过了,binary商讨平常是提需求应用程序的mysql c api接口形式访谈,而文本公约提供给通过顾客端连接到mysql server的议程访谈,上面以文件合同的措施访谈进行现身说法验证:

events_statements_summary_by_host_by_event_name:依照各种主机名和事件名称实行计算的Statement事件

·prepare步骤:语法PREPARE stmt_name FROM preparable_stmt,示例:PREPARE stmt FROM'SELECT 1'; 实施了该语句之后,在prepared_statements_instances表中就能够查询到一个prepare示例对象了;

events_statements_summary_by_program:根据每一个存款和储蓄程序(存款和储蓄进程和函数,触发器和事件)的事件名称举办总计的Statement事件

·execute步骤:语法EXECUTE stmt_name[USING @var_name [, @var_name] …],示例:execute stmt; 再次来到实行结果为1,当时在prepared_statements_instances表中的总结音信会开展更新;

events_statements_summary_by_thread_by_event_name:遵照每一种线程和事件名称进行总括的Statement事件

·DEALLOCATE PREPARE步骤:语法 {DEALLOCATE | DROP} PREPARE stmt_name,示例:drop prepare stmt; ,此时在prepared_statements_instances表中对应的prepare示例记录自动删除。

events_statements_summary_by_user_by_event_name:依照每一个客户名和事件名称进行总括的Statement事件

6.instance 统计表

events_statements_summary_global_by_event_name:依照种种事件名称举行总计的Statement事件

instance表记录了何等项目标靶子被检测。那一个表中著录了事件名称(提供搜聚功能的instruments名称)及其一些解释性的情况新闻(举个例子:file_instances表中的FILE_NAME文件名称和OPEN_COUNT文件张开次数),instance表首要犹如下多少个:

prepared_statements_instances:遵照各种prepare语句实例聚合的计算消息

·cond_instances:wait sync相关的condition对象实例;

可因而如下语句查看语句事件总结表:

·file_instances:文件对象实例;

admin@localhost : performance_schema 06:27:58> show tables like '%events_statements_summary%';

·mutex_instances:wait sync相关的Mutex对象实例;

+------------------------------------------------------------+

·rwlock_instances:wait sync相关的lock对象实例;

| Tables_in_performance_schema (%events_statements_summary%) |

·socket_instances:活跃接连实例。

+------------------------------------------------------------+

这么些表列出了等候事件中的sync子类事件相关的指标、文件、连接。此中wait sync相关的靶子类型有三种:cond、mutex、rwlock。每一种实例表都有一个EVENT_NAME或NAME列,用于显示与每行记录相关联的instruments名称。instruments名称可能有所多少个部分并摇身意气风发变档案的次序布局,详见"配置详细解释| performance_schema全方位介绍"。

| events_statements_summary_by_account_by_event_name |

mutex_instances.LOCKED_BY_THREAD_ID和rwlock_instances.WRITE_LOCKED_BY_THREAD_ID列对于逐个审查品质瓶颈或死锁难点至关主要。

| events_statements_summary_by_digest |

PS:对于mutexes、conditions和rwlocks,在运营时尽管允许改良配置,且布局能够改过成功,可是有风华正茂部分instruments不见效,供给在运维时配置才会生效,就算您品尝着使用一些采用处景来追踪锁音讯,你恐怕在此些instance表中不能够查询到对应的音信。

| events_statements_summary_by_host_by_event_name |

下直面这个表分别开展求证。

| events_statements_summary_by_program |

(1)cond_instances表

| events_statements_summary_by_thread_by_event_name |

cond_instances表列出了server实行condition instruments 时performance_schema所见的享有condition,condition表示在代码中一定事件时有产生时的一齐非随机信号机制,使得等待该条件的线程在该condition满意条件时能够过来职业。

| events_statements_summary_by_user_by_event_name |

·当三个线程正在等候某件事产生时,condition NAME列突显了线程正在守候什么condition(但该表中并不曾其余列来突显对应哪个线程等音讯),可是方今还一向不平素的秘籍来剖断某些线程或一些线程会诱致condition发生改动。

| events_statements_summary_global_by_event_name |

大家先来会见表中著录的总结音讯是怎样体统的。

+------------------------------------------------------------+

admin@localhost : performance_schema 02:50:02> select * from cond_instances limit 1;

7rows inset ( 0. 00sec)

+----------------------------------+-----------------------+

admin@localhost : performance_schema 06:28:48> show tables like '%prepare%';

| NAME |OBJECT_INSTANCE_BEGIN |

+------------------------------------------+

+----------------------------------+-----------------------+

| Tables_in_performance_schema (%prepare%) |

|wait/synch/cond/sql/COND_manager | 31903008 |

+------------------------------------------+

+----------------------------------+-----------------------+

| prepared_statements_instances |

1row inset ( 0. 00sec)

+------------------------------------------+

cond_instances表字段含义如下:

1row inset ( 0. 00sec)

· NAME:与condition相关联的instruments名称;

大家先来拜望那么些表中著录的总计音信是如何样子的(由于单行记录较长,这里只列出events_statements_summary_by_account_by_event_name 表中的示例数据,其他表的现身说法数据省略掉意气风发部分雷同字段)。

· OBJECT_INSTANCE_BEGIN:instruments condition的内部存储器地址;

# events_statements_summary_by_account_by_event_name表

·PS:cond_instances表不准使用TRUNCATE TABLE语句。

root@localhost : performance _schema 10:37:27> select * from events_statements _summary_by _account_by _event_name where COUNT_STAR!=0 limit 1G

(2)file_instances表

*************************** 1. row ***************************

file_instances表列出推行文书I/O instruments时performance_schema所见的有着文件。 借使磁盘上的文本未有展开,则不会在file_instances中著录。当文件从磁盘中去除时,它也会从file_instances表中删去相应的笔录。

USER: root

咱俩先来看看表中著录的总括新闻是什么样样子的。

HOST: localhost

admin@localhost : performance_schema 02:53:40> select * from file_instances where OPEN_COUNT> 0limit 1;

EVENT_NAME: statement/sql/select

+------------------------------------+--------------------------------------+------------+

COUNT_STAR: 53

| FILE_NAME |EVENT_NAME | OPEN_COUNT |

SUM_TIMER_WAIT: 234614735000

+------------------------------------+--------------------------------------+------------+

MIN_TIMER_WAIT: 72775000

| /data/mysqldata1/innodb_ts/ibdata1 |wait/io/file/innodb/innodb_data_file | 3 |

AVG_TIMER_WAIT: 4426693000

+------------------------------------+--------------------------------------+------------+

MAX_TIMER_WAIT: 80968744000

1row inset ( 0. 00sec)

SUM_LOCK_TIME: 26026000000

file_instances表字段含义如下:

SUM_ERRORS: 2

·FILE_NAME:磁盘文件名称;

本文由互联网发布,转载请注明来源:事件总括 | performance_schema全方位介绍(四)