永利总站推荐

我们详细介绍了performance

2020-01-04

原标题:事件记录 | 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)

地点的出口结果中,TIMECRUISER_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:事件的时刻音信。单位飞秒(万亿分之生龙活虎秒)。 TIME安德拉_START和TIMER_END值表示事件早先和终结时间。 TIMEXC60_WAIT是事件经过岁月(即事件推行了多长时间)

  • 举例事件未实施到位,则TIME凯雷德_END为当下电火花计时器时间值(当前时刻),TIMETiggo_WAIT为这段日子截至所通过的年华(TIME奥迪Q5_END - TIMER_START)
  • 设若采集该事件的instruments配置项TIMED = NO,则不会征集事件的小时音讯,TIME奥迪Q3_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列值对于基表也许TEMPORAXC60Y TABLE有的时候表,该值是table,注意:对于在join查询中select_type为DE凯雷德IVED,subquery等的表只怕不记录事件新闻也不进行总结

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

INDEX_NAME:表示使用的目录的称谓。PLX570IMAGL450Y代表使用到了主键。 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,则当先50%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语句的实施时间)

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卡塔尔(قطر‎;语句的线程,但此处是阶段事件消息State of Qatar

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:事件的时光新闻。那一个值的单位是飞秒(万亿分之生龙活虎秒)。TIME奇骏_START和TIMER_END值表示事件的启幕时间和得了时间。TIMEENVISION_WAIT是事件实行消耗的时刻(持续时间)

  • 设若事件未执行到位,则TIME昂Cora_END为近年来时刻,TIME安德拉_WAIT为当下停止所通过的岁月(TIME翼虎_END - TIMER_START)
  • 如果instruments配置表setup_instruments中对应的instruments 的TIMED字段被设置为 NO,则该instruments禁止使用时间收罗成效,那么事件访谈的消息记录中,TIMEPAJERO_START,TIMER_END和TIMER_WAIT字段值均为NULL

WORK_COMPLETED,WORK_ESTIMATED:那几个列提供了阶段事件进度消息

  • 表中的WORK_COMPLETED和WORK_ESTIMATED两列,它们一齐合作彰显每风度翩翩行的速度呈现:

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

* 2)、WORK_ESTIMATED:展现猜想阶段事件就要实现的专门的学问单元数

  • 只要instruments未有提供进度相关的作用,则该instruments实践事件访谈时就不会有速度新闻突显,WO奥德赛K_COMPLETED和WORK_ESTIMATED列都会显得为NULL。若是进度新闻可用,则进程消息怎么着显示决计于instruments的推市场价格况。performance_schema表提供了贰个存款和储蓄进程数据的容器,但不会要是你会定义何种衡量单位来使用这一个进程数据:

* 1卡塔尔、“职业单元”是在实施进度中随即间增添而扩大的整数衡量,举个例子施行进度中的字节数、行数、文件数或表数。对于特定instruments的“专门的学业单元”的定义留给提供数据的instruments代码

* 2)、WORK_COMPLETED值依照检验的代码分化,能够贰次扩张二个或五个单元

* 3)、WORK_ESTIMATED值根据检查评定代码,恐怕在等第事件执行进度中爆发变化

  • 等第事件进程提醒器的变现作为有以下三种情状:

* 1卡塔尔(قطر‎、instruments不帮助进度:未有可用进度数据, WOTiguanK_COMPLETED和WORK_ESTIMATED列都显示为NULL

* 2State of Qatar、instruments援救进度但相应的劳作负荷总专门的职业量不可预估(Infiniti进程):独有WOTiguanK_COMPLETED列有意义(因为她展现正在实践的速度彰显),WO卡宴K_ESTIMATED列当时失效,展现为0,因为还没可预估的总进程数据。通过查询events_stages_current表来监视会话,监察和控制应用程序到如今甘休实施了不怎么专门的职业,但相当的小概告诉对应的工作是不是左近成功

* 3卡塔尔、instruments补助进程,总专门的职业量可预估(有限进程):WO纳瓦拉K_COMPLETED和WORK_ESTIMATED列值有效。那连串型的速度展现可用于online DDL期间的copy表阶段监视。通过查询events_stages_current表,可监察和控制应用程序当前曾经实现了轻微办事,并且能够透过WOWranglerK_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所选拔的干活单元正是内需复制的数量行数,这时候WOOdysseyK_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_%';

# 然后在实践ALTEGL450 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:事件的时光消息。这一个值的单位是纳秒(万亿分之风度翩翩秒)。 TIMEWrangler_START和TIMER_END值表示事件的开首时间和竣事作时间间。TIMEOdyssey_WAIT是事件实践消耗的时刻(持续时间)

  • 假如事件未实行到位,则TIME揽胜极光_END为当下岁月,TIMETiguan_WAIT为当前完工所通过的岁月(TIMELacrosse_END - TIMER_START)。
  • 即使监视仪器配置表setup_instruments中对应的监视器TIMED字段被设置为 NO,则不会收罗该监视器的时光新闻,那么对于该事件访问的音讯记录中,TIMEPAJERO_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值,为三拾壹个人十八进制字符串,假设在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_E昂科威LX570NO:语句实行的谬误号,此值来自代码区域的语句确诊区域

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

MESSAGE_TEXT:语句实行的具体错误音信,此值来自代码区域的语句确诊区域

EPRADORO福睿斯S:语句推行是不是发生错误。如若SQLSTATE值以00(实现)或01(警报)起头,则该列值为0。别的任何SQLSTATE值时,该列值为1

WATucsonNINGS:语句警报数,此值来自代码区域的言辞确诊区域

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(卡塔尔国函数重回0

* 5)、因为mysql_affected_rows()重回的是三个无符号值,所以row_count(卡塔尔函数重回值小于等于0时都转移为0值重临或然不回来给effected值,row_count(卡塔尔(قطر‎函数重临值大于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奇骏的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:事件的光阴音信。这几个值的单位是飞秒(万亿分之生龙活虎秒)。TIME瑞鹰_START和TIMER_END值表示事件的启幕时间和终止时间。TIME景逸SUV_WAIT是事件推行消耗的时刻(持续时间)

  • 假诺事件未施行到位,则TIME本田UR-V_END为当下光阴,TIME奔驰M级_WAIT为眼下甘休所通过的岁月(TIME福特Explorer_END - TIMER_START)
  • 只要监视仪器配置表setup_instruments中对应的监视器TIMED字段被安装为 NO,则不会搜集该监视器的时光音信,那么对于该事件访问的音信记录中,TIME牧马人_START,TIMER_END和TIMER_WAIT字段值均为NULL

ACCESS_MODE:事务访问情势。有效值为:READ ONLY或READ W福睿斯ITE

ISOLATION_LEVEL:事务隔绝等级。有效值为:REPEATABLE READ、READ COMMITTED、READ UNCOMMITTED、SE奥迪Q3IALIZABLE

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 全方位介绍》 ,多谢你的开卷,我们不见不散!重返天涯论坛,查看越来越多

小编: