ca888亚洲城娱乐:事件统计,关于数据库对象的扩展属性

原标题:数据库对象事件与性格总计 | performance_schema全方位介绍(五)

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

原标题:事件记录 | performance_schema全方位介绍(三)

今日有人问有没有法子查看表的诠释,或询问所有表的诠释。那里所说的表或表字段等的注脚,其实是数据库对象的增加属性。在MSSQL中,支持把一些注释性的始末放到数据库或数据库对象中,增强可读性,有助于以后的军事管制和保安工作。增加属性的情节可以透过SSMS添加、修改或删除,也足以因而系统视图查询,通过举办相关的积存进程来爱戴。

ca888亚洲城娱乐 1

ca888亚洲城娱乐 2

ca888亚洲城娱乐 3

创制一张测试表:

上一篇 《事件总括 |
performance_schema全方位介绍》详细介绍了performance_schema的轩然大波计算表,但那么些统计数据粒度太粗,仅仅按照事件的5大类型+用户、线程等维度进行分拣计算,但偶尔我们须求从更细粒度的维度举行归类统计,例如:某个表的IO开支多少、锁开销多少、以及用户连接的一些质量计算音信等。此时就必要查阅数据库对象事件总括表与质量总计表了。后天将引导大家一同踏上铺天盖地第五篇的征途(全系共7个篇章),本期将为我们无微不至授课performance_schema中目的事件总计表与本性总计表。上面,请跟随大家一同起来performance_schema系统的读书之旅吧~

罗小波·沃趣科学技术尖端数据库技术专家

导语

IF OBJECT_ID(N'T8') IS NOT NULL
BEGIN
    DROP TABLE T8
END
GO

CREATE TABLE T8 (
    id INT NOT NULL,
    name NVARCHAR(100)
)
GO

友谊提示:下文中的总括表中多数字段含义与上一篇
《事件计算 | performance_schema全方位介绍》
中涉嫌的计算表字段含义相同,下文中不再赘述。别的,由于局地总计表中的笔录内容过长,限于篇幅会简单部分文件,如有必要请自行设置MySQL
5.7.11以上版本跟随本文进行同步操作查看。

产品:沃趣科技(science and technology)

在上一篇 《配置详解 |
performance_schema全方位介绍》中,大家详细介绍了performance_schema的配置表,坚韧不拔读完的是真爱,也恭喜我们翻过了一座火焰山。相信有不少人读完事后,已经按捺不住的想要严阵以待了,明天将引导大家一同踏上密密麻麻第三篇的征途(全系共6个篇章),在这一期里,我们将为大家无微不至授课performance_schema中事件原本记录表。上面,请随行我们共同发轫performance_schema系统的学习之旅吧。

code-1

01

IT从业多年,历任运维工程师、高级运维工程师、运维首席执行官、数据库工程师,曾涉足版本公布系列、轻量级监控系统、运维管理平台、数据库管理平台的规划与编制,纯熟MySQL种类布局,Innodb存储引擎,喜好专研开源技术,追求完美。

等候事件表

 

数据库对象计算表

| 导语

普普通通,大家在碰到品质瓶颈时,如若此外的法子难以找出品质瓶颈的时候(例如:硬件负载不高、SQL优化和库表结构优化都不便见效的时候),大家日常必要看重等待事件来进展解析,找出在MySQL
Server内部,到底数据库响应慢是慢在哪个地方。

添加表的扩充属性:在Object Explorer中找到新建的表,右键采用属性。

1.多少库表级别对象等待事件总括

在上一篇《事件记录 |
performance_schema全方位介绍”》中,大家详细介绍了performance_schema的轩然大波记录表,恭喜大家在就学performance_schema的路上度过了多个最困顿的时期。现在,相信我们早就比较清楚什么是事件了,但偶尔大家不需求领会每时每刻爆发的每一条事件记录音讯,
例如:我们愿意了然数据库运行以来一段时间的轩然大波计算数据,那一个时候就需求查阅事件计算表了。明天将引导我们一齐踏上密密麻麻第四篇的征途(全系共7个篇章),在这一期里,大家将为大家无微不至授课performance_schema中事件总括表。总计事件表分为5个门类,分别为等候事件、阶段事件、语句事件、事务事件、内存事件。上边,请随行大家一块起来performance_schema系统的求学之旅吧。

等候事件记录表包罗三张表,那么些表记录了现阶段与近期在MySQL实例中发出了如何等待事件,时间消耗是稍稍。

ca888亚洲城娱乐 4

依照数据库对象名称(库级别对象和表级别对象,如:库名和表名)举办总括的等候事件。按照OBJECT_TYPE、OBJECT_SCHEMA、OBJECT_NAME列举办分组,根据COUNT_STAR、xxx_TIMER_WAIT字段举行计算。蕴涵一张objects_summary_global_by_type表。

| 等待事件计算表

  • events_waits_current表:记录当前正在履行的守候事件的,各个线程只记录1行笔录
  • events_waits_history表:记录已经履行完的近年的等候事件历史,默许逐个线程只记录10行记录
  • events_waits_history_long表:记录已经进行完的近年的等待事件历史,默许所有线程的总记录行数为10000行

 figure-1

俺们先来探视表中著录的统计新闻是什么体统的。

performance_schema把等待事件计算表根据差别的分组列(差距纬度)对等候事件有关的数量开展联谊(聚合总括数据列包涵:事件暴发次数,总等待时间,最小、最大、平均等待时间),注意:等待事件的搜集功效有局地默许是禁用的,需求的时候可以经过setup_instruments和setup_objects表动态开启,等待事件计算表包蕴如下几张表:

要留心:等待事件相关配置中,setup_instruments表中多方面的等待事件instruments都不曾拉开(IO相关的等候事件instruments默许大多数已开启),setup_consumers表中waits相关的consumers配置默许没有开启

 

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

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

events_waits_current 表

点击伸张属性,即可举行添加、修改和删除。

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

+——————————————————-+

events_waits_current表包蕴当前的守候事件新闻,每种线程只突显一行如今监视的等候事件的目前情况

ca888亚洲城娱乐 5

OBJECT_TYPE: TABLE

| Tables_in_performance_schema (%events_waits_summary%) |

在享有包括等待事件行的表中,events_waits_current表是最基础的数额来源。其余包括等待事件数据表在逻辑上是缘于events_waits_current表中的当前事件音信(汇总表除外)。例如,events_waits_history和events_waits_history_long表中的数据是events_waits_current表数据的一个小集合汇总(具体存放多少行数据集合有个别的变量支配)

 figure-2

OBJECT_SCHEMA: xiaoboluo

+——————————————————-+

表记录内容示例(那是一个举办select
sleep(100);语句的线程等待事件信息)

 

OBJECT_NAME: test

| events_waits_summary_by_account_by_event_name |

root@localhost : performance _schema 12:15:03> select * from
events_waits _current where EVENT_NAME=’wait/synch/cond/sql/Item
_func_sleep::cond’G;

添加字段的扩充属性。

COUNT_STAR: 56

| events_waits_summary_by_host_by_event_name |

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

ca888亚洲城娱乐 6

SUM _TIMER_WAIT: 195829830101250

| events_waits_summary_by_instance |

THREAD_ID: 46

 figure-3

MIN _TIMER_WAIT: 2971125

| events_waits_summary_by_thread_by_event_name |

EVENT_ID: 140

 

ca888亚洲城娱乐:事件统计,关于数据库对象的扩展属性。AVG _TIMER_WAIT: 3496961251500

| events_waits_summary_by_user_by_event_name |

END_EVENT_ID: NULL

字段属性——描述,添加注释内容。

MAX _TIMER_WAIT: 121025235946125

| events_waits_summary_global_by_event_name |

EVENT_NAME: wait/synch/cond/sql/Item_func_sleep::cond

ca888亚洲城娱乐 7

1 row in set (0.00 sec)

+——————————————————-+

SOURCE: item_func.cc:5261

 figure-4

从表中的笔录内容能够看来,根据库xiaoboluo下的表test举行分组,总括了表相关的等待事件调用次数,计算、最小、平均、最大延迟时间音信,利用那几个音信,大家得以大概了然InnoDB中表的访问功能排行计算景况,一定水平上影响了对存储引擎接口调用的频率。

6rows inset ( 0. 00sec)

TIMER_START: 14128809267002592

 

2.表I/O等待和锁等待事件计算

大家先来探视那么些表中记录的计算新闻是什么体统的。

TIMER_END: 14132636159944419

 

与objects_summary_global_by_type
表计算新闻类似,表I/O等待和锁等待事件总计新闻进而精致,细分了每一个表的增删改查的履行次数,总等待时间,最小、最大、平均等待时间,甚至精细到某个索引的增删改查的等候时间,表IO等待和锁等待事件instruments(wait/io/table/sql/handler和wait/lock/table/sql/handler
)默许开启,在setup_consumers表中无具体的相应配置,默许表IO等待和锁等待事件总括表中就会统计有关事件音讯。包罗如下几张表:

# events_waits_summary_by_account_by_event_name表

TIMER_WAIT: 3826892941827

保存后,即可到位对字段扩充属性的充足。可因而系统视图sys.extended_properties进行询问。

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

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

SPINS: NULL

SELECT *,OBJECT_NAME(major_id) AS obj_name FROM sys.extended_properties

+————————————————+

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

OBJECT_SCHEMA: NULL

 code-2

| Tables_in_performance_schema (%table%summary%) |

USER: NULL

OBJECT_NAME: NULL

 

+————————————————+

HOST: NULL

INDEX_NAME: NULL

从下图可看出,刚才在SSMS上丰盛的品质已经被询问出来。默许的壮大属性名是MS_Description。

| table_io_waits_summary_by_index_usage |#
按照各个索引举办计算的表I/O等待事件

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

OBJECT_TYPE: NULL

ca888亚洲城娱乐 8

| table_io_waits_summary_by_table |#
根据各种表举行总计的表I/O等待事件

COUNT_STAR: 0

OBJECT _INSTANCE_BEGIN: 140568905519072

 figure-5

| table_lock_waits_summary_by_table |#
根据每一种表展开统计的表锁等待事件

SUM _TIMER_WAIT: 0

NESTING _EVENT_ID: 116

 

+————————————————+

MIN _TIMER_WAIT: 0

NESTING _EVENT_TYPE: STATEMENT

系统视图sys.extended_properties每一个字段的详尽表达,可查看SQL联机从书。除了系统视图,也足以透过函数fn_listextendedproperty查询。

3rows inset ( 0. 00sec)

AVG _TIMER_WAIT: 0

OPERATION: timed_wait

SELECT objtype, objname, name, value
FROM fn_listextendedproperty(default, 'SCHEMA', 'dbo', 'TABLE', 'T8', default, default);

SELECT objtype,objname,name,value
FROM fn_listextendedproperty(default, 'SCHEMA', 'dbo', 'TABLE', 'T8', 'COLUMN', 'id');

SELECT objtype,objname,name,value
FROM fn_listextendedproperty(default, 'SCHEMA', 'dbo', 'TABLE', 'T8', 'COLUMN', 'name');

大家先来看望表中著录的计算信息是何等样子的。

MAX _TIMER_WAIT: 0

NUMBER _OF_BYTES: NULL

 code-3

# table_io_waits_summary_by_index_usage表

1 row in set (0.00 sec)

FLAGS: NULL

 

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

# events_waits_summary_by_host_by_event_name表

1 row in set (0.00 sec)

ca888亚洲城娱乐 9

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

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

上边的输出结果中,TIMER_WAIT字段即表示该事件的日子支付,单位是皮秒,在实际的运用场景中,大家可以动用该字段信息进行倒序排序,以便找出时间支出最大的等候事件。

figure-6

OBJECT_TYPE: TABLE

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

events_waits_current表完整的字段含义如下:

 

OBJECT_SCHEMA: xiaoboluo

HOST: NULL

THREAD_ID,EVENT_ID:与事件波及的线程ID和当前事件ID。THREAD_ID和EVENT_ID值构成了该事件音信行的唯一标识(不会有再度的THREAD_ID+EVENT_ID值)

恢宏属性可以运用相关的蕴藏进度进展维护。再履行code-1的代码,重建测试表,相关的习性也会去除。执行存储进度sp_addextendedproperty
举行添加。存储过程的参数使用,请查阅文档,本文末尾提供链接。

OBJECT_NAME: test

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

END_EVENT_ID:当一个风浪正在执行时该列值为NULL,当一个轩然大波实施达成时把该事件的ID更新到该列

EXEC sp_addextendedproperty 
@name = N'MS_Description',
@value = N'This is a table description on [T8](2).',
@level0type = N'SCHEMA', @level0name = N'dbo',
@level1type = N'TABLE', @level1name = N'T8'
GO

EXEC sp_addextendedproperty 
@name = N'MS_Description',
@value = N'This is a column description on [id](2).',
@level0type = N'SCHEMA', @level0name = N'dbo',
@level1type = N'TABLE', @level1name = N'T8',
@level2type = N'COLUMN', @level2name = N'id'
GO

EXEC sp_addextendedproperty 
@name = N'MS_Description',
@value = N'This is a column description on [name](2).',
@level0type = N'SCHEMA', @level0name = N'dbo',
@level1type = N'TABLE', @level1name = N'T8',
@level2type = N'COLUMN', @level2name = N'name'
GO

INDEX_NAME: PRIMARY

COUNT_STAR: 0

EVENT_NAME:暴发事件的instruments名称。该名称来自setup_instruments表的NAME字段值

code-4

COUNT_STAR: 1

SUM _TIMER_WAIT: 0

SOURCE:爆发该事件的instruments所在的源文件名称以及检测到该事件暴发点的代码行号。您可以查看源代码来规定涉及的代码。例如,假设互斥锁、锁被卡住,您可以检查暴发那种情景的上下文环境

 

SUM _TIMER_WAIT: 56688392

MIN _TIMER_WAIT: 0

TIMER_START,TIMER_END,TIMER_WAIT:事件的时日新闻。单位阿秒(万亿分之一秒)。
TIMER_START和TIMER_END值表示事件初步和得了时间。
TIMER_WAIT是事件经过岁月(即事件实施了多久)

查询sys.extended_properties,已经成功添加表和字段的恢宏属性。

MIN _TIMER_WAIT: 56688392

AVG _TIMER_WAIT: 0

  • 一旦事件未进行到位,则TIMER_END为如今计时器时间值(当前光阴),TIMER_WAIT为如今截至所经过的年月(TIMER_END –
    TIMER_START)
  • 假如采集该事件的instruments配置项TIMED =
    NO,则不会采集事件的时间新闻,TIMER_START,TIMER_END和TIMER_WAIT在那种气象下均记录为NULL

ca888亚洲城娱乐 10

AVG _TIMER_WAIT: 56688392

MAX _TIMER_WAIT: 0

SPINS:对于互斥量和自旋次数。假若该列值为NULL,则象征代码中并未利用自旋只怕说自旋没有被监督起来

figure-7

MAX _TIMER_WAIT: 56688392

1 row in set (0.00 sec)

OBJECT_SCHEMA,OBJECT_NAME,OBJECT_TYPE,OBJECT_INSTANCE_BEGIN:这几个列标识了一个正在被实践的靶子,所以这几个列记录的音讯意义必要看对象是何许项目,上边依照分歧目的类型分别对那个列的意思举行验证:

 

COUNT_READ: 1

# events_waits_summary_by_instance表

*
对于联合对象(cond,mutex,rwlock):

执行sp_dropextendedproperty删除现有增加属性。

SUM _TIMER_READ: 56688392

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

*
1)、OBJECT_SCHEMA,OBJECT_NAME和OBJECT_TYPE列值都为NULL

EXEC sp_dropextendedproperty 
@name = N'MS_Description',
@level0type = N'SCHEMA', @level0name = N'dbo',
@level1type = N'TABLE', @level1name = N'T8',
@level2type = N'COLUMN', @level2name = N'name'
GO

MIN _TIMER_READ: 56688392

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

*
2)、OBJECT_INSTANCE_BEGIN列是内存中同步对象的地址。OBJECT_INSTANCE_BEGIN除了不一致的值标记区其余靶子之外,其值本身没有意思。但OBJECT_INSTANCE_BEGIN值可用以调试。例如,它可以与GROUP BY
OBJECT_INSTANCE_BEGIN子句一起行使来查阅1,000个互斥体(例如:敬服1,000个页或数据块)上的载荷是还是不是是均匀分布仍旧暴发了部分瓶颈。假诺在日记文件或任何调试、品质工具中阅览与该语句查看的结果中有雷同的目的地址,那么,在你分析品质难点时,能够把这几个语句查看到的音讯与其余工具查看到的音讯涉及起来。

code-5

AVG _TIMER_READ: 56688392

EVENT_NAME: wait/synch/mutex/mysys/THR_LOCK_heap

* 对于文本I/O对象:

 

MAX _TIMER_READ: 56688392

OBJECT _INSTANCE_BEGIN: 32492032

*
1)、OBJECT_SCHEMA列值为NULL

再查询sys.extended_properties,字段name的增添属性已经被去除。

……

COUNT_STAR: 0

* 2)、OBJECT_NAME列是文件名

ca888亚洲城娱乐 11

1 row in set (0.00 sec)

SUM _TIMER_WAIT: 0

* 3)、OBJECT_TYPE列为FILE

 figure-8

# table_io_waits_summary_by_table表

MIN _TIMER_WAIT: 0

*
4)、OBJECT_INSTANCE_BEGIN列是内存中的地方,解释同上

 

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

AVG _TIMER_WAIT: 0

* 对于套接字对象:

使用sp_updateextendedproperty更新扩充属性。

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

MAX _TIMER_WAIT: 0

* 1)、OBJECT_NAME列是套接字的IP:PORT值

EXEC sp_updateextendedproperty 
@name = N'MS_Description',
@value = N'This is a column description on [id](3).',
@level0type = N'SCHEMA', @level0name = N'dbo',
@level1type = N'TABLE', @level1name = N'T8',
@level2type = N'COLUMN', @level2name = N'id'
GO

OBJECT_TYPE: TABLE

1 row in set (0.00 sec)

*
2)、OBJECT_INSTANCE_BEGIN列是内存中的地点,解释同上

code-6

OBJECT_SCHEMA: xiaoboluo

# events_waits_summary_by_thread_by_event_name表

* 对于表I/O对象:

 

OBJECT_NAME: test

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

* 1)、OBJECT_SCHEMA列是富含该表的库名称

ca888亚洲城娱乐 12

COUNT_STAR: 1

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

* 2)、OBJECT_NAME列是表名

figure-9

…………

THREAD_ID: 1

*
3)、OBJECT_TYPE列值对于基表大概TEMPORARY
TABLE临时表,该值是table,注意:对于在join查询中select_type为DERIVED,subquery等的表大概不记录事件新闻也不开展计算

 

1 row in set (0.00 sec)

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

*
4)、OBJECT_INSTANCE_BEGIN列是内存中的地方,解释同上

不仅仅表可以增加增添属性,其余数据库对象也可以,如数据库,索引等。

# table_lock_waits_summary_by_table表

COUNT_STAR: 0

INDEX_NAME:表示使用的目录的称呼。PRIMARY表示使用到了主键。 NULL代表不曾应用索引

USE AdventureWorks2008R2;
GO

SELECT *,OBJECT_NAME(major_id) AS obj_name FROM sys.extended_properties
GO

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

SUM _TIMER_WAIT: 0

NESTING_EVENT_ID:表示该行音信中的EVENT_ID事件是嵌套在哪些事件中,即父事件的EVENT_ID

code-7

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

MIN _TIMER_WAIT: 0

NESTING_EVENT_TYPE:表示该行信息中的EVENT_ID事件嵌套的事件类型。有效值有:TRANSACTION,STATEMENT,STAGE或WAIT,即父事件的轩然大波类型,假使为TRANSACTION则需求到工作事件表中找对应NESTING_EVENT_ID值的轩然大波,其他连串同理

 

OBJECT_TYPE: TABLE

AVG _TIMER_WAIT: 0

OPERATION:执行的操作类型,如:lock、read、write、timed_wait

ca888亚洲城娱乐 13

OBJECT_SCHEMA: xiaoboluo

MAX _TIMER_WAIT: 0

NUMBER_OF_BYTES:操作读取或写入的字节数或行数。对于文本IO等待,该列值表示字节数;对于表I/O等待(wait/io/table/sql/handler
instruments的事件),该列值表示行数。若是值超越1,则代表该事件对应一个批量I/O操作。以下分别对单个表IO和批量表IO的界别展开描述:

figure-10

OBJECT_NAME: test

1 row in set (0.00 sec)

  • MySQL的join查询利用嵌套循环完成。performance_schema
    instruments的意义是在join查询中提供对各个表的扫视行数和举办时间进行计算。示例:join查询语句:SELECT
    … FROM t1 JOIN t2 ON … JOIN t3 ON …,要是join顺序是t1,t2,t3
  • 在join查询中,一个表在询问时与其他表展开联合查询未来,该表的扫视行数或然增加也可能回落,例如:即便t3表扇出超乎1,则一大半row
    fetch操作都是针对t3表,假设join查询从t1表访问10行记录,然后利用t1表驱动查询t2表,t1表的每一行都会扫描t2表的20行记录,然后使用t2表驱动查询t3表,t2表的每一行都会扫描t3表的30行记录,那么,在应用单行输出时,instruments计算操作的轩然大波音讯总行数为:10
    +(10 * 20)+(10 * 20 * 30)= 6210
  • 通过对表中行扫描时的instruments统计操作举办联谊(即,各种t1和t2的围观行数在instruments总括中得以算作一个批量组合),那样就可以减小instruments计算操作的数码。通过批量I/O输出格局,performance_schema每一遍对最内层表t3的扫描收缩为一个事变总括消息而不是每一行扫描都生成一个事件消息,此时对此instruments计算操作的轩然大波行数量减小到:10
    +(10 * 20)+(10 * 20)=
    410,这样在该join查询中对此performance_schema中的行总计操作就裁减了93%,批量出口策略通过压缩输出游数量来显着下跌表I/O的performance_schema计算成本。但是相对于每行数据都单身实施计算操作,会损失对时间总结的准确度。在join查询中,批量I/O总括的时光包含用于连接缓冲、聚合和重临行到客户端的操作所消费的流年(即就是全体join语句的履行时间)

 

…………

# events_waits_summary_by_user_by_event_name表

FLAGS:留作未来选用

ca888亚洲城娱乐 14

COUNT_READ_NORMAL: 0

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

PS:events_waits_current表允许行使TRUNCATE TABLE语句

figure-11

SUM_TIMER_READ_NORMAL: 0

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

events_waits_history 表

 

MIN_TIMER_READ_NORMAL: 0

USER: NULL

events_waits_history表包括各种线程近来的N个等待事件。
在server启动时,N的值会自动调整。
如果要显式设置那个N大小,可以在server启动从前调整系统参数performance_schema_events_waits_history_size的值。
等待事件必要实践完成时才被添加到events_waits_history表中(没有终止时保留在events_waits_current表)。当添加新事件到events_waits_history表时,就算该表已满,则会丢掉每一个线程较旧的轩然大波

 

AVG_TIMER_READ_NORMAL: 0

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

events_waits_history与events_waits_current表定义相同

参考文档:

MAX_TIMER_READ_NORMAL: 0

COUNT_STAR: 0

PS:允许实施TRUNCATE TABLE语句

对数据库对象使用增加属性:

COUNT _READ_WITH _SHARED_LOCKS: 0

SUM _TIMER_WAIT: 0

events_waits_history_long 表

SUM _TIMER_READ _WITH_SHARED_LOCKS: 0

MIN _TIMER_WAIT: 0

events_waits_history_long表包括如今的N个等待事件(所有线程的事件)。在server启动时,N的值会自动调整。
要是要显式设置这些N大小,可以在server启动此前调整系统参数

查看扩张属性:

MIN _TIMER_READ _WITH_SHARED_LOCKS: 0

AVG _TIMER_WAIT: 0

performance_schema_events_waits_history_long_size的值。等待事件须要实施达成时才会被添加到events_waits_history_long表中(没有终止时保留在events_waits_current表),当添加新事件到events_waits_history_long表时,倘诺该表已满,则会屏弃该表中较旧的风云。

AVG _TIMER_READ _WITH_SHARED_LOCKS: 0

MAX _TIMER_WAIT: 0

events_waits_history_long与events_waits_current表结构同样

sys.extended_properties:

MAX _TIMER_READ _WITH_SHARED_LOCKS: 0

1 row in set (0.00 sec)

PS:允许接纳TRUNCATE TABLE语句

……

# events_waits_summary_global_by_event_name表

等级事件表

sp_addextendedproperty:

1 row in set (0.00 sec)

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

等级事件记录表与等待事件记录表一样,也有三张表,这么些表记录了目前与近期在MySQL实例中发出了何等阶段事件,时间消耗是有些。阶段指的是语句执行进度中的步骤,例如:parsing
、opening tables、filesort操作等。

从地点表中的记录音讯大家可以见到,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等待时间,这个表的分组和计算列含义请我们自行举一反三,那里不再赘言,下边针对那三张表做一些必需的辨证:

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

在以往大家查阅语句执行的等级状态,日常使用SHOW
PROCESSLIST语句或询问INFORMATION_SCHEMA.PROCESSLIST表来取得,但processlist方式可以查询到的音讯相比单薄且时而即逝,大家常常须要结合profiling成效来一发总结分析语句执行的一一阶段的支付等,现在,我们不需要这么麻烦,直接选拔performance_schema的级差事件就既可以查询到拥有的语句执行阶段,也得以查询到各种阶段对应的开发,因为是记录在表中,所以更可以接纳SQL语句对这么些数量开展排序、总计等操作

sp_dropextendedproperty:

table_io_waits_summary_by_table表:

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

要留意:阶段事件有关配置中,setup_instruments表中stage/起头的大部分instruments配置默许没有打开(少数stage/开首的instruments除外,如DDL语句执行进程的stage/innodb/alter*初步的instruments默许开启的),setup_consumers表中stages相关的consumers配置默认没有拉开

该表允许利用TRUNCATE
TABLE语句。只将计算列重置为零,而不是剔除行。对该表执行truncate还会隐式truncate
table_io_waits_summary_by_index_usage表

COUNT_STAR: 0

events_stages_current 表

sp_updateextendedproperty:

table_io_waits_summary_by_index_usage表:

SUM _TIMER_WAIT: 0

events_stages_current表包罗当前阶段事件的监察消息,每种线程一行记录显示线程正在执行的stage事件的情事

按照与table_io_waits_summary_by_table的分组列+INDEX_NAME列进行分组,INDEX_NAME有如下二种:

MIN _TIMER_WAIT: 0

在富含stage事件记录的表中,events_stages_current是基准表,包含stage事件记录的别的表(如:events_stages_history和events_stages_history_long表)的数目在逻辑上都出自events_stages_current表(汇总表除外)

fn_listextendedproperty:

·如果应用到了目录,则这里体现索引的名字,假使为PRIMARY,则意味表I/O使用到了主键索引

AVG _TIMER_WAIT: 0

表记录内容示例(以下依旧是一个推行select
sleep(100);语句的线程,但那边是阶段事件音信)

·若是值为NULL,则象征表I/O没有行使到目录

MAX _TIMER_WAIT: 0

root@localhost : performance _schema 12:24:40> select * from
events_stages _current where EVENT_NAME=’stage/sql/User sleep’G;

 

·万一是插入操作,则无法使用到目录,此时的总结值是比照INDEX_NAME =
NULL计算的

1 row in set (0.00 sec)

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

该表允许采纳TRUNCATE
TABLE语句。只将总结列重置为零,而不是删除行。该表执行truncate时也会隐式触发table_io_waits_summary_by_table表的truncate操作。其它利用DDL语句更改索引结构时,会招致该表的富有索引总计音信被重置

从上面表中的示范记录信息中,我们得以看到:

THREAD_ID: 46

table_lock_waits_summary_by_table表:

各个表都有分别的一个或五个分组列,以确定怎么样聚合事件音信(所有表都有EVENT_NAME列,列值与setup_instruments表中NAME列值对应),如下:

EVENT_ID: 280

该表的分组列与table_io_waits_summary_by_table表相同

events_waits_summary_by_account_by_event_name表:按照列EVENT_NAME、USER、HOST举办分组事件新闻

END _EVENT_ID: NULL

该表包蕴关于内部和表面锁的音信:

events_waits_summary_by_host_by_event_name表:按照列EVENT_NAME、HOST进行分组事件音讯

EVENT_NAME: stage/sql/User sleep

·个中锁对应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_instance表:按照列EVENT_NAME、OBJECT_INSTANCE_BEGIN进行分组事件新闻。若是一个instruments(event_name)创设有多少个实例,则每一个实例都有着唯一的OBJECT_INSTANCE_BEGIN值,由此每一种实例会展开单独分组

SOURCE: item_func.cc:6056

·外表锁对应存储引擎层中的锁。通过调用handler::external_lock()函数来已毕。(官方手册上说有一个OPERATION列来区分锁类型,该列有效值为:read
external、write external。但在该表的定义上并不曾看出该字段)

events_waits_summary_by_thread_by_event_name表:按照列THREAD_ID、EVENT_NAME举办分组事件音信

TIMER_START: 14645080545642000

该表允许利用TRUNCATE TABLE语句。只将计算列重置为零,而不是剔除行。

events_waits_summary_by_user_by_event_name表:按照列EVENT_NAME、USER进行分组事件信息

TIMER_END: 14698320697396000

3.文本I/O事件统计

events_waits_summary_global_by_event_name表:按照EVENT_NAME列进行分组事件消息

TIMER_WAIT: 53240151754000

文本I/O事件统计表只记录等待事件中的IO事件(不带有table和socket子序列),文件I/O事件instruments默许开启,在setup_consumers表中无具体的对应配置。它含有如下两张表:

所有表的总计列(数值型)都为如下多少个:

WORK_COMPLETED: NULL

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

COUNT_STAR:事件被实施的数据。此值包涵持有事件的进行次数,需求启用等待事件的instruments

WORK_ESTIMATED: NULL

+———————————————–+

SUM_TIMER_WAIT:统计给定计时事件的总等待时间。此值仅针对有计时效应的轩然大波instruments或打开了计时功效事件的instruments,如若某事件的instruments不帮忙计时要么尚未开启计时成效,则该字段为NULL。其他xxx_TIMER_WAIT字段值类似

NESTING _EVENT_ID: 266

| Tables_in_performance_schema (%file_summary%) |

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

NESTING _EVENT_TYPE: STATEMENT

+———————————————–+

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

1 row in set (0.00 sec)

| file_summary_by_event_name |

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

上述的出口结果与话语的等候事件格局类似,那里不再赘言,events_stages_current表完整的字段含义如下

| file_summary_by_instance |

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

THREAD_ID,EVENT_ID:与事件波及的线程ID和近来事变ID,可以使用THREAD_ID和EVENT_ID列值来唯一标识该行,那两行的值作为整合条件时不会冒出相同的数据行

+———————————————–+

施行该语句时有如下行为:

END_EVENT_ID:当一个事变始于进行时,对应行记录的该列值被安装为NULL,当一个风云实施完毕时,对应的行记录的该列值被更新为该事件的ID

2rows inset ( 0. 00sec)

对此未根据帐户、主机、用户聚集的统计表,truncate语句会将计算列值重置为零,而不是剔除行。

EVENT_NAME:发生事件的instruments的称号。该列值来自setup_instruments表的NAME值。instruments名称可能拥有八个部分并摇身一变层次结构,如:”stage/sql/Slave has read all relay log;
waiting for more updates”,其中stage是头号名称,sql是二级名称,Slave has read all relay log; waiting for more
updates是第三级称号。详见链接:

两张表中著录的情节很接近:

对此根据帐户、主机、用户聚集的统计表,truncate语句会删除已开端连接的帐户,主机或用户对应的行,并将其余有一连的行的总括列值重置为零(实测跟未依照帐号、主机、用户聚集的计算表一样,只会被重置不会被去除)。

·file_summary_by_event_name:依照每一种事件名称举办总括的文本IO等待事件

另外,依据帐户、主机、用户、线程聚合的各种等待事件计算表大概events_waits_summary_global_by_event_name表,即使依靠的连接表(accounts、hosts、users表)执行truncate时,那么器重的那几个表中的总结数据也会同时被隐式truncate

SOURCE:源文件的名称及其用于检测该事件的代码位于源文件中的行号

·file_summary_by_instance:依据各种文件实例(对应现实的每种磁盘文件,例如:表sbtest1的表空间文件sbtest1.ibd)进行统计的文本IO等待事件

注意:那一个表只针对等候事件音讯举行统计,即含有setup_instruments表中的wait/%初叶的搜集器+
idle空闲采集器,每一个等待事件在各种表中的统计记录行数须要看怎样分组(例如:依照用户分组计算的表中,有微微个活泼用户,表中就会有微微条相同采集器的记录),其它,总括计数器是不是见效还索要看setup_instruments表中相应的等候事件采集器是不是启用。

TIMER_START,TIMER_END,TIMER_WAIT:事件的时刻音讯。那一个值的单位是阿秒(万亿分之一秒)。TIMER_START和TIMER_END值表示事件的上猪时间和终结时间。TIMER_WAIT是事件实施消耗的小运(持续时间)

大家先来看望表中著录的总计音讯是何许样子的。

| 阶段事件计算表

  • 即便事件未履行到位,则TIMER_END为当下光阴,TIMER_WAIT为日前得了所经过的流年(TIMER_END –
    TIMER_START)
  • 如果instruments配置表setup_instruments中对应的instruments
    的TIMED字段被安装为
    NO,则该instruments禁用时间采访功用,那么事件采访的新闻记录中,TIMER_START,TIMER_END和TIMER_WAIT字段值均为NULL

# file_summary_by_event_name表

performance_schema把阶段事件统计表也听从与等待事件总结表类似的规则举办归类聚合,阶段事件也有局地是默许禁用的,一部分是翻开的,阶段事件统计表包括如下几张表:

WORK_COMPLETED,WORK_ESTIMATED:这么些列提供了阶段事件进程音讯

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;

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

  • 表中的WORK_COMPLETED和WORK_ESTIMATED两列,它们一起同盟展现每一行的速度突显:

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

+——————————————————–+

*
1)、WORK_COMPLETED:展现阶段事件已做到的办事单元数

EVENT_NAME: wait/io/file/innodb/innodb_data_file

| Tables_in_performance_schema (%events_stages_summary%) |

*
2)、WORK_ESTIMATED:展现推测阶段事件将要完成的工作单元数

COUNT_STAR: 802

+——————————————————–+

  • 若果instruments没有提供进程相关的作用,则该instruments执行事件采访时就不会有速度音信突显,WORK_COMPLETED和WORK_ESTIMATED列都会显得为NULL。要是进程音讯可用,则进度音讯怎么着显示取决于instruments的实践景况。performance_schema表提供了一个仓储进度数据的器皿,但不会倘若你会定义何种度量单位来选拔这一个进程数据:

SUM_TIMER_WAIT: 412754363625

| events_stages_summary_by_account_by_event_name |

*
1)、“工作单元”是在举办进度中随时间扩充而伸张的平头度量,例如执行进度中的字节数、行数、文件数或表数。对于特定instruments的“工作单元”的概念留给提供数据的instruments代码

MIN_TIMER_WAIT: 0

| events_stages_summary_by_host_by_event_name |

*
2)、WORK_COMPLETED值根据检测的代码不同,可以一次增加一个或多个单元

AVG_TIMER_WAIT: 514656000

| events_stages_summary_by_thread_by_event_name |

*
3)、WORK_ESTIMATED值按照检测代码,可能在等级事件实施进程中发生变化

MAX_TIMER_WAIT: 9498247500

| events_stages_summary_by_user_by_event_name |

  • 等级事件进程提示器的变现作为有以下两种情状:

COUNT_READ: 577

| events_stages_summary_global_by_event_name |

*
1)、instruments不扶助进程:没有可用进度数据,
WORK_COMPLETED和WORK_ESTIMATED列都显得为NULL

SUM_TIMER_READ: 305970952875

+——————————————————–+

* 2)
、instruments协理进程但相应的行事负荷总工作量不可预估(无限进程):只有WORK_COMPLETED列有含义(因为她显得正在进行的速度展现),WORK_ESTIMATED列此时失效,呈现为0,因为没有可预估的总进程数据。通过查询events_stages_current表来监视会话,监控应用程序到近年来停止执行了略微干活,但不能告诉对应的行事是或不是接近完结

MIN_TIMER_READ: 15213375

5rows inset ( 0. 00sec)

*
3)、instruments支持进程,总工作量可预估(有限进程):WORK_COMPLETED和WORK_ESTIMATED列值有效。这种类型的速度突显可用于online
DDL时期的copy表阶段监视。通过查询events_stages_current表,可监控应用程序当前已经完成了略微办事,并且可以通过WORK_COMPLETED
/ WORK_ESTIMATED计算的比率来预估某个阶段总体形成比例

AVG_TIMER_READ: 530278875

我们先来探视这个表中记录的计算新闻是如何体统的。

NESTING_EVENT_ID:事件的嵌套事件EVENT_ID值(父事件ID)

MAX_TIMER_READ: 9498247500

# events_stages_summary_by_account_by_event_name表

NESTING_EVENT_TYPE:嵌套事件类型。有效值为:TRANSACTION,STATEMENT,STAGE,WAIT。阶段事件的嵌套事件屡见不鲜是statement

SUM _NUMBER_OF _BYTES_READ: 11567104

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

对于events_stages_current表允许选用TRUNCATE
TABLE语句来进展清理

……

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

PS:stage事件拥有一个进程浮现效果,大家可以利用该进程显示效果来精通一些长日子实施的SQL的进程百分比,例如:对于要求拔取COPY格局履行的online
ddl,那么必要copy的数据量是毫无疑问的,可以明确的,so..那就足以为”stage/sql/copy
to tmp table stage”
instruments提供一个有收尾边界参照的速度数据音讯,这些instruments所使用的做事单元就是要求复制的多寡行数,此时WORK_COMPLETED和WORK_ESTIMATED列值都是卓有成效的可用的,两者的臆度比例就意味着如今copy表完结copy的行数据百分比。

1 row in set (0.00 sec)

USER: root

  • 要翻开copy表阶段事件的正在实践的进程监视功用,须要开辟相关的instruments和consumers,然后查看events_stages_current表,如下:

# file_summary_by_instance表

HOST: localhost

# 配置相关instruments和consumers

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;

EVENT_NAME: stage/sql/After create

UPDATEsetup_instruments SETENABLED= ‘YES’WHERENAME= ‘stage/sql/copy to
tmp table’;

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

COUNT_STAR: 0

UPDATEsetup_consumers SETENABLED=
‘YES’WHERENAMELIKE’events_stages_%’;

FILE_NAME: /data/mysqldata1/innodb_ts/ibdata1

SUM _TIMER_WAIT: 0

# 然后在执行ALTER TABLE语句时期,查看events_stages_current表

EVENT_NAME: wait/io/file/innodb/innodb_data_file

MIN _TIMER_WAIT: 0

events_stages_history 表

OBJECT _INSTANCE_BEGIN: 139882156936704

AVG _TIMER_WAIT: 0

events_stages_history表包涵逐个线程最新的N个阶段事件。
在server启动时,N的值会自动调整。
若是要显式设置N值大小,能够在server启动从前安装系统变量performance_schema_events_stages_history_size的值。stages事件在履行已毕时才添加到events_stages_history表中。
当添加新事件到events_stages_history表时,如果events_stages_history表已满,则会甩掉对应线程较旧的风云events_stages_history与events_stages_current表结构同样

COUNT_STAR: 33

MAX _TIMER_WAIT: 0

PS:允许行使TRUNCATE TABLE语句

…………

1 row in set (0.01 sec)

events_stages_history_long 表

1 row in set (0.00 sec)

# events_stages_summary_by_host_by_event_name表

events_stages_history_long表包蕴近期的N个阶段事件。
在server启动时,N的值会自动调整。
若是要显式设置N值大小,能够在server启动以前安装系统变量performance_schema_events_stages_history_long_size的值。stages事件实施完成时才会添加到events_stages_history_long表中,当添加新事件到events_stages_history_long表时,如果events_stages_history_long表已满,则会抛弃该表中较旧的风浪events_stages_history_long与events_stages_current表结构同样

从上边表中的记录新闻大家得以寓目:

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

PS:允许采用TRUNCATE TABLE语句

·每一种文件I/O总计表都有一个或多少个分组列,以标明怎么样统计那几个事件音信。这个表中的轩然大波名称来自setup_instruments表中的name字段:

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

言语事件表

* file_summary_by_event_name表:按照EVENT_NAME列举办分组 ;

HOST: localhost

言语事件记录表与等待事件记录表一样,也有三张表,那个表记录了当前与近年来在MySQL实例中发生了何等语句事件,时间消耗是多少。记录了五光十色的讲话执行爆发的话语事件音讯。

*
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字段,用于记录具体的磁盘文件有关音讯。

EVENT_NAME: stage/sql/After create

要留意:语句事件有关安插中,setup_instruments表中statement/*千帆竞发的保有instruments配置默许开启,setup_consumers表中statements相关的consumers配置默许开启了events_statements_current、events_statements_history、statements_digest(对应events_statements_summary_by_digest表,详见后续章节)但从不开启events_statements_history_long。

·各种文件I/O事件计算表有如下总计字段:

COUNT_STAR: 0

events_statements_current 表

*
COUNT_STAR,SUM_TIMER_WAIT,MIN_TIMER_WAIT,AVG_TIMER_WAIT,MAX_TIMER_WAIT:那个列计算所有I/O操作数量和操作时间

SUM _TIMER_WAIT: 0

events_statements_current表包蕴当前说话事件,每一种线程只突显一行近期被监视语句事件的此时此刻意况。

*
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操作的多寡字节数

MIN _TIMER_WAIT: 0

在蕴泰语句事件行的表中,events_statements_current当前事变表是基础表。其余富含语句事件表中的多少在逻辑上来自当前事件表(汇总表除外)。例如:events_statements_history和events_statements_history_long表是近年来的言辞事件历史的聚众,events_statements_history表中各种线程默许保留10行事件历史音信,events_statements_history_long表中默许所无线程保留10000行事件历史音讯

*
COUNT_WRITE,SUM_TIMER_WRITE,MIN_TIMER_WRITE,AVG_TIMER_WRITE,MAX_TIMER_WRITE,SUM_NUMBER_OF_BYTES_WRITE:这几个列统计了拥有文件写操作,包蕴FPUTS,FPUTC,FPRINTF,VFPRINTF,FWRITE和PWRITE系统调用,还隐含了这个I/O操作的数据字节数

AVG _TIMER_WAIT: 0

表记录内容示例(以下新闻依旧来自select
sleep(100);语句的讲话事件信息)

*
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操作没有字节计数新闻。

MAX _TIMER_WAIT: 0

root@localhost : performance_schema 12: 36: 35> select * from
events_statements_current where SQL_TEXT= ‘select sleep(100)’G;

文件I/O事件计算表允许行使TRUNCATE
TABLE语句。但只将计算列重置为零,而不是剔除行。

1 row in set (0.00 sec)

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

PS:MySQL
server使用三种缓存技术通过缓存从文件中读取的新闻来幸免文件I/O操作。当然,假设内存不够时仍旧内存竞争比较大时大概造成查询功效低下,这一个时候你大概须求通过刷新缓存只怕重启server来让其数额经过文件I/O再次来到而不是透过缓存重临。

# events_stages_summary_by_thread_by_event_name表

THREAD_ID: 46

4.套接字事件计算

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

EVENT_ID: 334

套接字事件总计了套接字的读写调用次数和殡葬接收字节计数新闻,socket事件instruments默许关闭,在setup_consumers表中无具体的呼应配置,包罗如下两张表:

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

END_EVENT_ID: NULL

·socket_summary_by_instance:针对各种socket实例的具备 socket
I/O操作,那几个socket操作相关的操作次数、时间和发送接收字节新闻由wait/io/socket/*
instruments暴发。但当连接中断时,在该表中对应socket连接的音讯就要被去除(这里的socket是指的当下活蹦乱跳的连日创立的socket实例)

THREAD_ID: 1

EVENT_NAME: statement/sql/select

·socket_summary_by_event_name:针对每一种socket I/O
instruments,那个socket操作相关的操作次数、时间和殡葬接收字节音讯由wait/io/socket/*
instruments爆发(那里的socket是指的近年来活跃的总是创立的socket实例)

EVENT_NAME: stage/sql/After create

SOURCE: socket_connection.cc: 101

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website