performance_schema全方位介绍六合联盟:

2019-12-23 作者:互联网   |   浏览(199)

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

六合联盟 1

导语

在上朝气蓬勃篇 《配置详细解释 | performance_schema全方位介绍》中,大家详细介绍了performance_schema的陈设表,坚定不移读完的是真爱,也恭喜大家翻过了大器晚成座雪宝顶。相信有过多个人读完事后,已经迫在眉睫的想要蓄势待发了,几如今将指导我们大器晚成道踏上漫天掩地第三篇的征程(全系共6个篇章卡塔尔(قطر‎,在此黄金年代期里,大家将为我们体贴入妙授课performance_schema中事件原本记录表。下边,请跟随大家一齐起来performance_schema系统的就学之旅吧。

等待事件表

多如牛毛,我们在境遇质量瓶颈时,假若此外的点子难以找寻品质瓶颈的时候(比方:硬件负载不高、SQL优化和库表布局优化都不便见到成效的时候卡塔尔,大家平常必要依据等待事件来举办剖判,搜索在MySQL Server内部,到底数据库响应慢是慢在什么地方。

等待事件记录表满含三张表,那个表记录了脚下与近些日子在MySQL实例中发生了怎样等待事件,时间耗费是微微。

  • events_waits_current表:记录当前正在施行的等候事件的,每一个线程只记录1行记下
  • events_waits_history表:记录已经施行完的近年的等待事件历史,暗许每种线程只记录10行记录
  • events_waits_history_long表:记录已经实践完的方今的等候事件历史,私下认可所有线程的总记录行数为10000行

要留意:等待事件相关布署中,setup_instruments表中多方面包车型客车等待事件instruments都未曾拉开(IO相关的守候事件instruments默许当先二分之一已开启卡塔尔,setup_consumers表中waits相关的consumers配置私下认可未有展开

events_waits_current 表

events_waits_current表饱含当前的等候事件音讯,每一种线程只体现风流倜傥行前段时间监视的等候事件的当前情景

在颇有包蕴等待事件行的表中,events_waits_current表是最根底的数码来源于。别的包罗等待事件数据表在逻辑上是来自events_waits_current表中的当前事变新闻(汇总表除却)。举个例子,events_waits_history和events_waits_history_long表中的数据是events_waits_current表数据的贰个小集结汇总(具体存放多少行数据集结有分其他变量支配)

表记录内容示例(那是二个进行select sleep(100卡塔尔;语句的线程等待事件音讯)

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

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

THREAD_ID: 46

EVENT_ID: 140

END_EVENT_ID: NULL

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

SOURCE: item_func.cc:5261

TIMER_START: 14128809267002592

TIMER_END: 14132636159944419

TIMER_WAIT: 3826892941827

SPINS: NULL

OBJECT_SCHEMA: NULL

OBJECT_NAME: NULL

INDEX_NAME: NULL

OBJECT_TYPE: NULL

OBJECT _INSTANCE_BEGIN: 140568905519072

NESTING _EVENT_ID: 116

NESTING _EVENT_TYPE: STATEMENT

OPERATION: timed_wait

NUMBER _OF_BYTES: NULL

FLAGS: NULL

1 row in set (0.00 sec)

地方的输出结果中,TIME宝马X3_WAIT字段即意味着该事件的时刻支付,单位是飞秒,在实质上的应用处景中,大家能够利用该字段消息进行倒序排序,以便找寻时间支出最大的等候事件。

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

THREAD_ID,EVENT_ID:与事件波及的线程ID和眼下事件ID。THREAD_ID和EVENT_ID值构成了该事件新闻行的独一无二标志(不会有再次的THREAD_ID+EVENT_ID值)

END_EVENT_ID:当七个事变正在推行时该列值为NULL,当一个风浪实践完成时把该事件的ID更新到该列

EVENT_NAME:产惹祸件的instruments名称。该名称来自setup_instruments表的NAME字段值

SOURCE:产生该事件的instruments所在的源文件名称以至质量评定到该事件爆发点的代码行号。您能够查看源代码来规定涉及的代码。举例,如若互斥锁、锁被卡住,您能够检查发生这种景观的上下文景况

TIMER_START,TIMER_END,TIMER_WAIT:事件的日子新闻。单位阿秒(万亿分之风度翩翩秒)。 TIMEKuga_START和TIMER_END值表示事件始于和得了时间。 TIME昂Cora_WAIT是事件经过时间(即事件实行了多久)

  • 只要事件未实行到位,则TIMEPAJERO_END为方今停车计时器时间值(当前光阴),TIMEOdyssey_WAIT为近年来截止所通过的岁月(TIME奇骏_END - TIMER_START)
  • 要是收集该事件的instruments配置项TIMED = NO,则不会收集事件的时日音信,TIMEOdyssey_START,TIMER_END和TIMER_WAIT在这里种状态下均记录为NULL

SPINS:对于互斥量和自旋次数。假诺该列值为NULL,则意味着代码中一贯不使用自旋大概说自旋没有被监督起来

OBJECT_SCHEMA,OBJECT_NAME,OBJECT_TYPE,OBJECT_INSTANCE_BEGIN:这几个列标志了八个正值被实施的靶子,所以那些列记录的音信意义供给看对象是哪些项目,上面依据差别对象类型分别对这个列的含义举行认证:

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

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

* 2)、OBJECT_INSTANCE_BEGIN列是内部存储器中同步对象的地址。OBJECT_INSTANCE_BEGIN除了分裂的值标识差别的目的之外,其值本身并没风趣。但OBJECT_INSTANCE_BEGIN值可用来调节和测验。比方,它能够与GROUP BY OBJECT_INSTANCE_BEGIN子句一齐行使来查阅1,000个互斥体(比方:爱戴1,000个页或数据块)上的负载是或不是是均匀布满依然发生了一些瓶颈。假使在日记文件或任何调节和测量检验、质量工具中观察与该语句查看的结果中有生机勃勃致的指标地址,那么,在你解析品质难题时,能够把这几个语句查看见的音讯与任何工具查见到的新闻涉及起来。

* 对于文本I/O对象:

* 1)、OBJECT_SCHEMA列值为NULL

* 2)、OBJECT_NAME列是文件名

* 3)、OBJECT_TYPE列为FILE

* 4)、OBJECT_INSTANCE_BEGIN列是内部存款和储蓄器中的地点,解释同上

