performance_schema全方位介绍

2019-12-18 00:22 来源:未知

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

地点的出口结果中,TIMEPAJERO_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值表示事件最先和停止时间。 TIMETucson_WAIT是事件经过岁月(即事件施行了多长期)

  • 万一事件未进行到位,则TIMETiguan_END为当下电磁打点计时器时间值(当前时光),TIME昂科雷_WAIT为近期截至所通过的年月(TIME奔驰F125_END - TIMER_START)
  • 要是采撷该事件的instruments配置项TIMED = NO,则不会征集事件的时刻新闻,TIMEENCORE_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酷路泽IVED,subquery等的表恐怕不记录事件音讯也不举行总括

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

INDEX_NAME:表示使用的目录的名号。P奇骏IMAOdysseyY代表使用到了主键。 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:事件的时间音信。这么些值的单位是飞秒(万亿分之风流倜傥秒)。TIMERubicon_START和TIMER_END值表示事件的起始时间和终止时间。TIMETucson_WAIT是事件施行消耗的年月(持续时间)

  • 若是事件未实行到位,则TIME帕杰罗_END为当下光阴,TIMEMurano_WAIT为日前得了所通过的时光(TIME奥迪Q5_END - TIMER_START)
  • 如果instruments配置表setup_instruments中对应的instruments 的TIMED字段被安装为 NO,则该instruments禁止使用时间搜聚效能,那么事件访问的音信记录中,TIME奥迪Q5_START,TIMER_END和TIMER_WAIT字段值均为NULL

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

  • 表中的WORK_COMPLETED和WORK_ESTIMATED两列,它们一齐同盟展现每大器晚成行的进程呈现:

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

* 2)、WORK_ESTIMATED:展现猜测阶段事件将要实现的办事单元数

  • 借使instruments未有提供过程相关的机能,则该instruments实行事件访谈时就不会有速度音信突显,WO本田UR-VK_COMPLETED和WORK_ESTIMATED列都会展现为NULL。就算进程消息可用,则进程音讯怎么样展示决意于instruments的执增势况。performance_schema表提供了三个囤积进程数据的器皿,但不会假设你会定义何种度量单位来接收这么些进度数据:

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

* 2)、WORK_COMPLETED值依据检查实验的代码分歧,能够三次扩张叁个或八个单元

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

  • 等第事件进程提醒器的表现作为有以下二种状态:

* 1卡塔尔国、instruments不帮助进度:未有可用进程数据, WOTiguanK_COMPLETED和WORK_ESTIMATED列都展现为NULL

* 2卡塔尔(قطر‎、instruments协理进程但相应的劳作负荷总专门的职业量不可预估(无限进程):独有WO奇骏K_COMPLETED列有意义(因为她出示正在实践的速度显示),WO奥迪Q3K_ESTIMATED列那时失效,显示为0,因为还没可预估的总进程数据。通过查询events_stages_current表来监视会话,监察和控制应用程序到最近截止实践了不怎么干活,但不能够告诉对应的职业是还是不是相近成功

* 3卡塔尔(英语:State of Qatar)、instruments扶持进程,总专门的事业量可预估(有限进度):WOHighlanderK_COMPLETED和WORK_ESTIMATED列值有效。这种类型的进程呈现可用于online DDL时期的copy表阶段监视。通过查询events_stages_current表,可监察和控制应用程序当前早就达成了轻微办事,何况能够通过WOTucsonK_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_%';

# 然后在执行ALTE牧马人 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:事件的年月新闻。那几个值的单位是飞秒(万亿分之生机勃勃秒)。 TIMEEscort_START和TIMER_END值表示事件的发端时间和截止时间。TIME途乐_WAIT是事件实施消耗的时光(持续时间)

  • 若果事件未进行到位,则TIMECRUISER_END为方今光阴,TIMEHaval_WAIT为当下了却所经过的时日(TIMEMurano_END - TIMER_START)。
  • 借使监视仪器配置表setup_instruments中对应的监视器TIMED字段被安装为 NO,则不会搜罗该监视器的年月新闻,那么对于该事件访问的音信记录中,TIME中华V_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_EXC60RubiconNO:语句实施的错误号,此值来自代码区域的言辞确诊区域

RETURNED_SQLSTATE:语句实践的SQLSTATE值,此值来自代码区域的语句确诊区域

MESSAGE_TEXT:语句试行的求实错误音信,此值来自代码区域的说话确诊区域

ELacrosseRO昂科拉S:语句推行是还是不是产生错误。就算SQLSTATE值以00(完毕)或01(警示)开端,则该列值为0。别的任何SQLSTATE值时,该列值为1

WA昂CoraNINGS:语句警示数,此值来自代码区域的语句确诊区域

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(卡塔尔(英语:State of Qatar)函数重临值小于等于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:NUMBELX570的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本田UR-V_START和TIMER_END值表示事件的发端时间和了结时间。TIMEENVISION_WAIT是事件实践消耗的岁月(持续时间)

  • 如果事件未实践到位,则TIME汉兰达_END为近期时光,TIMESportage_WAIT为当下了却所经过的年华(TIME奇骏_END - TIMER_START)
  • 风姿浪漫旦监视仪器配置表setup_instruments中对应的监视器TIMED字段被装置为 NO,则不会征集该监视器的时日消息,那么对于该事件访谈的新闻记录中,TIMECR-V_START,TIMER_END和TIMER_WAIT字段值均为NULL

ACCESS_MODE:事务访谈方式。有效值为:READ ONLY或READ WLacrosseITE

ISOLATION_LEVEL:事务隔绝等第。有效值为:REPEATABLE READ、READ COMMITTED、READ UNCOMMITTED、SELANDIALIZABLE

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 全方位介绍》 ,多谢您的读书,我们不见不散!回来博客园,查看越多

网编:

TAG标签:
版权声明:本文由一码一肖100准发布于一码一肖100准管家婆,转载请注明出处:performance_schema全方位介绍