【js金沙】schema全方位介绍》中

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

js金沙 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表:记录已经实践完的近年的等候事件历史,暗中认可所无线程的总记录行数为一千0行

要静心:等待事件相关安插中,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)

下面的输出结果中,TIMESportage_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值表示事件初叶和终结时间。
TIMERubicon_WAIT是事件经过岁月(即事件实践了多久)

  • 一经事件未进行到位,则TIME路虎极光_END为当前机械漏刻时间值(当前时间),TIMETiguan_WAIT为近些日子截止所经过的岁月(TIMERAV4_END –
    TIMER_START)
  • 借使搜集该事件的instruments配置项TIMED =
    NO,则不会搜聚事件的时日音信,TIME奥迪Q5_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君越Y
TABLE有的时候表,该值是table,注意:对于在join查询中select_type为DE中华VIVED,subquery等的表也许不记录事件新闻也不举行总结

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

INDEX_NAME:表示使用的目录的称呼。P奥迪Q5IMAENCOREY表示使用到了主键。 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总计的年华蕴涵用于连接缓冲、聚合和重返行到顾客端的操作所开支的年月(即正是成套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:事件的日子消息。这几个值的单位是飞秒(万亿分之一秒)。TIMEEnclave_START和TIMER_END值表示事件的开端时间和甘休时间。TIME陆风X8_WAIT是事件施行消耗的小时(持续时间)

  • 假定事件未实行到位,则TIME路虎极光_END为方今些天子,TIMEXC90_WAIT为当前截止所通过的小运(TIME揽胜极光_END –
    TIMER_START)
  • 如果instruments配置表setup_instruments中对应的instruments
    的TIMED字段被设置为
    NO,则该instruments禁止使用时间访谈功效,那么事件访谈的新闻记录中,TIME奥迪Q3_START,TIMER_END和TIMER_WAIT字段值均为NULL

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

  • 表中的WORK_COMPLETED和WORK_ESTIMATED两列,它们一齐合营呈现每一行的速度显示:

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

*
2)、WORK_ESTIMATED:显示猜想阶段事件将在完结的工作单元数

  • 假若instruments未有提供进度相关的成效,则该instruments推行事件访谈时就不会有速度音信突显,WO宝马7系K_COMPLETED和WORK_ESTIMATED列都会议及展览示为NULL。要是进度消息可用,则进程消息怎么样突显取决于instruments的实市场价格况。performance_schema表提供了三个储存进程数据的器皿,但不会要是你会定义何种衡量单位来行使这几个进度数据:

*
1)、“工作单元”是在实践进度中随时间增添而充实的大背头衡量,例如实践进程中的字节数、行数、文件数或表数。对于特定instruments的“职业单元”的概念留给提供数据的instruments代码

*
2)、WORK_COMPLETED值依照检查评定的代码不一致,能够二遍增添二个或多少个单元

*
3)、WORK_ESTIMATED值依照检查评定代码,大概在等第事件实行进度中发生变化

  • 等第事件进度提醒器的显示作为有以下两种意况:

*
1)、instruments不补助进程:未有可用进程数据,
WOOdysseyK_COMPLETED和WORK_ESTIMATED列都显示为NULL

* 2)
、instruments协助进程但相应的行事负荷总工作量不可预估(Infiniti进程):独有WOSportageK_COMPLETED列有意义(因为她展现正在实行的快慢突显),WOPRADOK_ESTIMATED列此时不行,展现为0,因为尚未可预估的总进程数据。通过查询events_stages_current表来监视会话,监察和控制应用程序到如今截至推行了有个别专业,但力不能支告知对应的劳作是还是不是左近成功

*
3)、instruments支持进程,总职业量可预估(有限过程):WO汉兰达K_COMPLETED和WORK_ESTIMATED列值有效。那体系型的进程显示可用于online
DDL期间的copy表阶段监视。通过查询events_stages_current表,可监察和控制应用程序当前一度到位了某个办事,并且能够通过WO中华VK_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_%’;

# 然后在实践ALTEPAJERO 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表中暗中认可全部线程保留一千0行事件历史新闻

表记录内容示例(以下消息仍然来自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:事件的小时音信。那些值的单位是微秒(万亿分之一秒)。
TIMECRUISER_START和TIMER_END值表示事件的起头时间和了结时间。TIME大切诺基_WAIT是事件施行消耗的年华(持续时间)

  • 要是事件未试行到位,则TIMEXC90_END为当下光阴,TIME索罗德_WAIT为日前终止所通过的日子(TIMEEvoque_END –
    TIMER_START)。
  • 一经济监察视仪器配置表setup_instruments中对应的监视器TIMED字段被安装为
    NO,则不会收集该监视器的岁月新闻,那么对于该事件访问的新闻记录中,TIME普拉多_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时,总计出的摘要语句文本一经超(Jing Chao)出了performance_schema_max_digest_length定义的长度会被截断

CURRENT_SCHEMA:语句使用的暗许数据库(使用use
db_name语句就可以钦赐默许数据库),若无则为NULL

OBJECT_SCHEMA,OBJECT_NAME,OBJECT_TYPE:对于嵌套语句(存款和储蓄程序最后是通过言语调用的,所以假设贰个言辞是由存款和储蓄程序调用的,即便说那一个讲话事件是嵌套在存款和储蓄程序中的,不过事实上对于事件类型来讲,如故是嵌套在言语事件中),那一个列满含关于父语句的音信。假若不是嵌套语句或然是父语句我爆发的事件,则这几个列值为NULL

OBJECT_INSTANCE_BEGIN:语句的独一标记,该列值是内部存款和储蓄器中对象的地点

MYSQL_EGL450福特ExplorerNO:语句实践的错误号,此值来自代码区域的言辞会诊区域

RETURNED_SQLSTATE:语句实行的SQLSTATE值,此值来自代码区域的话语会诊区域

MESSAGE_TEXT:语句实施的求实错误新闻,此值来自代码区域的言辞检查判断区域

E奥迪Q5RO奇骏S:语句施行是不是爆发错误。倘使SQLSTATE值以00(达成)或01(警告)最初,则该列值为0。其他任何SQLSTATE值时,该列值为1

WAKoleosNINGS:语句警告数,此值来自代码区域的话语会诊区域

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()函数再次来到-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奥迪Q5的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奥德赛_WAIT是事件实行消耗的岁月(持续时间)

  • 万一事件未进行到位,则TIME奥迪Q5_END为当下岁月,TIMEEnclave_WAIT为近日终结所通过的时光(TIME汉兰达_END –
    TIMER_START)
  • 假若监视仪器配置表setup_instruments中对应的监视器TIMED字段被装置为
    NO,则不会征集该监视器的时间消息,那么对于该事件访问的新闻记录中,TIMELX570_START,TIMER_END和TIMER_WAIT字段值均为NULL

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

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

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 全方位介绍》
,多谢你的阅读,我们不见不散!回去和讯,查看越来越多

责编:

Copyright @ 2015-2020 js金沙 版权所有
网站地图xml地图