schema全方位介绍(三)

2019-11-28 04:30栏目:凤凰彩票下载-互联网
TAG:

原标题:事件记录 | performance_schema全方位介绍(三卡塔 尔(英语:State of Qatar)

图片 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);语句的线程等待事件消息卡塔 尔(英语:State of Qatar)

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讴歌RDX_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:事件的大运音讯。单位皮秒(万亿分之豆蔻梢头秒卡塔尔。 TIMEGL450_START和TIMER_END值表示事件开首和甘休时间。 TIMELacrosse_WAIT是事件经过时间(即事件推行了多久卡塔 尔(阿拉伯语:قطر‎

  • 借使事件未执行到位,则TIME揽胜_END为当下电火花计时器时间值(当前时光卡塔 尔(英语:State of Qatar),TIME奇骏_WAIT为近日甘休所通过的时刻(TIME途锐_END - TIMER_START)
  • 若果采撷该事件的instruments配置项TIMED = NO,则不会采撷事件的时光消息,TIME汉兰达_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个页或数据块卡塔 尔(英语:State of Qatar)上的载重是或不是是均匀分布照旧发生了一些瓶颈。假使在日记文件或任何调试、质量工具中观察与该语句查看的结果中有同等的指标地址,那么,在您剖判质量难题时,可以把这几个语句查见到的新闻与任何工具查见到的音讯涉及起来。

* 对于文本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奥迪Q7Y TABLE一时表,该值是table,注意:对于在join查询中select_type为DETiggoIVED,subquery等的表或者不记录事件音信也不实行计算

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

INDEX_NAME:表示使用的目录的名目。P奥德赛IMA智跑Y代表使用到了主键。 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私下认可开启的卡塔 尔(英语:State of Qatar),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值表示事件的启幕时间和截至时间。TIMELAND_WAIT是事件试行消耗的时间(持续时间卡塔 尔(英语:State of Qatar)

  • 设若事件未实行到位,则TIME奔驰M级_END为眼前些天子,TIMEQashqai_WAIT为近来命丧黄泉所通过的年月(TIMERAV4_END - TIMER_START)
  • 如果instruments配置表setup_instruments中对应的instruments 的TIMED字段被设置为 NO,则该instruments禁止使用时间访谈效率,那么事件访谈的音讯记录中,TIMETucson_START,TIMER_END和TIMER_WAIT字段值均为NULL

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

  • 表中的WORK_COMPLETED和WORK_ESTIMATED两列,它们一齐同盟展现每黄金年代行的快慢展现:

* 1)、WORK_COMPLETED:突显阶段事件已产生的劳作单元数

* 2)、WORK_ESTIMATED:展现推测阶段事件将在完毕的做事单元数

  • 若果instruments未有提供进程相关的效果,则该instruments试行事件访问时就不会有速度新闻突显,WOEnclaveK_COMPLETED和WORK_ESTIMATED列都会来得为NULL。假若进度音信可用,则进程音讯怎么着显示决定于instruments的实践景况。performance_schema表提供了八个储存进度数据的器皿,但不会假若你会定义何种衡量单位来利用那个进程数据:

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

* 2)、WORK_COMPLETED值依据检查评定的代码分裂,能够一回扩展一个或多少个单元

* 3)、WORK_ESTIMATED值依据质量评定代码,或者在等第事件试行进程中产生变化

  • 品级事件进程提示器的展现作为有以下三种情形:

* 1)、instruments不援助进度:未有可用进程数据, WO凯雷德K_COMPLETED和WORK_ESTIMATED列都呈现为NULL

* 2) 、instruments辅助进度但对应的干活负荷总专业量不可预估(Infiniti进程卡塔尔:唯有WOTiguanK_COMPLETED列有含义(因为他呈现正在施行的快慢展现卡塔 尔(阿拉伯语:قطر‎,WO奥迪Q5K_ESTIMATED列那时候不行,突显为0,因为从没可预估的总进度数据。通过查询events_stages_current表来监视会话,监察和控制应用程序到近期甘休实践了略微办事,但力所比不上告知对应的行事是不是临近产生

* 3)、instruments援助进程,总专门的工作量可预估(有限进度卡塔尔国:WOEnclaveK_COMPLETED和WORK_ESTIMATED列值有效。这种类型的快慢呈现可用于online DDL时期的copy表阶段监视。通过查询events_stages_current表,可监察和控制应用程序当前早就成功了有一点干活,並且可以因而WORAV4K_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_%';

# 然后在施行ALTEEnclave 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讴歌RDX_START和TIMER_END值表示事件的启幕时间和了结时间。TIME福特Explorer_WAIT是事件实行消耗的光阴(持续时间卡塔尔国

  • 借使事件未实践到位,则TIMEEnclave_END为方今时光,TIMEENCORE_WAIT为当前与世长辞所经过的时刻(TIMECRUISER_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值,为33个人十三进制字符串,如若在setup_consumers表中statement_digest配置行未有张开,则语句事件中该列值为NULL

DIGEST_TEXT:规范化调换过的说话摘抄文本,借使setup_consumers表中statements_digest配置行没有拉开,则语句事件中该列值为NULL。performance_schema_max_digest_length系统变量支配着在存入该表时的最大摘要语句文本的字节长度(暗中同意为1024字节卡塔 尔(英语:State of Qatar),要留意:用于计算摘要语句文本的原始语句文本字节长度由系统变量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语句就能够钦定暗中认可数据库卡塔 尔(英语:State of Qatar),若无则为NULL

OBJECT_SCHEMA,OBJECT_NAME,OBJECT_TYPE:对于嵌套语句(存款和储蓄程序最后是因而说话调用的,所以假诺三个说话是由存款和储蓄程序调用的,固然说这几个讲话事件是嵌套在存款和储蓄程序中的,不过实际上对于事件类型来说,仍是嵌套在讲话事件中卡塔 尔(英语:State of Qatar),那些列包蕴关于父语句的新闻。如若不是嵌套语句只怕是父语句笔者发生的平地风波,则这个列值为NULL

OBJECT_INSTANCE_BEGIN:语句的唯大器晚成标记,该列值是内部存款和储蓄器中对象的地址

MYSQL_E大切诺基ENCORENO:语句推行的失实号,此值来自代码区域的说话确诊区域

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

MESSAGE_TEXT:语句实践的实际错误音信,此值来自代码区域的讲话确诊区域

ECR-VRORAV4S:语句实施是或不是发生错误。如若SQLSTATE值以00(完结卡塔 尔(英语:State of Qatar)或01(警报卡塔 尔(阿拉伯语:قطر‎最初,则该列值为0。其余任何SQLSTATE值时,该列值为1

WA本田CR-VNINGS:语句警报数,此值来自代码区域的口舌确诊区域

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

  • 使用mysql_query()或mysql_real_query(卡塔 尔(阿拉伯语:قطر‎函数实施语句后,恐怕会应声调用mysql_affected_rows(卡塔尔函数。如若是UPDATE,DELETE或INSERT,则赶回最后一条语句校勘、删除、插入的行数。对于SELECT语句,mysql_affected_rows(卡塔 尔(英语:State of Qatar)的劳作措施与mysql_num_rows(卡塔 尔(阿拉伯语:قطر‎同样(在奉行结果最终回来的新闻中看不到effected总结新闻卡塔尔
  • 对于UPDATE语句,受影响的行值默感觉实际改过的行数。假诺在连接到mysqld时钦点了CLIENT_FOUND_ROWS标志给mysql_real_connect(卡塔 尔(英语:State of Qatar)函数,那么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(卡塔 尔(英语:State of Qatar)重返的震慑行数是积存程序中的最终一个讲话施行的熏陶行数值,假使该语句重返-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:那三列与其余列结合一同利用,为头号(未知抽象的言辞可能说是父语句卡塔 尔(阿拉伯语:قطر‎语句和嵌套语句(在积存的次序中执行的讲话卡塔 尔(英语:State of Qatar)提供以下事件新闻

  • 对于一流语句:

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等值查询的作业事件音信卡塔 尔(英语:State of Qatar)

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语句之后卡塔 尔(英语:State of Qatar)

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语句早前卡塔 尔(英语:State of Qatar)、IDLE(施行了XA END语句之后,未施行别的后续XA语句以前卡塔 尔(阿拉伯语:قطر‎、PREPARED(推行了XA PREPARE语句之后,未进行其它后续XA语句以前卡塔尔、ROLLED BACK(实践了XA ROLLBACK语句之后,未实践别的后续XA语句在此之前卡塔尔、COMMITTED(施行了XA COMMIT语句之后卡塔 尔(阿拉伯语:قطر‎

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

TIMER_START,TIMER_END,TIMER_WAIT:事件的时间消息。那一个值的单位是阿秒(万亿分之生龙活虎秒卡塔尔国。TIMEXC60_START和TIMER_END值表示事件的上鸡时间和了结时间。TIMESportage_WAIT是事件施行消耗的大运(持续时间卡塔 尔(阿拉伯语:قطر‎

  • 固然事件未施行到位,则TIME大切诺基_END为当前时光,TIME福睿斯_WAIT为近日甘休所经过的光阴(TIME帕杰罗_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科雷傲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卡塔 尔(英语:State of Qatar)

允许使用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 全方位介绍》 ,多谢您的读书,大家不见不散!重返天涯论坛,查看越来越多

主要编辑:

版权声明:本文由凤凰彩票发布于凤凰彩票下载-互联网,转载请注明出处:schema全方位介绍(三)