performance_schema全方位介绍

当有些线程结束时,会从threads表中去除对应行。对于与客户端会话关联的线程,当会话甘休时会删除threads表中与客户端会话关联的线程配置音讯行。假使客户端自动重新连接,则也一定于断开3次(会删除断开连接的配置行)再重复制造新的总是,一次接二连三创设的PROCESSLIST_ID值不相同。新线程开始INSTRUMENTED和HISTOKoleosY值或许与断开从前的线程初阶INSTRUMENTED和HISTORAV四Y值分裂:setup_actors表在此期间或许已改动,并且只要一个线程在制造之后,后续再修改了setup_actors表中的INSTRUMENTED或HISTOPRADOY列值,那么继续修改的值不会影响到threads表中早已创办好的线程的INSTRUMENTED或HISTOLacrosseY列值

MySQL Performance-Schema(一) 配置表,performanceschema

      performance-schema最早在MYSQL
5.5中冒出,而现行反革命五.陆,5.七中performance-Schema又增多了更加多的监察项,总计消息也更足够,越来越有ORACLE-AW冠道总括音讯的赶脚,真乃DBA童鞋实行品质检查判断分析的教义。本文首要讲Performance-Schema中的配置表,通过配备表能大约驾驭performance-schema的全貌,为再而三使用和深深了解做准备。

配置表

Performance-Schema中重大有八个布局表,具体如下:

[email protected]_schema
06:03:09>show tables like ‘%setup%’;
+—————————————-+
| Tables_in_performance_schema (%setup%) |
+—————————————-+
| setup_actors |
| setup_consumers |
| setup_instruments |
| setup_objects |
| setup_timers |
+—————————————-+

1.setup_actors用于配置user维度的监察和控制,默许情形下监察和控制全体用户线程。
[email protected]_schema
05:47:27>select * from setup_actors;
+——+——+——+
| HOST | USER | ROLE |
+——+——+——+
| % | % | % |
+——+——+——+

2.setup_consumers表用于配置事件的买主类型,即收集的事件最终会写入到怎么着总括表中。
[email protected]_schema
05:48:16>select * from setup_consumers;
+——————————–+———+
| NAME | ENABLED |
+——————————–+———+
| events_stages_current | NO |
| events_stages_history | NO |
| events_stages_history_long | NO |
| events_statements_current | YES |
| events_statements_history | NO |
| events_statements_history_long | NO |
| events_waits_current | NO |
| events_waits_history | NO |
| events_waits_history_long | NO |
| global_instrumentation | YES |
| thread_instrumentation | YES |
| statements_digest | YES |
+——————————–+———+
能够见到有十三个consumer,假若不想关怀某个consumer,能够将ENABLED设置为NO,比如events_statements_history_long设置为NO,
则搜聚事件不会写入到对应的表events_statements_history_long中。12个consumer不是平级的,存在1体系层次关系。具体如下表:
global_instrumentation
 |– thread_instrumentation
   |– events_waits_current
     |– events_waits_history
     |– events_waits_history_long
   |– events_stages_current
     |– events_stages_history
     |– events_stages_history_long
   |– events_statements_current
     |– events_statements_history
     |– events_statements_history_long
 |– statements_digest

多层次的consumer服从2当中央标准,唯有上一层次的为YES,才会持续检查该本层为YES
or
NO。global_instrumentation是最高等别consumer,尽管它设置为NO,则怀有的consumer都会忽视。尽管只开采global_instrumentation,而关门大吉全部别的子consumer(设置为NO),则只搜罗全局维度的计算音信,比如xxx_instance表,而不会征集用户维度,语句维度的新闻。第一层次的是thread_instrumentation,用户线程维度的计算信息,比如xxx_by_thread表,别的3个是statements_digest,那么些用于全局计算SQL-digest的音讯。第一层次是语句维度,包涵events_waits_current,events_stages_current和events_statements_current,分别用于计算wait,stages和statement音讯,第伍层次是野史表音讯,首要归纳xxx_history和xxx_history_long。

3.setup_instruments表用于配置一条条现实的instrument,主要含有四大类:idle,stage/xxx,statement/xxx,wait/xxx.
[email protected]_schema
06:25:50>select name,count(*) from setup_instruments group by
LEFT(name,5);
+———————————+———-+
| name | count(*) |
+———————————+———-+
| idle | 1 |
| stage/sql/After create | 111 |
| statement/sql/select | 170 |
| wait/synch/mutex/sql/PAGE::lock | 296 |
+———————————+———-+
idle表示socket空闲的年华,stage类表示语句的各种施行级其余总括,statement类总计语句维度的音讯,wait类总括各样等待事件,比如IO,mutux,spin_lock,condition等。从上表总括结果来看,能够主导看到每类的instrument数目,stage包蕴11一个,statement包含16贰十二个,wait包含2九多少个。

4.setup_objects表用于配置监察和控制对象,默许处境下全数mysql,performance_schema和information_schema中的表都不监控。而其余DB的有所表都监察和控制。

[email protected]_schema
06:25:55>select * from setup_objects;
+————-+——————–+————-+———+——-+
| OBJECT_TYPE | OBJECT_SCHEMA | OBJECT_NAME | ENABLED | TIMED |
+————-+——————–+————-+———+——-+
| TABLE | mysql | % | NO | NO |
| TABLE | performance_schema | % | NO | NO |
| TABLE | information_schema | % | NO | NO |
| TABLE | % | % | YES | YES |
+————-+——————–+————-+———+——-+

5.setup_timers表用于配置每类别型指令的计算时间单位。MICROSECOND表示总计单位是神秘,CYCLE表示计算单位是机械钟周期,时间度量与CPU的主频有关,NANOSECOND表示总计单位是飞秒,关于每连串型的具体意思,能够参照performance_timer那几个表。由于wait类包括的都以伺机事件,单个SQL调用次数比较多,由此选拔代价最小的心气单位cycle。但不论使用哪类衡量单位,最后总计表中执会考查总计局计的时光都会装换成阿秒。

[email protected]_schema
06:29:50>select \
from setup_timers;
+———–+————-+
| NAME | TIMER_NAME |
+———–+————-+
| idle | MICROSECOND |
| wait | CYCLE |
| stage | NANOSECOND |
| statement | NANOSECOND |
+———–+————-+*

配置格局

**     
暗许景况下,setup_instruments表只开拓了statement和wait/io部分的指令,setup_consumer表中大多consumer也一贯不展开。为了展开须求的选项,能够透过update语句直接改变配置表,并且修改后得以及时生效,但那种格局必需得运营服务器后才得以修改,并且不恐怕持久化,重启后,又得重新安装二回。从5.6.肆初始提供了my.cnf的布局格局,格式如下:

1.设置收罗的instrument
performance_schema_instrument=’instrument_name=value’
(一)张开wait类型的吩咐
performance_schema_instrument=’wait/%’
(二)张开装有指令
performance_schema_instrument=’%=on’

2.设置consumer
performance_schema_consumer_xxx=value
(1)打开 events_waits_history consumer

performance_schema_consumer_events_waits_current=on

performance_schema_consumer_events_waits_history=on

此地要小心consumer的层次关系, events_waits_history处于第5层,因而设置它时,要有限扶助events_statements_current,thread_instrumentation和global_instrumentation的ENABLED状态都为YES,能力一蹴而就。由于默许thread_instrumentation和global_instrumentation都以YES,因而只必要展示设置events_waits_current和events_waits_current即可。

3.装置总计表大小
所有的performance_schema表均接纳PE奥迪Q7FO猎豹CS⑥MANCE_SCHEMA存款和储蓄引擎,表中的有着数据只设有内部存款和储蓄器,表的轻重缓急在系统开首化时早已
固化好,由此占领的内部存款和储蓄器是毫无疑问的。可以透过部署来定制具体各样表的记录数。
performance_schema_events_waits_history_size=20
performance_schema_events_waits_history_long_size=15000

 

Performance-Schema(1)
配置表,performanceschema performance-schema最早在MYSQL
5.5中冒出,而后天伍.陆,伍.七中performance-Schema又增多了越多的监察项,统…

MySQL Performance-Schema(一) 配置表

performance-schema最早在MYSQL
5.5中出现,而近期五.陆,5.7中performance-Schema又增添了更多的监察项,总括音讯也更增长,越来越有ORACLE-AWR总结音讯的赶脚,真乃DBA童鞋进行质量检查判断分析的教义。本文首要讲Performance-Schema中的配置表,通过配备表能大约了然performance-schema的全貌,为一而再使用和深远领会做准备。

 

配置表

 

Performance-Schema中主要有四个布局表,具体如下:

 

[email protected]_schema
06:03:09>show tables like ‘%setup%’;

+—————————————-+

| Tables_in_performance_schema (%setup%) |

+—————————————-+

| setup_actors |

| setup_consumers |

| setup_instruments |

| setup_objects |

| setup_timers |

+—————————————-+

 

1.setup_actors用于配置user维度的监察,暗中认可意况下监察和控制全数用户线程。

[email protected]_schema
05:47:27>select * from setup_actors;

+——+——+——+

| HOST | USER | ROLE |

+——+——+——+

| % | % | % |

+——+——+——+

 

2.setup_consumers表用于配置事件的消费者类型,即搜罗的轩然大波结尾会写入到什么总结表中。

[email protected]_schema
05:48:16>select * from setup_consumers;

+——————————–+———+

| NAME | ENABLED |

+——————————–+———+

| events_stages_current | NO |

| events_stages_history | NO |

| events_stages_history_long | NO |

| events_statements_current | YES |

| events_statements_history | NO |

| events_statements_history_long | NO |

| events_waits_current | NO |

| events_waits_history | NO |

| events_waits_history_long | NO |

| global_instrumentation | YES |

| thread_instrumentation | YES |

| statements_digest | YES |

+——————————–+———+

能够见到有13个consumer,假诺不想关注有些consumer,能够将ENABLED设置为NO,比如events_statements_history_long设置为NO,

则搜罗事件不会写入到相应的表events_statements_history_long中。十二个consumer不是平级的,存在多种层次关系。具体如下表:

global_instrumentation 

 |– thread_instrumentation

   |– events_waits_current

     |– events_waits_history

     |– events_waits_history_long

   |– events_stages_current

     |– events_stages_history

     |– events_stages_history_long

   |– events_statements_current

     |– events_statements_history

     |– events_statements_history_long

 |– statements_digest

 

多层次的consumer遵循3个为主尺度,只有上一层次的为YES,才会继续检查该本层为YES
or
NO。global_instrumentation是最高档别consumer,即使它设置为NO,则有所的consumer都会忽视。假如只开采global_instrumentation,而倒闭全部其余子consumer(设置为NO),则只搜罗全局维度的总结音讯,比如xxx_instance表,而不会收罗用户维度,语句维度的新闻。第3层次的是thread_instrumentation,用户线程维度的总括音信,比如xxx_by_thread表,其它2个是statements_digest,那几个用于全局统计SQL-digest的新闻。第3层次是语句维度,包罗events_waits_current,events_stages_current和events_statements_current,分别用于计算wait,stages和statement音信,第四层次是野史表信息,主要不外乎xxx_history和xxx_history_long。

 

3.setup_instruments表用于配置一条条切实可行的instrument,首要涵盖四大类:idle,stage/xxx,statement/xxx,wait/xxx.

[email protected]_schema
06:25:50>select name,count(*) from setup_instruments group by
LEFT(name,5);

+———————————+———-+

| name | count(*) |

+———————————+———-+

| idle | 1 |

| stage/sql/After create | 111 |

| statement/sql/select | 170 |

| wait/synch/mutex/sql/PAGE::lock | 296 |

+———————————+———-+

 

idle表示socket空闲的时刻,stage类表示语句的各种实行等第的总结,statement类计算语句维度的音信,wait类总结各类等待事件,比如IO,mutux,spin_lock,condition等。从上表总括结果来看,能够基本看到每类的instrument数目,stage包蕴110个,statement包罗1陆拾四个,wait包蕴2九伍个。

 

4.setup_objects表用于配置监控目的,暗中同意景况下全体mysql,performance_schema和information_schema中的表都不监察和控制。而其余DB的具有表都监控。

 

[email protected]_schema
06:25:55>select * from setup_objects;

+————-+——————–+————-+———+——-+

| OBJECT_TYPE | OBJECT_SCHEMA | OBJECT_NAME | ENABLED | TIMED |

+————-+——————–+————-+———+——-+

| TABLE | mysql | % | NO | NO |

| TABLE | performance_schema | % | NO | NO |

| TABLE | information_schema | % | NO | NO |

| TABLE | % | % | YES | YES |

+————-+——————–+————-+———+——-+

 

5.setup_timers表用于配置每连串型指令的总结时间单位。MICROSECOND表示总括单位是微妙,CYCLE表示总结单位是机械钟周期,时间衡量与CPU的主频有关,NANOSECOND表示总结单位是飞秒,关于每类别型的切实意思,能够参见performance_timer那么些表。由于wait类包涵的都以伺机事件,单个SQL调用次数比较多,因此选择代价最小的气量单位cycle。但不论是使用哪个种类衡量单位,最后总计表中执会考察总计局计的时间都会装换来飞秒。

 

[email protected]_schema
06:29:50>select * from setup_timers;

+———–+————-+

| NAME | TIMER_NAME |

+———–+————-+

| idle | MICROSECOND |

| wait | CYCLE |

| stage | NANOSECOND |

| statement | NANOSECOND |

+———–+————-+

 

布署格局

 

暗许情形下,setup_instruments表只开采了statement和wait/io部分的命令,setup_consumer表中过多consumer也未有张开。为了开发需求的选项,可以透过update语句直接改变配置表,并且修改后得以及时生效,但那种格局必需得运行服务器后才得以修改,并且无法持久化,重启后,又得重新安装1次。从5.陆.四从头提供了my.cnf的布置方式,格式如下:

 

1.安装搜集的instrument

performance_schema_instrument=’instrument_name=value’

(1)张开wait类型的授命

performance_schema_instrument=’wait/%’

(二)展开装有指令

performance_schema_instrument=’%=on’

 

2.设置consumer

performance_schema_consumer_xxx=value

(1)打开 events_waits_history consumer

 

performance_schema_consumer_events_waits_current=on

 

performance_schema_consumer_events_waits_history=on

 

此地要小心consumer的层系关系,
events_waits_history处于第4层,由此设置它时,要保管events_statements_current,thread_instrumentation和global_instrumentation的ENABLED状态都为YES,工夫见效。由于默许thread_instrumentation和global_instrumentation都以YES,因此只需求体现设置events_waits_current和events_waits_current即可。

 

叁.设置总括表大小

所有的performance_schema表均采纳PE奥德赛FO汉兰达MANCE_SCHEMA存款和储蓄引擎,表中的保有数据只存在内部存款和储蓄器,表的轻重缓急在系统发轫化时早已

固化好,因而占领的内部存款和储蓄器是早晚的。能够透过安排来定制具体每一种表的记录数。

performance_schema_events_waits_history_size=20

performance_schema_events_waits_history_long_size=15000

Performance-Schema(一) 配置表
performance-schema最早在MYSQL
5.5中冒出,而现行反革命伍.陆,伍.7中performance-Schema又增多了愈来愈多的监督项,总计音讯也更足够…

THREAD _OS_ID: 3652

……

#剥夺全部文件类instruments,使用NAME字段结合like模糊匹配:

## 除了joe和sam用户之外,别的任何用户从随机主机连接到mysql
server时,相配到首个UPDATE语句更新之后的暗中认可配置行,threads表中对应配置行的INSTRUMENTED和HISTO汉兰达Y列值变为NO

Comment: Performance Schema

  • 对threads表的走访不须求互斥体,对server质量影响十分小。
    而使用INFOOdysseyMATION_SCHEMA.PROCESSLIST和SHOW
    PROCESSLIST查询线程音讯的艺术会消耗一定品质,因为他们供给互斥体
  • threads表为种种线程提供附加音讯,例如:它是前台如故后台线程,以及与线程相关联的server内部消息
  • threads表提供有关后台线程的消息,而INFO福睿斯MATION_SCHEMA.PROCESSLIST和SHOW
    PROCESSLIST不能够提供
  • 可以经过threads表中的INSTRUMENTED字段灵活地动态开关某些线程的监视作用、HISTOLANDY字段灵活地动态按钮有个别线程的野史事件日志记录效用。要调整新的前台线程的初叶INSTRUMENTED和HISTO景逸SUVY列值,通过setup_actors表的HOST、
    USEENCORE对某些主机、用户张开安插。要调节已开立线程的搜聚和历史事件记录功能,通过threads表的INSTRUMENTED和HISTOQX56Y列举办设置
  • 对于INFORMATION_SCHEMA.PROCESSLIST和SHOW
    PROCESSLIST,必要有PROCESS权限,对于threads表只要有SELECT权限就足以查看全体用户的线程消息

setup_actors表字段含义如下:

产品:沃趣科学技术

+————————————————————+———+——-+

(4)setup_instruments表

UPDATEsetup_actors SETENABLED = ‘NO’, HISTORY = ‘NO’WHEREHOST =
‘%’ANDUSER= ‘%’;

| NAME |ENABLED | TIMED |

  • performance_schema_consumer_statements_digest=TRUE

…………

performance-schema-consumer-events-statements-current TRUE

mysql>UPDATE setup_consumers SET ENABLED =’NO’WHERE NAME
=’events_waits_current’;

mysql>UPDATE setup_instruments SET ENABLED = IF(ENABLED = ‘YES’,
‘NO’, ‘YES’) WHERE NAME = ‘wait/synch/mutex/mysys/TMPDIR_mutex’;

专注,这几个运维选项要行之有效的前提是,要求设置performance_schema=ON。其它,这么些运营选项即便不也许采纳show
variables语句查看,但大家得以通过setup_instruments和setup_consumers表查询这个选取钦赐的值。

| TRIGGER |mysql | % |NO | NO |

| FUNCTION |% | % |YES | YES |

是还是不是在MySQL
Server运维时就开启events_statements_summary_by_digest
表的记录功效,运营之后也得以在setup_consumers表中央银行使UPDATE语句举办动态更新digest配置项

(一) 运转选项

只要某些instruments的enabled设置为YES(表示启用那个instruments),可是timed列未设置为YES(表示计时器功用禁止使用),则instruments会发出事件消息,不过事件新闻对应的TIME奥迪Q5_START,TIMER_END和TIMER_WAIT定期器值都为NULL。后续汇总表中总计sum,minimum,maximum和average时间值时会忽略那个null值

INSERTINTOsetup_actors (HOST, USER, ROLE,ENABLED,HISTORY) VALUES(
‘hosta.example.com’, ‘joe’, ‘%’, ‘YES’, ‘NO’);

| wait |CYCLE |

admin@localhost : performance_schema 04:25:55> select * from
threads where TYPE=’FOREGROUND’ limit 2G;

performance-schema-consumer-events-stages-history FALSE

Query OK, 2rows affected(0.00sec)

  • NAME:计时器类型,对应着有些事件连串(事件连串详见 3.三.4 节)
  • TIMER_NAME:计时器类型名称。此列能够修改,有效值参见performance_timers.TIMER_NAME列值
  • PS:对于setup_timers表,不相同意使用TRUNCATE TABLE语句

#关门历史事件记录作用

mysql> SELECT * FROM setup_objects;

|idle | MICROSECOND |

+————-+——————–+————-+———+——-+

| TABLE |% | % |YES | YES |

TYPE: FOREGROUND

| % |% | % |YES | YES |

INSERTINTOsetup_actors (HOST, USER, ROLE,ENABLED,HISTORY) VALUES( ‘%’,
‘sam’, ‘%’, ‘NO’, ‘YES’);

当performance_schema在setup_objects表中开始展览相称检查评定时,会尝试首先找到最切实(最精确)的相配项。例如,在相配db一.t一表时,它会从setup_objects表中先物色“db一”和“t①”的相称项,然后再找找“db一”和“%”,然后再寻觅“%”和“%”。相称的顺序很主要,因为差别的分外行恐怕具备不相同的ENABLED和TIMED列值

能够选拔cmake的编写翻译选项来自行决定你的MySQL实例是不是帮衬performance_schema的有个别等待事件种类,如下:

#剥夺全体instruments的计时器:

–performance-schema-instrument= ‘%=ON’

| TRIGGER |% | % |YES | YES |

+————-+—————–+——————+—————-+

|events_statements_history | YES |

# 关闭全数后台线程的轩然大波采访

| TABLE |db1 | t2 |NO | NO |

| NAME |ENABLED | TIMED |

IT从业多年,历任运转为工人身份程师、高端运营工程师、运营首席营业官、数据库工程师,曾加入版本发布种类、轻量级监察和控制系统、运行管理平台、数据库管理平台的筹划与编写制定,纯熟MySQL连串布局,Innodb存款和储蓄引擎,喜好专研开源技能,追求八面玲珑。

  • instruments名称前缀表示instruments的体系(如wait/io/file/myisam/log中的wait),该前缀名称还用于在setup_timers表中布局某些事件类型的按期器,也被称作顶层组件
  • instruments名称后缀部分来源instruments自个儿的代码。后缀只怕包涵以下层级的机件: *
    重要组件的称谓(如:myisam,innodb,mysys或sql,那几个都以server的子系统模块组件)或插件名称 *
    代码中变量的称呼,格式为XXX(全局变量)或CCC::MMM(CCC表示三个类名,MMM表示在类CCC效用域中的贰个分子对象),如:’wait/synch/cond/sql/COND_thread_cache’
    instruments中的COND_thread_cache,’wait/synch/mutex/mysys/THR_LOCK_myisam’
    instruments中的THR_LOCK_myisam,’wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_index’
    instruments中的MYSQL_BIN_LOG::LOCK_index

本篇内容到此处就象是尾声了,就算阅读了本章内容之后,认为对performance_schema依然比较迷糊,那么提出根据如下步骤动动手、看一看:

关闭与开启全体后台线程的督察采撷功用

| statement |NANOSECOND |

检索innodb存款和储蓄引擎的文书有关的instruments,能够用如下语句询问:

setup_timers表字段含义如下:

| wait/synch/mutex/sql/LOCK_lock_db |YES | YES |

(7)threads表

除外statement(语句)事件之外,wait(等待)事件、state(阶段)事件、transaction(事务)事件,他们与statement事件同样都有四个参数分别开始展览仓库储存限制配置,风乐趣的同窗自行钻研,那里不再赘述

+————-+—————+————-+———+——-+

(1) performance_timers表

| 编写翻译时安插

对此表对象相关事件,instruments是不是见效须求看setup_objects与setup_instruments三个表中的安顿内容相结合,以鲜明是否启用instruments以及计时器功用(例如前边说的I/O事件:wait/io/table/sql/handler
instrument和表锁事件:wait/lock/table/sql/handler
instrument,在setup_instruments配置表中也有醒目标配备选项):

  • 控制events_statements_history表中单个线程(会话)的最大行数,该参数调控单个会话在events_statements_history表中能够存放的轩然大波记录数,超过那么些界定之后,单个会话最早的记录将被覆盖
  • 全局变量,只读变量,整型值,五.陆.3本子引进 *
    5.陆.x版本中,伍.六.伍会同在此之前的版本默以为10,伍.6.6及其之后的版本暗中认可值为-一,日常情状下,自动总括的值都以拾 *
    伍.柒.x版本中,私下认可值为-一,通常意况下,自动测算的值都以十

在setup_instruments表中的instruments超级instruments
组件分类如下:

mysql>UPDATE setup_instruments SET TIMED = ‘NO’;

wait/synch/cond/myisam/MI_SORT_INFO::cond

默许值为TRUE

setup_objects表早先内容如下所示:

| TABLE |db3 | % |NO | NO |

…..

mysql>UPDATE setup_instruments SET ENABLED = IF(NAME LIKE
‘wait/io/file/%’, ‘NO’, ‘YES’);

#仅禁用文件类instruments,启用所有其余instruments,使用NAME字段结合if函数,LIKE模糊相称到就改为NO,未有相称到的就改为YES:

| TABLE |mysql | % |NO | NO |

Query OK, 2rows affected(0.00sec)

threads表字段含义如下:

+————-+—————+————-+———+——-+

PS:

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

  • THREAD_ID:线程的绝无仅有标记符(ID)
  • NAME:与server中的线程检查测试代码相关联的称号(注意,那里不是instruments名称)。例如,thread/sql/one_connection对应于负责处理用户连接的代码中的线程函数名,thread/sql/main表示server的main()函数名称
  • TYPE:线程类型,有效值为:FOREGROUND、BACKGROUND。分别表示前台线程和后台线程,假若是用户创造的连年或然是复制线程创制的连年,则标志为前台线程(如:复制IO和SQL线程,worker线程,dump线程等),要是是server内部创设的线程(无法用户干预的线程),则标识为后台线程,如:innodb的后台IO线程等
  • PROCESSLIST_ID:对应INFORMATION_SCHEMA.PROCESSLIST表中的ID列。该列值与show
    processlist语句、INFOCRUISERMATION_SCHEMA.PROCESSLIST表、connection_id()函数重临的线程ID值相等。别的,threads表中著录了内部线程,而processlist表中并未记录内部线程,所以,对于里边线程,在threads表中的该字段展现为NULL,由此在threads表中NULL值不唯一(恐怕有七个后台线程)
  • PROCESSLIST_USE奇骏:与前台线程相关联的用户名,对于后台线程为NULL。
  • PROCESSLIST_HOST:与前台线程关联的客户端的主机名,对于后台线程为NULL。与INFOLacrosseMATION_SCHEMA
    PROCESSLIST表的HOST列或SHOW
    PROCESSLIST输出的主机列不一致,PROCESSLIST_HOST列不包涵TCP/IP连接的端口号。要从performance_schema中获得端口新闻,需求查询socket_instances表(关于socket的instruments
    wait/io/socket/sql/*暗中认可关闭):
  • PROCESSLIST_DB:线程的暗中认可数据库,如若未有,则为NULL。
  • PROCESSLIST_COMMAND:对于前台线程,该值代表着眼下客户端正在举办的command类型,即使是sleep则象征目前对话处于空闲状态。有关线程command的详细表明,参见链接:
  • PROCESSLIST_TIME:当前线程已处在当前线程状态的持续时间(秒)
  • PROCESSLIST_STATE:表示线程正在做哪些事情。有关PROCESSLIST_STATE值的表明,详见链接:
  • PROCESSLIST_INFO:线程正在实践的讲话,纵然未有推行别的语句,则为NULL。该语句大概是发送到server的语句,也说不定是某些别的语句推行时内部调用的口舌。例如:如若CALL语句试行存款和储蓄程序,则在仓库储存程序中正在推行SELECT语句,那么PROCESSLIST_INFO值将浮现SELECT语句
  • PARENT_THREAD_ID:假设那几个线程是贰个子线程(由另2个线程生成),那么该字段显示其父线程ID
  • ROLE:暂未使用
  • INSTRUMENTED: * 线程施行的风浪是不是被检查测试。有效值:YES、NO *
    壹)、对于前台线程,开始INSTRUMENTED值还亟需看调节前台线程的setup_actors表中的INSTRUMENTED字段值。如果在setup_actors表中找到了对应的用户名和主机行,则会用该表中的INSTRUMENTED字段生成theads表中的INSTRUMENTED字段值,setup_actors表中的USE奥迪Q7和HOST字段值也会1并写入到threads表的PROCESSLIST_USER和PROCESSLIST_HOST列。如若有个别线程产生2个子线程,则子线程会再一次与setup_actors表实行相配 *
    二)、对于后台线程,INSTRUMENTED默认为YES。
    开首值无需查看setup_actors表,因为该表不调整后台线程,因为后台线程未有提到的用户 *
    三)、对于别的线程,其INSTRUMENTED值能够在线程的生命周期内改变 *
    要监视野程产生的风云,如下条件需满意: *
    1)、setup_consumers表中的thread_instrumentation
    consumers必须为YES * 二)、threads.INSTRUMENTED列必须为YES *
    3)、setup_instruments表中线程相关的instruments配置行的ENABLED列必须为YES *
    四)、借使是前台线程,那么setup_actors中对应主机和用户的布署行中的INSTRUMENTED列必须为YES
  • HISTORY: * 是不是记录线程的野史事件。有效值:YES、NO *
    一)、对于前台线程,初阶HISTO奔驰G级Y值还要求看调整前台线程的setup_actors表中的HISTORY字段值。如果在setup_actors表中找到了相应的用户名和主机行,则会用该表中的HISTOTiggoY字段生成theads表中的HISTO普拉多Y字段值,setup_actors表中的USE中华V和HOST字段值也会一并写入到threads表的PROCESSLIST_USER和PROCESSLIST_HOST列。若是有些线程发生一个子线程,则子线程会又一次与setup_actors表举行相称 *
    ②)、对于后台线程,HISTOEnclaveY默以为YES。早先值无需查看setup_actors表,因为该表不调控后台线程,因为后台线程未有关联的用户 *
    3)、对于任何线程,其HISTO大切诺基Y值能够在线程的生命周期内改变 *
    要记录线程发生的野史事件,如下条件需满足: *
    1)、setup_consumers表中相关联的consumers配置必须启用,如:要记录线程的守候事件历史记录,供给启用events_waits_history和events_waits_history_long
    consumers * 2)、threads.HISTOTucsonY列必须为YES *
    3)、setup_instruments表中相关联的instruments配置必须启用 *
    四)、假诺是前台线程,那么setup_actors中对应主机和用户的布局行中的HISTOLacrosseY列必须为YES
  • CONNECTION_TYPE:用于建立连接的合计,假设是后台线程则为NULL。有效值为:TCP/IP(不应用SSL建立的TCP/IP连接)、SSL/TLS(与SSL建立的TCP/IP连接)、Socket(Unix套接字文件一连)、Named
    Pipe(Windows命名管道连接)、Shared Memory(Windows共享内部存款和储蓄器连接)
  • THREAD_OS_ID: * 由操作系统层定义的线程或职分标记符(ID): *
    一)、当二个MySQL线程与操作系统中与有个别线程关联时,那么THREAD_OS_ID字段能够查看到与那个mysql线程相关联的操作系统线程ID *
    2)、当3个MySQL线程与操作系统线程不涉及时,THREAD_OS_ID列值为NULL。例如:用户使用线程池插件时 *
    对于Windows,THREAD_OS_ID对应于Process Explorer中可知的线程ID *
    对于Linux,THREAD_OS_ID对应于gettid()函数获取的值。例如:使用perf或ps
    -L命令或proc文件系统(/proc/[pid]/task/[tid])能够查看此值。
  • PS:threads表不一样意利用TRUNCATE TABLE语句

只顾:在mysqld选项或show
engines语句输出的结果中,假诺看到有performance_schema相关的音讯,并不意味着已经启用了performance_schema,仅仅只是代表数据库支持,倘若急需启用它,还须要在服务器运维时使用系统参数performance_schema=on(MySQL
五.7以前的本子暗中认可关闭)显式开启

+——+——+——+———+———+

–performance-schema-instrument= ‘instrument_name=value’

PROCESSLIST_DB: NULL

| TIMER_NAME |TIMER_FREQUENCY | TIMER_RESOLUTION |TIMER_OVERHEAD |

默许值为TRUE

## 当joe从localhost连接到mysql
server时,则连接符合第二个INSERT语句插入的布局行,threads表中对应配置行的INSTRUMENTED和HISTORAV肆Y列值变为YES

对setup_actors表的修改仅影响修改未来新创设的前台线程,对于修改以前曾经创立的前台线程未有影响,假诺要修改已经创办的前台线程的监督检查和野史事件记录功效,能够修改threads表行的INSTRUMENTED和HISTO景逸SUVY列值:

| FUNCTION |information_schema | % |NO | NO |

对此内部存款和储蓄器instruments,setup_instruments中的TIMED列将被忽视(使用update语句对那几个内存instruments设置timed列为YES时能够实行成功,但是你会发现施行update之后select那些instruments的timed列照旧NO),因为内存操作没有定期器音讯

#
此时,threads表中对应用户的前台线程配置行中INSTRUMENTED和HISTO纳瓦拉Y列生效值如下

+——+——+——+———+———+

setup_timers表中著录当前应用的风浪计时器音讯(注意:该表不扶助增删记录,只协助修改和询问)

+————————————–+———+——-+

root@localhost : performance_schema 05:47:08> update threads
setINSTRUMENTED= ‘YES’whereTYPE= ‘BACKGROUND’;

2 rows in set (0.00 sec)

| NAME |TIMER_NAME |

| events_waits_history_long |NO |

图片 1

+—————————–+———+——-+

instruments:生产者,用于搜集MySQL
中家常便饭的操作产生的风云新闻,对应安排表中的布署项我们得以称之为监察和控制搜聚配置项,以下提起生产者均统称为instruments

## 使用通配符内定开启三个instruments

PARENT _THREAD_ID: 1

instruments的命名格式组成:performance_schema达成的四个前缀结构(如:wait/io/file/myisam/log中的wait+由开拓人士落成的instruments代码定义的一个后缀名称组成(如:wait/io/file/myisam/log中的io/file/myisam/log)

  • 对于各种新的前台server线程,perfromance_schema会合营该表中的User,Host列实行相配,如果相配到有些配置行,则持续同盟该行的ENABLED和HISTO福特ExplorerY列值,ENABLED和HISTO福睿斯Y列值也会用于生成threads配置表中的行INSTRUMENTED和HISTO牧马人Y列。假如用户线程在开创时在该表中绝非相配到User,Host列,则该线程的INSTRUMENTED和HISTO昂CoraY列将安装为NO,表示不对那些线程进行监督检查,不记录该线程的历史事件新闻。
  • 对此后台线程(如IO线程,日志线程,主线程,purged线程等),未有涉及的用户,
    INSTRUMENTED和HISTO途观Y列值默认为YES,并且后台线程在开创时,不会翻动setup_actors表的配置,因为该表只可以调节前台线程,后台线程也不负有用户、主机属性

Query OK, 40 rows affected (0.00 sec)

| wait/synch/mutex/sql/LOCK_manager |YES | YES |

  • 法定文书档案中并未有找到每2个instruments具体的申明文书档案,官方文书档案中列出如下多少个原因: *
    instruments是服务端代码,所以代码只怕时时变动 *
    instruments总量量有数百种,全体列出不现实 *
    instruments会因为您安装的版本分裂而有所区别,每叁个版本所支撑的instruments能够因此询问setup_instruments表获取

PROCESSLIST_USER: NULL

要调控那么些instruments的起停,将ENABLED列设置为YES或NO,要安插instruments是不是搜罗计时器消息,将TIMED列值设置为YES或NO

+————-+——————–+————-+———+——-+

performance_schema配置部分为整个performance_schema的难点,为了持续更加好地上学performance_schema,建议初学者本章内容多读一回。

  • 利用命令行命令 mysqld –verbose –help |grep performance-schema
    |grep -v ‘–‘ |sed ‘一d’ |sed ‘/[0-9]+/d’; 查看完整的运行选项列表
  • 报到到数据库中使用 show variables like
    ‘%performance_schema%’;语句查看完整的system variables列表
  • 登六到数据库中运用 use
    performance_schema;语句切换来schema下,然后使用show
    tables;语句查看一下完整的table列表,并手工实行show create table
    tb_xxx;查看表结构,select * from xxx;查看表中的始末

# 第二种instruments表示myisam引擎的磁盘同步相关的instruments

| wait/lock/table/sql/handler |YES | YES |

罗小波·沃趣科学和技术尖端数据库技巧专家

| TABLE |db1 | t1 |YES | YES |

setup_objects配置表中私下认可的安排规则是不启用对mysql、INFO劲客MATION_SCHEMA、performance_schema数据库下的目的举办监视的(ENABLED和TIMED列值全都为NO)

PROCESSLIST_INFO: NULL

Rows matched: 40 Changed: 40 Warnings: 0

setup_instruments中的instruments
name层级结构图如下:

  • 示例,假如setup_actors表中有如下HOST和USE讴歌MDX值: * USER =’literal’
    and HOST =’literal’ * USER =’literal’ and HOST =’%’ * USER =’%’
    and HOST =’literal’ * USER =’%’ and HOST =’%’
  • 格外顺序很重大,因为不一致的匹配行恐怕全数不一致的USE昂Cora和HOST值(mysql中对于用户帐号是选用user@host实行区分的),依据相配行的ENABLED和HISTO奥迪Q7Y列值来支配对各类HOST,USEHaval或ACCOUNT(USE大切诺基和HOST组合,如:user@host)对应的线程在threads表中生成对应的匹配行的ENABLED和HISTO牧马人Y列值
    ,以便调节是还是不是启用相应的instruments和野史事件记录,类似如下: *
    当在setup_actors表中的最棒相配行的ENABLED =
    YES时,threads表中对应线程的配置行中INSTRUMENTED列值将变为YES,HISTOEnclaveY
    列同理 * 当在setup_actors表中的最好相配行的ENABLED =
    NO时,threads表中对应线程的布局行中INSTRUMENTED列值将改为NO,HISTOOdysseyY
    列同理 *
    当在setup_actors表中找不到杰出时,threads表中对应线程的布置行中INSTRUMENTED和HISTO奥迪Q5Y值值将改成NO *
    setup_actors表配置行中的ENABLED和HISTOCR-VY列值能够互相独立设置为YES或NO,互不影响,一个是是不是启用线程对应的instruments,1个是是或不是启用线程相关的野史事件记录的consumers
  • 暗许意况下,全部新的前台线程启用instruments和野史事件采访,因为setup_actors表中的预设值是host=’%’,user=’%’,ENABLED=’YES’,HISTOLacrosseY=’YES’的。借使要实行更加精致的合营(例如仅对有个别前台线程进行蹲点),那就务供给对该表中的默许值举行修改,如下:

+————-+—————–+——————+—————-+

三).
wait/synch/rwlock:1个线程使用二个读写锁对象对有个别特定变量实行锁定,以免御别的线程同时做客,对于使用共享读锁锁定的能源,七个线程能够同时做客,对于利用独占写锁锁定的财富,只有一个线程能同时做客,该instruments用于搜聚产生读写锁锁定期的事件信息

|events_transactions_history_long | NO |

+————-+————-+

| wait/io/table/sql/handler |YES | YES |

|statements_digest | YES |

当大家接手一个别人安装的MySQL数据库服务器时,可能您并不明白自身设置的MySQL版本是还是不是协理performance_schema时,大家得以由此mysqld命令查看是或不是接济Performance
Schema

events_xxx_summary_by_yyy_by_event_name表的记录成效,运营未来也能够在setup_consumers表中央银行使UPDATE语句进行动态更新线程配置项

performance_schema_events_statements_history_long_size=10000

performance_schema_digests_size=10000

# 插入用户joe@’localhost’对应ENABLED和HISTOTiggoY都为YES的安插行

|transaction | NANOSECOND |

| wait/synch/rwlock/sql/LOCK_grant |YES | YES |

+—————————–+———+——-+

mysql>UPDATE setup_instruments SET ENABLED = ‘NO’;

Rows matched: 2 Changed: 2 Warnings: 0

mysql>UPDATE setup_instruments SET ENABLED = CASE WHEN NAME LIKE
‘%/mysys/%’THEN ‘YES’ELSE ‘NO’END;

performance_schema_max_sql_text_length=1024

发表评论

电子邮件地址不会被公开。 必填项已用*标注