* 对于套接字对象:

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

* 2)、OBJECT_INSTANCE_BEGIN列是内部存款和储蓄器中的地址,解释同上

* 对于表I/O对象:

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

* 2)、OBJECT_NAME列是表名

* 3)、OBJECT_TYPE列值对于基表恐怕TEMPORA奥迪Q5Y TABLE一时表,该值是table,注意:对于在join查询中select_type为DE汉兰达IVED,subquery等的表恐怕不记录事件音讯也不进行总结

* 4)、OBJECT_INSTANCE_BEGIN列是内部存款和储蓄器中的地点,解释同上

INDEX_NAME:表示使用的目录的名号。P瑞鹰IMA本田UR-VY代表使用到了主键。 NULL代表尚未运用索引

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

NESTING_EVENT_TYPE:表示该行音讯中的EVENT_ID事件嵌套的事件类型。有效值有:TRANSACTION,STATEMENT,STAGE或WAIT,即父事件的平地风波类型,尽管为TRANSACTION则要求到工作事件表中找对应NESTING_EVENT_ID值的事件,其余种类同理

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

NUMBER_OF_BYTES:操作读取或写入的字节数或行数。对于文本IO等待,该列值表示字节数;对于表I/O等待(wait/io/table/sql/handler instruments的风浪),该列值表示行数。要是值大于1,则意味着该事件对应四个批量I/O操作。以下分别对单个表IO和批量表IO的差距张开描述:

  • 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计算的时辰包涵用于连接缓冲、聚合和再次来到行到客商端的操作所开销的时刻(即就是100%join语句的施行时间)

FLAGS:留作以后采取

PS:events_waits_current表允许利用TRUNCATE TABLE语句

events_waits_history 表

events_waits_history表富含每种线程前段时间的N个等待事件。 在server运行时,N的值会自动调解。 假设要显式设置这几个N大小,可以在server运行从前调治系统参数performance_schema_events_waits_history_size的值。 等待事件要求实行完结时才被增多到events_waits_history表中(没有终结时保留在events_waits_current表)。当增多新事件到events_waits_history表时,若是该表已满,则会甩掉每一个线程较旧的风云

events_waits_history与events_waits_current表定义相近

PS:允许施行TRUNCATE TABLE语句

events_waits_history_long 表

events_waits_history_long表饱含近些日子的N个等待事件(所有线程的风云)。在server运行时,N的值会自动调治。 假若要显式设置那一个N大小,能够在server运维以前调度系统参数

performance_schema_events_waits_history_long_size的值。等待事件必要实行完结时才会被增添到events_waits_history_long表中(未有终结时保留在events_waits_current表),当加多新事件到events_waits_history_long表时,如果该表已满,则会放弃该表中较旧的平地风波。

events_waits_history_long与events_waits_current表构造同样

PS:允许行使TRUNCATE TABLE语句

等第事件表

等级事件记录表与等待事件记录表相似,也许有三张表,这一个表记录了当前与这两日在MySQL实例中生出了什么阶段事件,时间成本是多少。阶段指的是语句试行进程中的步骤,举个例子:parsing 、opening tables、filesort操作等。

在未来我们查阅语句实施的级差状态,日常使用SHOW PROCESSLIST语句或询问INFORMATION_SCHEMA.PROCESSLIST表来得到,但processlist方式能够查询到的音信比较单薄且时而即逝,我们经常需求整合profiling成效来更是计算分析语句实行的相继阶段的支出等,将来,大家无需如此麻烦,直接接受performance_schema的级差事件就不只能够查询到具备的语句实行阶段,也能够查询到各种阶段对应的花费,因为是记录在表中,所以更能够行使SQL语句对那些数量实行排序、计算等操作

要留意:阶段事件相关配置中,setup_instruments表中stage/开首的绝大大多instruments配置暗中同意没有展开(少数stage/开首的instruments除却,如DDL语句推行进程的stage/innodb/alter*起来的instruments暗中同意开启的),setup_consumers表中stages相关的consumers配置私下认可未有拉开

events_stages_current 表

events_stages_current表富含当前阶段事件的监察新闻,各种线程风流浪漫行记录彰显线程正在施行的stage事件的场所

在饱含stage事件记录的表中,events_stages_current是基准表,包蕴stage事件记录的别样表(如:events_stages_history和events_stages_history_long表)的多少在逻辑上都来源于events_stages_current表(汇总表除此之外)

表记录内容示例(以下仍为贰个举行select sleep(100卡塔尔;语句的线程,但此处是阶段事件音讯卡塔尔国

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

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

THREAD_ID: 46

EVENT_ID: 280

END _EVENT_ID: NULL

EVENT_NAME: stage/sql/User sleep

SOURCE: item_func.cc:6056

TIMER_START: 14645080545642000

TIMER_END: 14698320697396000

TIMER_WAIT: 53240151754000

WORK_COMPLETED: NULL

WORK_ESTIMATED: NULL

NESTING _EVENT_ID: 266

NESTING _EVENT_TYPE: STATEMENT

1 row in set (0.00 sec)

如上的输出结果与话语的等待事件情势肖似,这里不再赘言,events_stages_current表完整的字段含义如下

THREAD_ID,EVENT_ID:与事件波及的线程ID和当下事件ID,可以动用THREAD_ID和EVENT_ID列值来唯生机勃勃标记该行,这两行的值作为整合条件时不会师世相近的数据行

END_EVENT_ID:当贰个平地风波开头实行时,对应行记录的该列值棉被服装置为NULL,当一个事变实践实现时,对应的行记录的该列值被更新为该事件的ID

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是第三级称号。详见链接:

SOURCE:源文件的称呼及其用于检查实验该事件的代码坐落于源文件中的行号

TIMER_START,TIMER_END,TIMER_WAIT:事件的年月新闻。那么些值的单位是微秒(万亿分之意气风发秒)。TIMELAND_START和TIMER_END值表示事件的起来时间和终止时间。TIME奥迪Q3_WAIT是事件施行消耗的时光(持续时间)

  • 假使事件未进行到位,则TIMELacrosse_END为当下光阴,TIMELX570_WAIT为当前截至所通过的时日(TIMEEscort_END - TIMER_START)
  • 如果instruments配置表setup_instruments中对应的instruments 的TIMED字段棉被服装置为 NO,则该instruments禁止使用时间访问功用,那么事件访谈的新闻记录中,TIME奥德赛_START,TIMER_END和TIMER_WAIT字段值均为NULL

WORK_COMPLETED,WORK_ESTIMATED:那一个列提供了阶段事件进程音信

  • 表中的WORK_COMPLETED和WORK_ESTIMATED两列,它们一同同盟呈现每风华正茂行的速度展现:

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

* 2)、WORK_ESTIMATED:突显猜想阶段事件就要完结的劳作单元数

  • 如果instruments未有提供进度相关的成效,则该instruments实践事件访谈时就不会有速度音讯展现,WORK_COMPLETED和WORK_ESTIMATED列都会显得为NULL。要是进程音讯可用,则进程消息如何体现决定于instruments的执行意况。performance_schema表提供了二个存储进度数据的容器,但不会假诺你会定义何种衡量单位来利用那一个进程数据:

* 1卡塔尔(英语:State of Qatar)、“职业单元”是在试行进度中任何时候间扩展而充实的卡尺头度量,举例试行进度中的字节数、行数、文件数或表数。对于特定instruments的“专门的学业单元”的定义留给提供数据的instruments代码

* 2)、WORK_COMPLETED值依据检验的代码不一样,能够三回扩大三个或两个单元

* 3)、WORK_ESTIMATED值遵照检验代码,大概在等第事件实行进度中爆发变化

  • 等第事件进程提醒器的显现作为有以下三种意况:

* 1卡塔尔国、instruments不援救进程:未有可用进程数据, WO中华VK_COMPLETED和WORK_ESTIMATED列都展现为NULL

* 2卡塔尔、instruments扶植进度但相应的劳作负荷总职业量不可预估(Infiniti进程):唯有WO酷威K_COMPLETED列有意义(因为她彰显正在实行的速度展现),WO奥德赛K_ESTIMATED列当时失效,呈现为0,因为还没可预估的总进程数据。通过查询events_stages_current表来监视会话,监察和控制应用程序到如今停止实施了稍微工作,但不可能告诉对应的做事是不是临近成功

* 3卡塔尔(قطر‎、instruments扶植进程,总职业量可预估(有限进程):WOPRADOK_COMPLETED和WORK_ESTIMATED列值有效。这连串型的速度显示可用于online DDL时期的copy表阶段监视。通过查询events_stages_current表,可监察和控制应用程序当前早已达成了有一点干活,而且能够经过WO悍马H2K_COMPLETED / WORK_ESTIMATED总计的比值来预估有个别阶段总体完结比例

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

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

对于events_stages_current表允许行使TRUNCATE TABLE语句来张开清理

PS:stage事件具有八个速度体现效果,大家得以行使该进程体现效果来询问部分长日子试行的SQL的快慢百分比,比方:对于急需利用COPY方式举办的online ddl,那么供给copy的数据量是分明的,能够一览无遗的,so..那就能够为"stage/sql/copy to tmp table stage" instruments提供二个有收尾边界参照的进程数据信息,这一个instruments所选取的工作单元便是急需复制的数目行数,那时WO索罗德K_COMPLETED和WORK_ESTIMATED列值都是有效的可用的,两个的总计比例就意味着前段时间copy表达成copy的行数据百分比。

  • 要翻看copy表阶段事件的正在实行的速度监视功用,要求开垦相关的instruments和consumers,然后查看events_stages_current表,如下:

# 配置相关instruments和consumers

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

UPDATEsetup_consumers SETENABLED= 'YES'WHERENAMELIKE'events_stages_%';

# 然后在实行ALTECRUISER TABLE语句时期,查看events_stages_current表

events_stages_history 表

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表构造相仿

PS:允许接收TRUNCATE TABLE语句

events_stages_history_long 表

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表构造同样

PS:允许选拔TRUNCATE TABLE语句

讲话事件表

说话事件记录表与等待事件记录表同样,也可以有三张表,这几个表记录了眼下与前段时间在MySQL实例中生出了哪些语句事件,时间开销是有个别。记录了各式各样的口舌施行发生的言语事件信息。

要注意:语句事件相关陈设中,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。

events_statements_current 表

events_statements_current表富含当前说话事件,各个线程只呈现生龙活虎行近些日子被监视语句事件的当下状态。

在含蓄语句事件行的表中,events_statements_current当前事变表是底子表。别的包括语句事件表中的多少在逻辑上来自当前事件表(汇总表除此而外)。比如:events_statements_history和events_statements_history_long表是多年来的说话事件历史的聚众,events_statements_history表中各类线程暗许保留10行事件历史音信,events_statements_history_long表中默许所有线程保留10000行事件历史音信

表记录内容示例(以下音信仍然来自select sleep(100卡塔尔;语句的口舌事件音讯)

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

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

THREAD_ID: 46

EVENT_ID: 334

END_EVENT_ID: NULL

EVENT_NAME: statement/sql/select

SOURCE: socket_connection.cc: 101

TIMER_START: 15354770719802000

TIMER_END: 15396587017809000

TIMER_WAIT: 41816298007000

LOCK_TIME: 0

SQL_TEXT: select sleep( 100)

DIGEST: NULL

DIGEST_TEXT: NULL

CURRENT_SCHEMA: NULL

OBJECT_TYPE: NULL

OBJECT_SCHEMA: NULL

OBJECT_NAME: NULL

OBJECT_INSTANCE_BEGIN: NULL

MYSQL_ERRNO: 0

RETURNED_SQLSTATE: NULL

MESSAGE_TEXT: NULL

ERRORS: 0

WARNINGS: 0

ROWS_AFFECTED: 0

ROWS_SENT: 0

ROWS_EXAMINED: 0

CREATED_TMP_DISK_TABLES: 0

CREATED_TMP_TABLES: 0

SELECT_FULL_JOIN: 0

SELECT_FULL_RANGE_JOIN: 0

SELECT_RANGE: 0

SELECT_RANGE_CHECK: 0

SELECT_SCAN: 0

SORT_MERGE_PASSES: 0

SORT_RANGE: 0

SORT_ROWS: 0

SORT_SCAN: 0

NO_INDEX_USED: 0

NO_GOOD_INDEX_USED: 0

NESTING_EVENT_ID: NULL

NESTING_EVENT_TYPE: NULL

NESTING_EVENT_LEVEL: 0

1row in set ( 0.00sec)

以上的出口结果与话语的等待事件方式形似,这里不再赘言,events_statements_current表完整的字段含义如下:

THREAD_ID,EVENT_ID:与事件波及的线程号和事件运维时的轩然大波编号,基本上能用THREAD_ID和EVENT_ID列值来唯意气风发标志该行,这两行的值作为整合条件时不会现出同等的数据行

END_EVENT_ID:当四个轩然大波初阶实践时,对应行记录的该列值棉被服装置为NULL,当一个事变施行完成时,对应的行记录的该列值被更新为该事件的ID

EVENT_NAME:产闯祸件的监视仪器的名目。该列值来自setup_instruments表的NAME值。对于SQL语句,EVENT_NAME值最早的instruments是statement/com/Query,直到语句被深入分析之后,会转移为更贴切的现实性instruments名称,如:statement/sql/insert

SOURCE:源文件的称呼及其用于检验该事件的代码位于源文件中的行号,您能够检查源代码来规定涉及的代码

TIMER_START,TIMER_END,TIMER_WAIT:事件的命宫新闻。那些值的单位是飞秒(万亿分之风流浪漫秒)。 TIME昂Cora_START和TIMER_END值表示事件的初叶时间和了结时间。TIME奇骏_WAIT是事件施行消耗的光阴(持续时间)

  • 譬喻事件未施行到位,则TIME奥迪Q7_END为当下岁月,TIME科雷傲_WAIT为眼下终止所通过的时刻(TIME奔驰M级_END - TIMER_START)。
  • 如若监视仪器配置表setup_instruments中对应的监视器TIMED字段被设置为 NO,则不会征集该监视器的年月新闻,那么对于该事件访问的音信记录中,TIMEEnclave_START,TIMER_END和TIMER_WAIT字段值均为NULL

LOCK_TIME:等待表锁的光阴。该值以微秒举办估测计算,但最终转换为飞秒展现,以便更易于与此外performance_schema中的放大计时器实行相比较

SQL_TEXT:SQL语句的文书。假若该行事件是与SQL语句非亲非故的command事件,则该列值为NULL。默许意况下,语句最大展现长度为1024字节。假如要改善,则在server运转早先设置系统变量performance_schema_max_sql_text_length的值

DIGEST:语句摘抄的MD5 hash值,为叁16人十四进制字符串,假若在setup_consumers表中statement_digest配置行未有展开,则语句事件中该列值为NULL

DIGEST_TEXT:标准化转变过的语句摘抄文本,要是setup_consumers表中statements_digest配置行未有拉开,则语句事件中该列值为NULL。performance_schema_max_digest_length系统变量支配着在存入该表时的最大摘要语句文本的字节长度(默感觉1024字节),要专心:用于计算摘要语句文本的原始语句文本字节长度由系统变量max_digest_length调整,而存入表中的字节长度由系统变量performance_schema_max_digest_length控制,所以,如果performance_schema_max_digest_length小于max_digest_length时,总计出的摘要语句文本大器晚成经超先生出了performance_schema_max_digest_length定义的尺寸会被截断

CURRENT_SCHEMA:语句使用的暗中同意数据库(使用use db_name语句就能够钦命私下认可数据库),若无则为NULL

OBJECT_SCHEMA,OBJECT_NAME,OBJECT_TYPE:对于嵌套语句(存款和储蓄程序最后是经过说话调用的,所以假如三个说话是由存款和储蓄程序调用的,尽管说那些讲话事件是嵌套在蕴藏程序中的,但是其实对于事件类型来说,仍是嵌套在言辞事件中),这么些列包括关于父语句的消息。假使不是嵌套语句也许是父语句作者爆发的平地风波,则这个列值为NULL

OBJECT_INSTANCE_BEGIN:语句的唯后生可畏标志,该列值是内部存款和储蓄器中对象的地址

MYSQL_EEnclaveLANDNO:语句履行的谬误号,此值来自代码区域的语句确诊区域

RETURNED_SQLSTATE:语句奉行的SQLSTATE值,此值来自代码区域的说话确诊区域

MESSAGE_TEXT:语句施行的实际错误音讯,此值来自代码区域的口舌确诊区域

EWranglerROPRADOS:语句推行是还是不是产生错误。倘若SQLSTATE值以00(完结)或01(警示)初阶,则该列值为0。别的任何SQLSTATE值时,该列值为1

WALacrosseNINGS:语句警示数,此值来自代码区域的说话确诊区域

ROWS_AFFECTED:受该语句影响的行数。有关“受影响”的意义的陈诉,参见连接:

  • 使用mysql_query()或mysql_real_query()函数试行语句后,也许会立马调用mysql_affected_rows()函数。假使是UPDATE,DELETE或INSERT,则赶回最终一条语句改进、删除、插入的行数。对于SELECT语句,mysql_affected_rows()的劳作方式与mysql_num_rows()同样(在实行结果最终回来的新闻中看不到effected统计消息)
  • 对于UPDATE语句,受影响的行值默认为实际改正的行数。借使在一而再到mysqld时钦命了CLIENT_FOUND_ROWS标志给mysql_real_connect()函数,那么affected-rows的值是“found”的行数。即WHERE子句相称到的行数
  • 对于REPLACE语句,假如爆发新旧行替换操作,则受影响的行值为2,因为在这里种情景下,实际上是先删除旧值,后插入新值四个行操作
  • 对此INSERT … ON DUPLICATE KEY UPDATE语句,假若行作为新行插入,则每行的affected计数为1,借使产生旧行更新为新行则每行affected计数为2,若无产生任何插入和翻新,则每行的affected计数为0 (但假设钦点了CLIENT_FOUND_ROWS标记,则还未生出任何的插入和换代时,即set值就为近来的值时,每行的受影响行值计数为1并非0)
  • 在积累进度的CALL语句调用之后,mysql_affected_rows()重返的熏陶行数是积存程序中的最终三个说话实施的震慑行数值,借使该语句重回-1,则存款和储蓄程序最后重返0受影响。所以在积攒程序执行时回来的震慑行数并不保险,然而你能够自动在存款和储蓄程序中落到实处多个流速计变量在SQL等级使用ROW_COUNT()来博取各种语句的受影响的行值并相加,最终经过存款和储蓄程序重回那些变量值。
  • 在MySQL 5.7中,mysql_affected_rows()为越多的讲话重返二个有含义的值。

* 1)、对于DDL语句,row_count(卡塔尔函数重返0,比如:CREATE TABLE、ALTER TABLE、DROP TABLE之类的语句

* 2)、对于除SELECT之外的DML语句:row_count(卡塔尔函数重临实际数据变动的行数。比方:UPDATE、INSERT、DELETE语句,现在也适用于LOAD DATA INFILE之类的言语,大于0的重临值表示DML语句做了数额变动,如果回到为0,则代表DML语句未有做其余数据变动,可能尚未与where子句相称的记录,尽管回去-1则意味语句重临了不当

* 3)、对于SELECT语句:row_count(卡塔尔(英语:State of Qatar)函数再次回到-1,比如:SELECT * FROM t1语句,ROW_COUNT()返回-1(对于select语句,在调用mysql_store_result()之前调用了mysql_affected_rows()重回了)。不过对于SELECT * FROM t1 INTO OUTFILE'file_name'那样的说话,ROW_COUNT()函数将回到实际写入文件中的数据行数

* 4)、对于SIGNAL语句:row_count(卡塔尔(英语:State of Qatar)函数重临0

* 5)、因为mysql_affected_rows()重临的是贰个无符号值,所以row_count(卡塔尔(英语:State of Qatar)函数重回值小于等于0时都退换为0值再次回到也许不回来给effected值,row_count(卡塔尔(英语:State of Qatar)函数再次来到值大于0时则赶回给effected值

ROWS_SENT:语句再次回到给顾客端的数量行数

ROWS_EXAMINED:在实施语句时期从存款和储蓄引擎读取的数额行数

CREATED_TMP_DISK_TABLES:像Created_tmp_disk_tables状态变量相符的计数值,可是此地只用于这么些事件中的语句总括而不照准全局、会话等级

CREATED_TMP_TABLES:像Created_tmp_tables状态变量同样的计数值,可是这里只用于那几个事件中的语句计算而不针对全局、会话等第

SELECT_FULL_JOIN:像Select_full_join状态变量同样的计数值,可是此间只用于这一个事件中的语句计算而不针对全局、会话等级

SELECT_FULL_RANGE_JOIN:像Select_full_range_join状态变量同样的计数值,然而此间只用于这些事件中的语句总计而不照准全局、会话品级

SELECT_RANGE:就像Select_range状态变量相似的计数值,可是此地只用于这一个事件中的语句总计而不照准全局、会话等级

SELECT_RANGE_CHECK:像Select_range_check状态变量相近的计数值,可是此地只用于那个事件中的语句总计而不针对全局、会话等第

SELECT_SCAN:像Select_scan状态变量同样的计数值,可是这里只用于这几个事件中的语句总结而不对准全局、会话级别

SORT_MERGE_PASSES:像Sort_merge_passes状态变量同样的计数值,可是这里只用于那么些事件中的语句计算而不瞄准全局、会话等第

SORT_RANGE:像Sort_range状态变量雷同的计数值,不过此间只用于这一个事件中的语句总结而不针对全局、会话级别

SORT_ROWS:像Sort_rows状态变量肖似的计数值,不过此地只用于那几个事件中的语句总结而不针对全局、会话品级

SORT_SCAN:像Sort_scan状态变量同样的计数值,不过此地只用于这些事件中的语句总括而不照准全局、会话等级

NO_INDEX_USED:假诺语句实施表扫描而不采取索引,则该列值为1,不然为0

NO_GOOD_INDEX_USED:假使服务器找不到用于该语句的合适索引,则该列值为1,不然为0

NESTING_EVENT_ID,NESTING_EVENT_TYPE,NESTING_EVENT_LEVEL:那三列与别的列结合一同利用,为五星级(未知抽象的言语可能说是父语句)语句和嵌套语句(在仓库储存的顺序中施行的言辞)提供以下事件新闻

  • 对此顶尖语句:

OBJECT_TYPE = NULL,OBJECT_SCHEMA = NULL,OBJECT_NAME = NULL,NESTING_EVENT_ID = NULL,NESTING_EVENT_TYPE = NULL,NESTING_LEVEL = 0

  • 对此嵌套语句:OBJECT_TYPE =父语句对象类型,OBJECT_SCHEMA =父语句数据库级名称,OBJECT_NAME =父语句表级对象名称,NESTING_EVENT_ID =父语句EVENT_ID,NESTING_EVENT_TYPE ='STATEMENT',NESTING_LEVEL =父语句NESTING_LEVEL加一,比方:1,表示父语句的下意气风发层嵌套语句

允许使用TRUNCATE TABLE语句

events_statements_history 表

events_statements_history表包罗每一个线程最新的N个语句事件。 在server运营时,N的值会自动调解。 要显式设置N的尺寸,能够在server运转早先安装系统变量performance_schema_events_statements_history_size的值。 statement事件推行到位时才会加多到该表中。 当增添新事件到该表时,如若对应线程的风云在该表中的分配的定额已满,则会舍弃对应线程的较旧的事件

events_statements_history与events_statements_current表构造相仿

PS:允许接受TRUNCATE TABLE语句

events_statements_history_long 表

events_statements_history_long表满含方今的N个语句事件。在server运转时,N的值会自动调解。 要显式设置N的高低,能够在server运行早前安装系统变量performance_schema_events_statements_history_long_size的值。 statement事件须要推行完结时才会增加到该表中。 当增加新事件到该表时,如若该表的大局分配的定额已满,则会遗弃该表中较旧的事件

events_statements_history_long与events_statements_current表布局相仿

PS:允许利用TRUNCATE TABLE语句

作业事件表

事情事件记录表与等待事件记录表同样,也是有三张表,那么些表记录了如今与这几天在MySQL实例中发生了何等事情事件,时间开支是有一点

要小心:事务事件有关布置中,setup_instruments表中唯有三个名称叫transaction的instrument,私下认可关闭,setup_consumers表中transactions相关的consumers配置暗许关闭了

events_transactions_current 表

events_transactions_current表满含当前事务事件新闻,各类线程只保留黄金时代行近些日子事情的事务事件

在含有事务事件音讯的表中,events_transactions_current是底子表。其余满含事务事件消息的表中的数额逻辑上来自当前事件表。比方:events_transactions_history和events_transactions_history_long表分别包涵每种线程如今10行事务事件新闻和大局近日10000行事务事件消息

表记录内容示例(以下新闻来自对某表试行了贰遍select等值查询的职业事件音信)

root@localhost : performance _schema 12:50:10> select * from events_transactions_currentG;

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

THREAD_ID: 46

EVENT_ID: 38685

END_EVENT_ID: 38707

EVENT_NAME: transaction

STATE: COMMITTED

TRX_ID: 422045139261264

GTID: AUTOMATIC

XID_FORMAT_ID: NULL

XID_GTRID: NULL

XID_BQUAL: NULL

XA_STATE: NULL

SOURCE: handler.cc:1421

TIMER_START: 16184509764409000

TIMER_END: 16184509824175000

TIMER_WAIT: 59766000

ACCESS_MODE: READ WRITE

ISOLATION_LEVEL: READ COMMITTED

AUTOCOMMIT: YES

NUMBER_OF_SAVEPOINTS: 0

NUMBER _OF_ROLLBACK _TO_SAVEPOINT: 0

NUMBER _OF_RELEASE_SAVEPOINT: 0

OBJECT_INSTANCE_BEGIN: NULL

NESTING_EVENT_ID: 38667

NESTING_EVENT_TYPE: STATEMENT

1 row in set (0.00 sec)

如上的出口结果与话语的等候事件方式相近,这里不再赘述,events_transactions_current表完整字段含义如下:

THREAD_ID,EVENT_ID:与事件涉及的线程号和事件运行时的事件编号,能够行使THREAD_ID和EVENT_ID列值来唯风姿浪漫标记该行,这两行的值作为整合条件时不会冒出相符的数据行

END_EVENT_ID:当多少个风浪开始实践时,对应行记录的该列值棉被服装置为NULL,当贰个事件实行实现时,对应的行记录的该列值被更新为该事件的ID

EVENT_NAME:搜集该业务事件的instruments的名目。来自setup_instruments表的NAME列值

STATE:当前政工状态。有效值为:ACTIVE(推行了START TRANSACTION或BEGIN语句之后,事务未提交或未回滚早先)、COMMITTED(实行了COMMIT之后)、ROLLED BACK(试行了ROLLBACK语句之后)

TRX_ID:未使用,字段值总是为NULL

GTID:包含gtid_next系统变量的值,其值大概是格式为:UUID:NUMBE讴歌RDX的GTID,也可以有可能是:ANONYMOUS、AUTOMATIC。对于AUTOMATIC列值的业务事件,GTID列在事情提交和相应事务的GTID实际分配时都会举办改变(假使gtid_mode系统变量为ON或ON_PERMISSIVE,则GTID列将改成为业务的GTID,即使gtid_mode为OFF或OFF_PERMISSIVE,则GTID列将改成为ANONYMOUS)

XID_FORMAT_ID,XID_GTRID和XID_BQUAL:XA事务标志符的机件。关于XA事务语法详见链接:

XA_STATE:XA事务的情景。有效值为:ACTIVE(实施了XA START之后,未实行别的后续XA语句以前)、IDLE(实行了XA END语句之后,未实施其余后续XA语句早前)、PREPARED(实施了XA PREPARE语句之后,未奉行别的后续XA语句以前)、ROLLED BACK(实践了XA ROLLBACK语句之后,未实行此外后续XA语句此前)、COMMITTED(试行了XA COMMIT语句之后)

SOURCE:源文件的称号及其用于检查评定该事件的代码坐落于源文件中的行号,您能够检查源代码来规定涉及的代码

TIMER_START,TIMER_END,TIMER_WAIT:事件的光阴音信。这么些值的单位是阿秒(万亿分之生龙活虎秒)。TIMEEscort_START和TIMER_END值表示事件的起头时间和了结时间。TIME福特Explorer_WAIT是事件实践消耗的时刻(持续时间)

  • 假诺事件未实施到位,则TIME奥德赛_END为当前时光,TIME大切诺基_WAIT为方今完工所经过的岁月(TIME奔驰M级_END - TIMER_START)
  • 万一监视仪器配置表setup_instruments中对应的监视器TIMED字段棉被服装置为 NO,则不会征集该监视器的时光音信,那么对于该事件访问的音信记录中,TIMEENCORE_START,TIMER_END和TIMER_WAIT字段值均为NULL

ACCESS_MODE:事务访谈格局。有效值为:READ ONLY或READ W本田UR-VITE

ISOLATION_LEVEL:事务隔开分离品级。有效值为:REPEATABLE READ、READ COMMITTED、READ UNCOMMITTED、SE君越IALIZABLE

AUTOCOMMIT:在业务发轫时是还是不是启用了电动提交方式,倘诺启用则为YES,没有启用则为NO

NUMBER_OF_SAVEPOINTS,NUMBER_OF_ROLLBACK_TO_SAVEPOINT,NUMBER_OF_RELEASE_SAVEPOINT:在事情内试行的SAVEPOINT,ROLLBACK TO SAVEPOINT和RELEASE SAVEPOINT语句的数量

OBJECT_INSTANCE_BEGIN:未利用,字段值总是为NULL

NESTING_EVENT_ID:嵌套事务事件的父事件EVENT_ID值

NESTING_EVENT_TYPE:嵌套事件类型。有效值为:TRANSACTION、STATEMENT、STAGE、WAIT (由于业务不大概嵌套,由此该列值不会产出TRANSACTION)

同意利用TRUNCATE TABLE语句

events_transactions_history 表

events_transactions_history表包括每个线程最近的N个事务事件。 在server运维时,N的值会自动调节。 要显式设置N的轻重,能够在server运维早先设置系统变量

performance_schema_events_transactions_history_size的值。事务事件未实践到位在此以前不会增添到该表中。当有新的事情事件增添到该表时,固然该表已满,则会甩掉对应线程较旧的政工事件

events_transactions_history与events_transactions_current表构造相近

PS:允许使用TRUNCATE TABLE语句

events_transactions_history_long 表

events_transactions_history_long表包含全局近来的N个事务事件。在server运行时,N的值会自动调节。 要显式设置N的大小,能够在server运转在此之前安装系统变量

performance_schema_events_transactions_history_long_size的值。事务事件在推行完早先不会加多到该表中。当增多新职业事件时,如若该表已满,则会抛弃较旧的风云

events_transactions_history_long与events_transactions_current表构造相通

PS:允许行使TRUNCATE TABLE语句

下生机勃勃篇将为大家分享 《事件总计 | performance_schema 全方位介绍》 ,多谢你的读书,大家不见不散!归来和讯,查看愈来愈多

小编:

本文由六合联盟发布于互联网,转载请注明出处:performance_schema全方位介绍六合联盟:

关键词: