【金沙js娱乐场】数据库对象事件与性子总结 | performance_schema全方位介绍(五)

5rows inset (0.01sec)

admin@localhost : performance _schema 11:00:44> select * from
file_summary _by_event _name where SUM_TIMER _WAIT !=0 and
EVENT_NAME like ‘%innodb%’ limit 1G;

MySQL Performance-Schema(二) 理论篇,performanceschema

     MySQL
Performance-Schema中总结包蕴伍拾叁个表,首要分为几类:Setup表,Instance表,Wait
Event表,Stage Event表Statement
Event表,Connection表和Summary表。上一篇文章已经首要讲了Setup表,那篇小说将会独家就种种档案的次序的表做详细的叙述。

Instance表
   
 instance中相当重要涵盖了5张表:cond_instances,file_instances,mutex_instances,rwlock_instances和socket_instances。
金沙js娱乐场,(1)cond_instances:条件等待对象实例
表中著录了系统中动用的尺度变量的靶子,OBJECT_INSTANCE_BEGIN为对象的内部存款和储蓄器地址。举例线程池的timer_cond实例的name为:wait/synch/cond/threadpool/timer_cond

(2)file_instances:文件实例
表中记录了系统中开荒了文件的目的,满含ibdata文件,redo文件,binlog文件,用户的表文件等,譬喻redo日志文件:/u01/my3306/data/ib_logfile0。open_count呈现当前文件张开的数目,如果重来未有张开过,不会冒出在表中。

(3)mutex_instances:互斥同步对象实例
表中著录了系统中利用互斥量对象的装有记录,在那之中name为:wait/synch/mutex/*。譬如展开文件的互斥量:wait/synch/mutex/mysys/THTucson_LOCK_open。LOCKED_BY_THREAD_ID显示哪个线程正持有mutex,若没无线程持有,则为NULL。

(4)rwlock_instances: 读写锁同步对象实例
表中著录了系统中动用读写锁对象的装有记录,个中name为
wait/synch/rwlock/*。WRITE_LOCKED_BY_THREAD_ID为正值有着该目的的thread_id,若未有线程持有,则为NULL,READ_LOCKED_BY_COUNT为记录了而且有多少个读者持有读锁。通过
events_waits_current
表能够领略,哪个线程在伺机锁;通过rwlock_instances知道哪个线程持有锁。rwlock_instances的弱项是,只可以记录持有写锁的线程,对于读锁则一点都不大概。

(5)socket_instances:活跃会话对象实例
表中记录了thread_id,socket_id,ip和port,别的表能够因而thread_id与socket_instance举办关联,获取IP-PORT音讯,能够与行使接入起来。
event_name主要含有3类:
wait/io/socket/sql/server_unix_socket,服务端unix监听socket
wait/io/socket/sql/server_tcpip_socket,服务端tcp监听socket
wait/io/socket/sql/client_connection,客户端socket

Wait Event表
     
Wait表首要包含3个表,events_waits_current,events_waits_history和events_waits_history_long,通过thread_id+event_id能够独一鲜明一条记下。current表记录了脚下线程等待的轩然大波,history表记录了每一个线程方今等待的11个事件,而history_long表则记录了近些日子全部线程爆发的壹仟0个事件,这里的10和10000都是足以布署的。那八个表表结构一样,history和history_long表数据都源于current表。current表和history表中恐怕会有再次事件,何况history表中的事件都以到位了的,未有终止的事件不会步入到history表中。
THREAD_ID:线程ID
EVENT_ID:当前线程的风浪ID,和THREAD_ID组成四个Primary Key。
END_EVENT_ID:当事件开端时,这一列被安装为NULL。当事件截止时,再次创下新为当前的风浪ID。
SOURCE:该事件发生时的源码文件
TIMER_START, TIMER_END,
TIMER_WAIT:事件开始/截止和等候的光阴,单位为微秒(picoseconds)

OBJECT_SCHEMA, OBJECT_NAME, OBJECT_TYPE视情形而定
对此联合对象(cond, mutex, rwlock),那一个3个值均为NULL
对于文本IO对象,OBJECT_SCHEMA为NULL,OBJECT_NAME为文件名,OBJECT_TYPE为FILE
对于SOCKET对象,OBJECT_NAME为该socket的IP:SOCK值
对于表I/O对象,OBJECT_SCHEMA是表的SCHEMA名,OBJECT_NAME是表名,OBJECT_TYPE为TABLE或者TEMPORARY
TABLE
NESTING_EVENT_ID:该事件对应的父事件ID
NESTING_EVENT_TYPE:父事件类型(STATEMENT, STAGE, WAIT)
OPERATION:操作类型(lock, read, write)

Stage Event表 

     
 Stage表重要涵盖3个表,events_stages_current,events_stages_history和events_stages_history_long,通过thread_id+event_id能够独一明确一条记下。表中记录了脚下线程所处的实施阶段,由于可以知晓各种阶段的举行时间,由此通过stage表能够获得SQL在每一个阶段消耗的年月。

THREAD_ID:线程ID
EVENT_ID:事件ID
END_EVENT_ID:刚甘休的风云ID
SOURCE:源码地点
TIMER_START, TIMER_END,
TIMER_WAIT:事件始于/截至和等候的时光,单位为皮秒(picoseconds)
NESTING_EVENT_ID:该事件对应的父事件ID
NESTING_EVENT_TYPE:父事件类型(STATEMENT, STAGE, WAIT)

Statement Event表
     
Statement表首要含有3个表,events_statements_current,events_statements_history和events_statements_history_long。通过thread_id+event_id能够独一分明一条记下。Statments表只记录最顶层的伸手,SQL语句或是COMMAND,每条语句一行,对于嵌套的子查询或许存款和储蓄进程不会单独列出。event_name形式为statement/sql/*,或statement/com/*
SQL_TEXT:记录SQL语句
DIGEST:对SQL_TEXT做MD5爆发的33位字符串。借使为consumer表中绝非展开statement_digest选项,则为NULL。
DIGEST_TEXT:将讲话中值部分用问号替代,用于SQL语句归类。假设为consumer表中并未有展开statement_digest选项,则为NULL。
CURRENT_SCHEMA:暗中认可的数据库名
OBJECT_SCHEMA,OBJECT_NAME,OBJECT_TYPE:保留字段,全体为NULL
ROWS_AFFECTED:影响的数额
ROWS_SENT:重返的记录数
ROWS_EXAMINED:读取的记录数据
CREATED_TMP_DISK_TABLES:创制物理不经常表数目
CREATED_TMP_TABLES:创造不经常表数目
SELECT_FULL_JOIN:join时,第八个表为全表扫描的数据
SELECT_FULL_RANGE_JOIN:join时,援用表选取range格局扫描的数码
SELECT_RANGE:join时,第三个表选择range格局扫描的多寡
SELECT_SCAN:join时,第一个表位全表扫描的数量
SORT_ROWS:排序的记录数据
NESTING_EVENT_ID,NESTING_EVENT_TYPE,保留字段,为NULL。

Connection表
   
 Connection表记录了客户端的音讯,重要归纳3张表:users,hosts和account表,accounts包含hosts和users的消息。
USER:用户名
HOST:用户的IP

Summary表
   
Summary表集中了各样维度的总结新闻富含表维度,索引维度,会话维度,语句维度和锁维度的统计音信。
(1).wait-summary表
events_waits_summary_global_by_event_name
境况:按等待事件类型聚合,种种事件一条记下。
events_waits_summary_by_instance
此情此景:按等待事件目标聚合,同一种等待事件,大概有多少个实例,每一种实例有不相同的内部存款和储蓄器地址,因而
event_name+object_instance_begin独一分明一条记下。
events_waits_summary_by_thread_by_event_name
此情此景:按各样线程和事件来计算,thread_id+event_name独一明显一条记下。
COUNT_STA本田UR-V:事件计数
SUM_TIMER_WAIT:总的等待时间
MIN_TIMER_WAIT:最小等待时间
MAX_TIMER_WAIT:最大等待时间
AVG_TIMER_WAIT:平均等待时间

(2).stage-summary表
events_stages_summary_by_thread_by_event_name
events_stages_summary_global_by_event_name
与前方类似

(3).statements-summary表
events_statements_summary_by_thread_by_event_name表和events_statements_summary_global_by_event_name表与前边类似。对于events_statements_summary_by_digest表,
FIRST_SEEN_TIMESTAMP:第三个语句试行的小时
LAST_SEEN_TIMESTAMP:最终三个说话奉行的时刻
气象:用于总括某一段时间内top SQL

(4).file I/O summary表
file_summary_by_event_name [按事件类型总计]
file_summary_by_instance [按实际文件总括]
场景:物理IO维度
FILE_NAME:具体文件名,比方:/u01/my3306/data/tcbuyer_0168/tc_biz_order_2695.ibd
EVENT_NAME:事件名,比如:wait/io/file/innodb/innodb_data_file
COUNT_STAR,SUM_TIMER_WAIT,MIN_TIMER_WAIT,AVG_TIMER_WAIT,MAX_TIMER_WAIT
统计IO操作
COUNT_READ,SUM_TIMER_READ,MIN_TIMER_READ,AVG_TIMER_READ,MAX_TIMER_READ,
SUM_NUMBER_OF_BYTES_READ
统计读
COUNT_WRITE,SUM_TIMER_WRITE,MIN_TIMER_WRITE,AVG_TIMER_WRITE,MAX_TIMER_WRITE,
SUM_NUMBER_OF_BYTES_WRITE
统计写
COUNT_MISC,SUM_TIMER_MISC,MIN_TIMER_MISC,AVG_TIMER_MISC,MAX_TIMER_MISC
总结其余IO事件,比方create,delete,open,close等

(5).Table I/O and Lock Wait Summaries-表
table_io_waits_summary_by_table
依照wait/io/table/sql/handler,聚合每一种表的I/O操作,[逻辑IO]
COUNT_STAR,SUM_TIMER_WAIT,MIN_TIMER_WAIT,AVG_TIMER_WAIT,MAX_TIMER_WAIT
统计IO操作
COUNT_STAR,SUM_TIMER_WAIT,MIN_TIMER_WAIT,AVG_TIMER_WAIT,MAX_TIMER_WAIT
统计读
COUNT_WRITE,SUM_TIMER_WRITE,MIN_TIMER_WRITE,AVG_TIMER_WRITE,
MAX_TIMER_WRITE
统计写
COUNT_FETCH,SUM_TIMER_FETCH,MIN_TIMER_FETCH,AVG_TIMER_FETCH,
MAX_TIMER_FETCH
与读同样
COUNT_INSERT,SUM_TIMER_INSERT,MIN_TIMER_INSERT,AVG_TIMER_INSERT,MAX_TIMER_INSERT
INSERT计算,相应的还应该有DELETE和UPDATE总结。

(6).table_io_waits_summary_by_index_usage
与table_io_waits_summary_by_table类似,按索引维度总计

(7).table_lock_waits_summary_by_table
会合了表锁等待事件,包含internal lock 和 external lock。
internal lock通过SQL层函数thr_lock调用,OPERATION值为:
read normal
read with shared locks
read high priority
read no insert
write allow write
write concurrent insert
write delayed
write low priority
write normal

external lock则通过接口函数handler::external_lock调用存款和储蓄引擎层,
OPERATION列的值为:
read external
write external

(8).Connection Summaries表
events_waits_summary_by_account_by_event_name
events_waits_summary_by_user_by_event_name
events_waits_summary_by_host_by_event_name
events_stages_summary_by_account_by_event_name
events_stages_summary_by_user_by_event_name
events_stages_summary_by_host_by_event_name
events_statements_summary_by_account_by_event_name
events_statements_summary_by_user_by_event_name
events_statements_summary_by_host_by_event_name

(9).socket-summaries表
socket_summary_by_instance
socket_summary_by_event_name

其它表
performance_timers: 系统扶助的总结时间单位
threads: 监视服务端的如今运转的线程

Performance-Schema(二)
理论篇,performanceschema MySQL
Performance-Schema中总括包涵五10个表,重要分为几类:Setup表,Instance表,Wait
Event表,Stage Ev…

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

*
COUNT_MISC,SUM_TIMER_MISC,MIN_TIMER_MISC,AVG_TIMER_MISC,MAX_TIMER_MISC:那么些列总计了有着别的文件I/O操作,包涵CREATE,DELETE,OPEN,CLOSE,STREAM_OPEN,STREAM_CLOSE,SEEK,TELL,FLUSH,STAT,FSTAT,CHSIZE,RENAME和SYNC系统调用。注意:这一个文件I/O操作未有字节计数新闻。

| events_transactions_history |

·file_summary_by_event_name:依据每种事件名称进行计算的公文IO等待事件

qogir_env@localhost :
performance_schema 06:27:26>
SELECT * FROM file_instances limit 20;

instance表记录了怎么样项目标靶子被检查测量检验。那么些表中著录了事件名称(提供收罗作用的instruments名称)及其一些解释性的场合新闻(比如:file_instances表中的FILE_NAME文件名称和OPEN_COUNT文件伸开次数),instance表首要有如下多少个:

OBJECT_NAME: NULL

(1)metadata_locks表

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

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

Rowsmatched: 3 Changed: 3 Warnings: 0

…………

|
events_waits_summary_by_host_by_event_name |

·要是值为NULL,则意味表I/O未有动用到目录

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

3rows inset ( 0. 00sec)

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

当客户端连接到MySQL
server时,它的用户名和主机名都是特定的。performance_schema依照帐号、主机、用户名对这一个连接的总括音讯进行分拣并保留到各样分类的总是消息表中,如下:

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

1 row in set (0.00 sec)

最终,简介了performance_schema中由哪些表组成,那么些表差不离的功能是怎么。

那一个连接表都允许使用TRUNCATE TABLE语句:

| Engine |Support | Comment

| 3 |_client_name | libmysql |1|

利用show命令来查询你的数据库实例是还是不是接济INFORMATION_SCHEMA引擎

admin@localhost : performance _schema 11:10:42> select * from
objects_summary _global_by _type where SUM_TIMER_WAIT!=0G;

……

·file_summary_by_instance:遵照各个文件实例(对应现实的种种磁盘文件,举例:表sbtest1的表空间文件sbtest1.ibd)实行总括的文件IO等待事件

|
events_statements_summary_by_thread_by_event_name |

通过对以下多个表实践查询,能够兑现对应用程序的监控或DBA能够检验到事关互斥体的线程之间的瓶颈或死锁音信(events_waits_current能够查看到日前正值班守护候互斥体的线程新闻,mutex_instances能够查阅到近年来有个别互斥体被哪些线程持有)。

| wait/io/file/myisam/kfile |411193611|

| file_summary_by_instance |

| users |

表字段含义与session_account_connect_attrs表同样,可是该表是保留全部连接的总是属性表。

| variables_by_thread |

admin@localhost : performance_schema 06:50:03> show tables like
‘%table%summary%’;

|
/data/mysqldata1/mydata/mysql/help_relation.ibd
|wait/io/file/innodb/innodb_data_file | 3 |

| socket_summary_by_event_name |

| accounts |

·mutex_instances:wait sync相关的Mutex对象实例;

当大家看来PE奇骏FORMANCE_SCHEMA
对应的Support
字段输出为YES时就代表大家当前的数据库版本是永葆performance_schema的。但掌握大家的实例支持performance_schema引擎就能够使用了吗?NO,很不满,performance_schema在5.6会同此前的版本中,暗中同意未有启用,从5.7及其之后的本子才修改为默许启用。以后,我们来探视怎么着设置performance_schema默许启用吧!

1.数目库表等第对象等待事件计算

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

|wait/synch/rwlock/session/LOCK_srv_session_collection | 31856216
|NULL | 0 |

|
/data/mysqldata1/mydata/mysql/innodb_index_stats.ibd
|wait/io/file/innodb/innodb_data_file | 3 |

mutex_instances表字段含义如下:

|wait/synch/mutex/mysys/THR_LOCK_malloc | 6419 |

1 row in set (0.00 sec)

从上文中大家早已领悟,performance_schema在5.7.x及其以上版本中私下认可启用(5.6.x及其以下版本默许关闭),借使要显式启用或关闭时,大家必要使用参数performance_schema=ON|OFF设置,并在my.cnf中进行配置:

原题目:数据库对象事件与品质总结 | performance_schema全方位介绍(五)

| EVENT_NAME |COUNT_STAR |

·COUNT_MISC,SUM_TIMER_MISC,MIN_TIMER_MISC,AVG_TIMER_MISC,MAX_TIMER_MISC:那个列总计了独具其余套接字操作,如socket的CONNECT、LISTEN,ACCEPT、CLOSE、SHUTDOWN类型操作。注意:这几个操作未有字节计数

OPERATION: lock

2.表I/O等待和锁等待事件总计

qogir_env@localhost : performance_schema 03:21:06> show tables from
performance_schema;

从客户端发送到服务器的总是属性数据量存在限制:客户端在接连此前客户端有贰个友好的长久长度限制(不可配置)、在客户端连接server时服务端也会有一个稳住长度限制、以及在客户端连接server时的连天属性值在存入performance_schema中时也许有二个可配置的尺寸限制。

TIMER_WAIT: 65664

STATEMENT_NAME: stmt

|
/data/mysqldata1/mydata/mysql/help_category.ibd
|wait/io/file/innodb/innodb_data_file | 3 |

·OBJECT_INSTANCE_BEGIN:prepare语句事件的instruments
实例内部存款和储蓄器地址。

金沙js娱乐场 1

·当待管理的锁伏乞超时,会回到错误消息(E大切诺基_LOCK_WAIT_TIMEOUT)给乞请锁的对话,锁状态从PENDING更新为TIMEOUT;

21 rows inset (0.00 sec)

| table_lock_waits_summary_by_table |#
依照每一种表打开总计的表锁等待事件

| events_statements_history |

1row inset ( 0. 00sec)

展开等待事件的搜聚器配置项按键,必要修改setup_instruments
配置表中对应的搜聚器配置项

·THREAD_ID:由server分配的里边线程标记符,每一种套接字都由单个线程进行田间管理,因而每种套接字都得以映射到叁个server线程(假诺能够映射的话);

| 13 |2259|
wait/synch/mutex/innodb/fil_system_mutex |8708688|

(2)users表

|wait/io/file/sql/pid | 72591750 |

*
events_waits_current表中得以查看到当下正在等候互斥体的线程时间消息(举个例子:TIME普拉多_WAIT列表示已经等候的年月)

EVENT_NAME:
wait/synch/mutex/innodb/log_sys_mutex

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

  1. 启用performance_schema不会促成server的行为爆发变化。举个例子,它不会变动线程调整机制,不会导致查询实践布置(如EXPLAIN)发生变化
  2. 启用performance_schema之后,server会持续不间断地监测,成本异常的小。不会导致server不可用
  3. 在该兑现机制中绝非扩展新的至关重大字或言辞,深入分析器不会转移
  4. 即使performance_schema的监测机制在里头对某件事件实行监测退步,也不会影响server平时运维
  5. 假定在开班采撷事件数量时相遇有另外线程正在针对这么些事件新闻举行查询,那么查询会优先试行事件数量的访问,因为事件数量的访谈是三个缕缕不断的长河,而搜索(查询)这一个事件数量仅仅只是在急需查阅的时候才举办寻找。也说不定有些事件数量永世都不会去索求
  6. 供给很轻便地增加新的instruments监测点
  7. instruments(事件访谈项)代码版本化:即使instruments的代码发生了转移,旧的instruments代码还足以继续做事。
  8. 注意:MySQL sys
    schema是一组对象(包涵有关的视图、存储进程和函数),能够实惠地探问performance_schema收罗的多寡。相同的时间搜寻的数据可读性也越来越高(举例:performance_schema中的时间单位是微秒,经过sys
    schema查询时会转变为可读的us,ms,s,min,hour,day等单位),sys
    schem在5.7.x版本暗许安装

从地方表中的记录音讯咱们能够看出(与公事I/O事件计算类似,两张表也分别依照socket事件类型总计与遵从socket
instance进行总计)

|performance_schema | ON |

* _runtime_vendor:Java运营条件(JRE)供应商名称

qogir_env@localhost : performance_schema
04:23:52> SELECT * FROM events_waits_current limit 1G

·users:遵照用户名对每一个客户端连接进行总括。

QueryOK, 0 rowsaffected(0.00sec)

OBJECT _INSTANCE_BEGIN: 2658003840

|4|
349 |wait/synch/mutex/innodb/fil_system_mutex | 65664 |

accounts表字段含义如下:

| setup_instruments |

admin@localhost : performance_schema 10:49:34> select * from
socket_instances;

出品:沃趣科技(science and technology)

table_lock_waits_summary_by_table表:

责编:

* _runtime_version:Java运转情形(JRE)版本

qogir_env@localhost :
performance_schema 03:58:38>
show tables like ‘%memory%’;

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

SPINS: NULL

OBJECT_SCHEMA: xiaoboluo

INDEX_NAME: NULL

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

|wait/synch/mutex/mysys/LOCK_alarm | 147
|

MAX_TIMER_WAIT: 18446696808701862260

TIMER_END: 1582395491787190144

·COUNT_WRITE,SUM_TIMER_WRITE,MIN_TIMER_WRITE,AVG_TIMER_WRITE,MAX_TIMER_WRITE,SUM_NUMBER_OF_BYTES_W君越ITE:这么些列总括了具备发送操作(socket的SEND、SENDTO、SENDMSG类型操作,即以server为参照他事他说加以考察的socket写入数据的操作)相关的次数、时间、接收字节数等新闻

1row inset (0.00sec)

COUNT_STAR: 802

Database changed

小编们先来探视表中记录的计算信息是怎么样体统的。

|PERFORMANCE_SCHEMA | YES
|Performance Schema

· 当行消息中CU中华VRENT_CONNECTIONS
字段值为0时,实施truncate语句会删除这几个行;

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

表字段含义与session_account_connect_attrs表字段含义一样。

| Tables_in_performance_schema
(%stage%) |

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

最近,咱们早就大概知道了performance_schema中的重要表的归类,但,怎么样利用他们来为大家提供必要的脾性事件数量吧?上边,大家介绍怎么着通过performance_schema下的配备表来配置与应用performance_schema。

3.文件I/O事件计算

|
events_stages_summary_by_account_by_event_name |

* _os:操作系统类型(举个例子Linux,Win64)

|
/data/mysqldata1/mydata/multi_master/test.ibd
|wait/io/file/innodb/innodb_data_file | 1 |

OBJECT _INSTANCE_BEGIN: 139882156936704

今昔,大家知晓了在 MySQL 5.7.17
版本中,performance_schema
下一共有87张表,那么,这87帐表都以寄存什么数据的啊?我们什么样行使他们来查询我们想要查看的数据吧?先别发急,大家先来拜候那个表是哪些分类的。

1 row in set (0.00 sec)

“翻过这座山,你就足以看来一片海”

·socket_summary_by_instance表:按照EVENT_NAME(该列有效值为wait/io/socket/sql/client_connection、wait/io/socket/sql/server_tcpip_socket、wait/io/socket/sql/server_unix_socket:)、OBJECT_INSTANCE_BEGIN列实行分组

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

OPEN_COUNT:文件当前已开发句柄的计数。假如文件展开然后关门,则展开1次,但OPEN_COUNT列将加一然后减一,因为OPEN_COUNT列只计算当前已开垦的公文句柄数,已关闭的文件句柄会从中减去。要列出server中当前展开的有着文件音讯,能够利用where
WHERE OPEN_COUNT> 0子句进行查看。

|
/data/mysqldata1/mydata/mysql/engine_cost.ibd
|wait/io/file/innodb/innodb_data_file | 3 |

·session_connect_attrs:全体会话的连年属性。

[mysqld]

·NAME:与rwlock关联的instruments名称;

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

|TABLE | xiaoboluo |test | 140568038528544 |0| 0 |NULL | NULL |

|wait/io/file/sql/FRM | 1292823243
|

SUM_ERRORS: 0

11rows inset (0.00sec)

对于使用C
API运行的连续,libmysqlclient库对客户端上的客户端面连接属性数据的总括大小的固化长度限制为64KB:超过限制时调用mysql_options()函数会报C途睿欧_INVALID_PARAMETER_NO错误。别的MySQL连接器大概会安装本人的客户端面包车型大巴连天属性长度限制。

至今,很欢畅的告知我们,我们依照 MySQL
官方文书档案加上我们的申明,整理了一份能够系统学习 performance_schema
的材质分享给大家,为了方便我们阅读,我们整理为了一个文山会海,一共7篇文章。下边,请随行大家一块起来performance_schema系统的就学之旅吧。

·server
监听三个socket以便为网络连接协议提供帮助。对于监听TCP/IP或Unix套接字文件三番两次来讲,分别有一个名叫server_tcpip_socket和server_unix_socket的socket_type值,组成对应的instruments名称;

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

(3)hosts表

WHERE TABLE_SCHEMA =’performance_schema’andengine=’performance_schema’;

* _thread:客户端线程ID(仅适用于Windows)

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

作者们先来看看表中著录的总括音信是如何样子的。

NUMBER_OF_BYTES: NULL

*
使用libmysqlclient编写翻译:php连接的性质会集使用标准libmysqlclient属性,参见上文

12rows inset (0.01sec)

SUM_TIMER_WAIT: 412754363625

| wait/io/file/sql/FRM |452|

·rwlock_instances:wait sync相关的lock对象实例;

| TABLE_NAME |

·当互斥体被灭绝时,从mutex_instances表中去除相应的排挤体行。

_current表中每种线程只保留一条记下,且一旦线程实现事业,该表中不会再记录该线程的轩然大波消息,_history表中著录各个线程已经实施到位的风云消息,但各种线程的只事件新闻只记录10条,再多就能被遮盖掉,*_history_long表中著录全数线程的事件音讯,但总记录数据是一千0行,超越会被遮住掉,以往我们查看一下历史表events_waits_history
中记录了什么样:

OBJECT_NAME: test

| users |

* mysqlbinlog定义了_client_role属性,值为binary_log_listener

| wait/synch/mutex/sql/LOCK_open
|88|

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

|
/data/mysqldata1/mydata/mysql/server_cost.ibd
|wait/io/file/innodb/innodb_data_file | 3 |

(2)session_connect_attrs表

| setup_consumers |

* file_summary_by_event_name表:按照EVENT_NAME列进行分组 ;

| 0 |

笔者们先来探视表中记录的计算音信是怎么体统的。

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

……

等级事件记录表,记录语句实行的级差事件的表,与话语事件类型的相干记录表类似:

鲁人持竿数据库对象名称(库等第对象和表品级对象,如:库名和表名)进行总计的等候事件。根据OBJECT_TYPE、OBJECT_SCHEMA、OBJECT_NAME列进行分组,遵照COUNT_STAR、xxx_TIMER_WAIT字段进行总结。富含一张objects_summary_global_by_type表。

| Tables_in_performance_schema
(%statement%) |

OBJECT _INSTANCE_BEGIN: 139968890586816

|1、**什么是performance_schema**

metadata_locks表字段含义如下:

#
这么些结果注解,THCRUISER_LOCK_malloc互斥事件是最热的。注:THEscort_LOCK_malloc互斥事件仅在DEBUG版本中存在,GA版本空头支票

INDEX_NAME: PRIMARY

root@localhost : performance_schema
12:18:46> show tables like
‘%setup%’;

·CURRENT_CONNECTIONS:某主机的当下连接数;

qogir_env@localhost :
performance_schema 03:55:07>
show tables like ‘events_stage%’;

·COUNT_STAR,SUM_TIMER_WAIT,MIN_TIMER_WAIT,AVG_TIMER_WAIT,MAX_TIMER_WAIT:这个列总计全部socket读写操作的次数和时间新闻

|wait/synch/mutex/sql/LOCK_plugin | 337
|

应用程序可以选择一些键/值对转移一些接连属性,在对mysql
server成立连接时传递给server。对于C
API,使用mysql_options()和mysql_options4()函数定义属性集。别的MySQL连接器能够使用部分自定义连接属性方法。

| events_statements_summary_by_digest
|

·metadata_locks:元数据锁的兼具和恳求记录;

ORDER BY SUM_TIMER_WAIT DESC LIMIT 10;

·种种文件I/O总计表都有三个或七个分组列,以标记怎么样总计那么些事件消息。这么些表中的轩然大波名称来自setup_instruments表中的name字段:

直接在performance_schema库下使用show
tables语句来查阅有如何performance_schema引擎表:

| OBJECT_TYPE |OBJECT_SCHEMA | OBJECT_NAME |OBJECT_INSTANCE_BEGIN |
OWNER_THREAD_ID |OWNER_EVENT_ID | INTERNAL_LOCK |EXTERNAL_LOCK |

| wait/synch/mutex/mysys/THR_LOCK_open
|187|

·WRITE_LOCKED_BY_THREAD_ID:当一个线程当前在独占(写入)格局下持有一个rwlock时,WHighlanderITE_LOCKED_BY_THREAD_ID列能够查阅到具有该锁的线程THREAD_ID,若无被别的线程持有则该列为NULL;

THREAD_ID: 4

·EVENT_NAME:生成事件音讯的instruments
名称。与setup_instruments表中的NAME值对应;

EVENT_ID: 60

·session_account_connect_attrs:记录当前对话及其相关联的任何会话的总是属性;

……

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

2.2. 启用performance_schema

OWNER_EVENT_ID: 54

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

|NULL | NULL |41| 45 |

9rows inset (0.00sec)

admin@localhost : performance _schema 04:55:42> select * from
metadata_locksG;

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

与objects_summary_global_by_type
表总计音信类似,表I/O等待和锁等待事件总括音信更为精致,细分了各种表的增加和删除改查的实施次数,总等待时间,最小、最大、平均等待时间,乃至精细到某些索引的增加和删除改查的守候时间,表IO等待和锁等待事件instruments(wait/io/table/sql/handler和wait/lock/table/sql/handler
)默许开启,在setup_consumers表中无实际的照管配置,暗中认可表IO等待和锁等待事件总计表中就能总结有关事件新闻。蕴含如下几张表:

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

admin@localhost : performance_schema 11:00:45> select * from
session_account_connect_attrs;

| Tables_in_performance_schema
(%memory%) |

·server只接受的总是属性数据的总结大小限制为64KB。假若客户端尝试发送当先64KB(正好是三个表全数字段定义长度的总限制长度)的属性数据,则server将拒绝该连接;

|
events_statements_summary_by_user_by_event_name |

注意:rwlock_instances表中的音信只好查看到持有写锁的线程ID,不过不可能查看到有着读锁的线程ID,因为写锁W大切诺基ITE_LOCKED_BY_THREAD_ID字段记录的是线程ID,读锁唯有二个READ_LOCKED_BY_COUNT字段来记录读锁被某个个线程持有。

qogir_env@localhost :
performance_schema 03:13:10>
SHOW VARIABLES LIKE ‘performance_schema’;

|4| _platform |x86_64 | 4 |

TIMER_START: 1582395491787124480

file_instances表不允许利用TRUNCATE TABLE语句。

| file_summary_by_event_name |

*
FEDERATED存款和储蓄引擎连接的program_name属性值被定义为mysqld、定义了_client_role属性,值为federated_storage

|wait/synch/mutex/mysys/THR_LOCK::mutex | 89 |

连日音讯表accounts中的user和host字段含义与mysql系统数据库中的MySQL
grant表(user表)中的字段含义类似。

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

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

|
/data/mysqldata1/mydata/mysql/help_topic.ibd
|wait/io/file/innodb/innodb_data_file | 3 |

# table_io_waits_summary_by_index_usage表

8rows inset (0.00sec)

4rows inset ( 0. 00sec)

正文首先,大概介绍了哪些是performance_schema?它能做哪些?

金沙js娱乐场 2

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

AVG_TIMER_READ: 530278875

qogir_env@localhost :
performance_schema 03:51:36>
show tables like ‘events_statement%’;

EVENT_NAME: wait/io/socket/sql/client_connection

|
memory_summary_by_user_by_event_name |

在服务器端面,会对接二连三属性数据实行长度检查:

2.4.
performance_schema轻便布置与利用

·倘借使插入操作,则不只怕运用到目录,此时的总结值是鲁人持竿INDEX_NAME =
NULL计算的

| events_transactions_history_long
|

……

2.1. 反省当前数据库版本是不是支持

*
已做到的等候事件将拉长到events_waits_history和events_waits_history_long表中

| variables_by_thread |

下边临那一个表分别举办介绍。

使用
INFORMATION_SCHEMA.ENGINES表来询问你的数据库实例是还是不是协助INFORMATION_SCHEMA引擎

MIN _TIMER_READ: 56688392

|13| 2261
|wait/synch/mutex/innodb/flush_list_mutex | 122208 |

AVG _TIMER_READ: 56688392

|
events_waits_summary_by_thread_by_event_name |

3rows inset ( 0. 00sec)

|wait/io/file/myisam/dfile | 322401645
|

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

| /data/mysqldata1/undo/undo001
|wait/io/file/innodb/innodb_data_file | 3 |

友情提醒:下文中的总计表中山高校部字段含义与上一篇
《事件计算 | performance_schema全方位介绍》
中提到的总括表字段含义同样,下文中不再赘言。其它,由于局地总括表中的笔录内容过长,限于篇幅会轻松部分文件,如有须求请自行设置MySQL
5.7.11上述版本跟随本文实行同步操作查看。

| setup_actors |

可由此如下语句查看:

|
memory_summary_by_thread_by_event_name |

数据库对象总括表

蹲点文件系统层调用的表:

·READ_LOCKED_BY_COUNT:当三个线程在分享(读)格局下持有三个rwlock时,READ_LOCKED_BY_COUNT列值扩大1,所以该列只是贰个计数器,不可能一贯用来查找是哪位线程持有该rwlock,但它能够用来查看是或不是留存三个有关rwlock的读争用以及查看当前某些许个读情势线程处于活跃状态。

事情事件记录表,记录事务相关的平地风波的表,与话语事件类型的相关记录表类似:

*************************** 3. row
***************************

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

·COUNT_EXECUTE,SUM_TIMER_EXECUTE,MIN_TIMER_EXECUTE,AVG_TIMER_EXECUTE,MAX_TIMER_EXECUTE:实践prepare语句时的有关计算数据。

| FILE_NAME |EVENT_NAME | OPEN_COUNT |

SUM _NUMBER_OF _BYTES_READ: 0

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

OWNER _EVENT_ID: 49

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

那几个表列出了等候事件中的sync子类事件相关的指标、文件、连接。当中wait
sync相关的指标类型有二种:cond、mutex、rwlock。各样实例表皆有二个EVENT_NAME或NAME列,用于展示与每行记录相关联的instruments名称。instruments名称或许具备几个部分并摇身一变档次结构,详见”配置详解
| performance_schema全方位介绍”。

|
/data/mysqldata1/mydata/mysql/plugin.ibd
|wait/io/file/innodb/innodb_data_file | 3 |

MAX _TIMER_READ: 56688392

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

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

Rowsmatched: 323 Changed: 0 Warnings: 0

| EVENT_NAME |OBJECT_INSTANCE_BEGIN | THREAD_ID |SOCKET_ID | IP
|PORT | STATE |

QueryOK, 3 rowsaffected(0.04sec)

performance_schema通过如下表来记录相关的锁消息:

qogir_env@localhost :
performance_schema 03:58:27>
show tables like ‘%file%’;

|admin | localhost |1| 1 |

qogir_env@localhost :
performance_schema 03:55:30>
show tables like ‘events_transaction%’;

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

|4|
341 |wait/synch/mutex/innodb/fil_system_mutex | 84816 |

PS:socket总计表不会总计空闲事件生成的等候事件消息,空闲事件的等候消息是记录在等候事件总括表中开始展览总结的。

FLAGS: NULL

OBJECT_TYPE: TABLE

2.3. performance_schema表的分类

mutex_instances.LOCKED_BY_THREAD_ID和rwlock_instances.WRITE_LOCKED_BY_THREAD_ID列对于排查质量瓶颈或死锁难题至关紧要。

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

| wait/io/socket/sql/client_connection |110667840 | 45 |51|
::ffff:10.10.20.15 |56842| ACTIVE |

|
events_statements_summary_by_account_by_event_name |

SUM_ROWS_AFFECTED: 0

| accounts |

·STATEMENT_ID:由server分配的言语内部ID。文本和二进制协议都施用该语句ID。

MySQL的performance schema 用于监察和控制MySQL
server在三个很低等其他运作进程中的能源消耗、能源等待等景色,它兼具以下特征:

socket_instances表字段含义如下:

|
wait/synch/mutex/sql/THD::LOCK_thd_data |115|

| Tables_in_performance_schema (%file_summary%) |

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

咱俩先来看看表中著录的总计音讯是如何样子的。

ORDER BY COUNT_STAR DESC LIMIT 10;

·rwlock_instances:查看当前rwlock行的局地锁新闻(独占锁被哪些线程持有,共享锁被有个别个线程持有等)。

|
events_statements_summary_by_program |

COUNT_STAR: 24

2.2. 启用performance_schema

3rows inset ( 0. 00sec)

2.1反省当前数据库版本是或不是协理

| qfsys |1| 1 |

***************************

·prepare步骤:语法PREPARE stmt_name FROM
preparable_stmt,示例:PREPARE stmt FROM’SELECT 1′;
实施了该语句之后,在prepared_statements_instances表中就足以查询到叁个prepare示例对象了;

| setup_objects |

……

下卷将为大家分享”performance_schema之二(配置表详解)”
,感谢您的翻阅,大家不见不散!回到新浪,查看更多

OBJECT_SCHEMA: xiaoboluo

qogir_env@localhost :
performance_schema 06:17:23>
SELECT EVENT_NAME,COUNT_STAR FROM
events_waits_summary_global_by_event_name

EVENT_NAME: wait/io/socket/sql/server_tcpip_socket

qogir_env@localhost: performance_schema 03:34:40> UPDATE setup_instruments SET
ENABLED = ‘YES’, TIMED = ‘YES’where name like ‘wait%’;;

(1)accounts表

performance_schema库下的表能够服从监视不一致的纬度举办了分组,举例:或依照不一致数据库对象进行分组,或依照分歧的风浪类型举行分组,或在依据事件类型分组之后,再进一步依据帐号、主机、程序、线程、用户等,如下:

AVG_TIMER_WAIT: 24366870

| /data/mysqldata1/undo/undo004
|wait/io/file/innodb/innodb_data_file | 3 |

admin@localhost : performance_schema 03:23:47> select * from
mutex_instances limit 1;

|wait/io/file/sql/casetest | 104324715
|

MIN_TIMER_READ: 0

SOURCE: log0log.cc:1572

| NAME |OBJECT_INSTANCE_BEGIN | LOCKED_BY_THREAD_ID |

动态对performance_schema进行配置的配置表:

·OBJECT_TYPE:展现handles锁的品种,表示该表是被哪些table
handles张开的;

| 15 |291|
wait/synch/mutex/innodb/buf_dblwr_mutex |37392|

COUNT_STAR: 1

依据事件类型分组记录质量事件数量的表

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

|
/data/mysqldata1/mydata/mysql/innodb_table_stats.ibd
|wait/io/file/innodb/innodb_data_file | 3 |

亟需全部互斥体的做事负荷能够被感到是处在二个器重岗位的办事,多个查询大概需求以连串化的方法(二回叁个串行)试行那么些重大多数,但那说不定是七个暧昧的性质瓶颈。

| events_statements_current |

| wait/io/socket/sql/client_connection |110668160 | 46 |53| |0| ACTIVE
|

|
events_transactions_summary_by_user_by_event_name |

*
COUNT_WRITE,SUM_TIMER_WRITE,MIN_TIMER_WRITE,AVG_TIMER_WRITE,MAX_TIMER_WRITE,SUM_NUMBER_OF_BYTES_WCRUISERITE:这么些列总括了具有文件写操作,包涵FPUTS,FPUTC,FPLacrosseINTF,VFPWranglerINTF,FW福睿斯ITE和PWRITE系统调用,还饱含了那个I/O操作的数据字节数

正文小结

·当监听套接字检查评定到三番五次时,srever将接连转移给三个由独立线程管理的新套接字。新连接线程的instruments具备client_connection的socket_type值,组成对应的instruments名称;

| events_transactions_current |

| Tables_in_performance_schema (%table%summary%) |

| NO |NO | NO |

3rows inset ( 0. 00sec)

|
wait/synch/mutex/sql/LOCK_global_system_variables |89|

该表包涵关于内部和外界锁的音信:

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

SOURCE: sql_parse.cc:6031

| setup_timers |

·libmysqlclient客户端库(在MySQL和MySQL Connector /
C发行版中提供)提供以下属性:

|
events_stages_summary_by_host_by_event_name |

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

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

*
file_summary_by_instance表:有相当的FILE_NAME、OBJECT_INSTANCE_BEGIN列,按照FILE_NAME、EVENT_NAME列举办分组,与file_summary_by_event_name
表相比,file_summary_by_instance表多了FILE_NAME和OBJECT_INSTANCE_BEGIN字段,用于记录具体的磁盘文件有关音信。

qogir_env@localhost :
performance_schema 06:14:08>
SELECT THREAD_ID,EVENT_ID,EVENT_NAME,TIMER_WAIT FROM
events_waits_history ORDER BY THREAD_ID limit 21;

| Tables_in_performance_schema (%socket%summary%) |

通过从INFORMATION_SCHEMA.tables表查询有啥performance_schema引擎的表:

……

|
/home/mysql/program/share/charsets/Index.xml
|wait/io/file/mysys/charset

该表允许接纳TRUNCATE TABLE语句。只将总结列重新初始化为零,实际不是删除行。

|
events_statements_summary_global_by_event_name |

| 4 |program_name | mysql |5|

原标题:初相识|performance_schema全方位介绍(一)

·USETiggo:某些连接的用户名,假诺是六个中间线程创制的连接,恐怕是无力回天证实的用户成立的接二连三,则该字段为NULL;

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

2rows inset ( 0. 00sec)

| 0 |

IP:PORT列组合值可用以标志一个总是。该组合值在events_waits_xxx表的“OBJECT_NAME”列中使用,以标记这个事件音信是来源于哪个套接字连接的:

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

table_handles表字段含义如下:

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

·当贰个线程尝试获得已经被有些线程持有的互斥体时,在events_waits_current表中会展现尝试得到这些互斥体的线程相关等待事件消息,显示它正值班守护候的mutex
连串(在EVENT_NAME列中能够见到),并出示正在守候的mutex
instance(在OBJECT_INSTANCE_BEGIN列中得以看来);

| wait/io/file/sql/MYSQL_LOG
|1599816582|

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

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

MIN_TIMER_EXECUTE: 0

| Tables_in_performance_schema
(%transaction%) |

连日属性记录在如下两张表中:

|
events_stages_summary_by_thread_by_event_name |

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

|
events_stages_summary_global_by_event_name |

·ATTR_NAME:连接属性名称;

……

1 row in set (0.00 sec)

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

两张表中记录的原委很周边:

| events_waits_current |

·OWNER_OBJECT_TYPE,OWNER_OBJECT_SCHEMA,OWNER_OBJECT_NAME:对于由客户端会话使用SQL语句直接成立的prepare语句,那一个列值为NULL。对于由存款和储蓄程序成立的prepare语句,这个列值展现相关存款和储蓄程序的音信。假若用户在蕴藏程序中忘记释放prepare语句,那么这么些列可用于查找那几个未释放的prepare对应的贮存程序,使用语句查询:SELECT
OWNEENCORE_OBJECT_TYPE,OWNER_OBJECT_SCHEMA,OWNER_OBJECT_NAME,STATEMENT_NAME,SQL_TEXT
FROM performance_schema.prepared_statemments_instances WHERE
OWNER_OBJECT_TYPE IS NOT NULL;

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

1 row in set (0.00 sec)

今后,是或不是以为上面的介绍内容太过清淡呢?尽管您这么想,那就对了,笔者当时求学的时候也是这么想的。但近年来,对于哪些是performance_schema那几个难点上,比起更早在此以前更清晰了啊?如若您还从未希图要放弃读书本文的话,那么,请随行我们开首步入到”边走边唱”环节呢!

这个音信让你能够精晓会话之间的元数据锁注重关系。不仅可以够看出会话正在等候哪个锁,还能看到眼下全部该锁的会话ID。

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

session_account_connect_attrs表不容许使用TRUNCATE TABLE语句。

NESTING_EVENT_ID: NULL

·LOCK_TYPE:元数据锁子系统中的锁类型。有效值为:INTENTION_EXCLUSIVE、SHARED、SHARED_HIGH_PRIO、SHARED_READ、SHARED_WRITE、SHARED_UPGRADABLE、SHARED_NO_WRITE、SHARED_NO_READ_WRITE、EXCLUSIVE;

END_EVENT_ID: 60

* _platform:客户端机器平台(比方,x86_64)

本篇内容到那边就就如尾声了,相信广大人都感到,我们一大半时候并不会直接选择performance_schema来查询品质数据,而是选拔sys
schema下的视图代替,为啥不直接攻读sys schema呢?那你驾驭sys
schema中的数据是从哪个地方吐出来的呢?performance_schema
中的数据实际上首假诺从performance_schema、information_schema中获得,所以要想玩转sys
schema,周密精晓performance_schema必不可缺。另外,对于sys
schema、informatiion_schema以至是mysql
schema,大家后续也会推出分裂的连续串文章分享给大家。

| NAME |OBJECT_INSTANCE_BEGIN | WRITE_LOCKED_BY_THREAD_ID
|READ_LOCKED_BY_COUNT |

| Tables_in_performance_schema
(%setup%) |

*
如果log_error_verbosity系统变量设置值当先1,则performance_schema还有大概会将错误音讯写入错误日志:

|
events_transactions_summary_global_by_event_name |

·OBJECT_INSTANCE_BEGIN:mutex instruments实例的内部存款和储蓄器地址;

PS:本种类小说所利用的数据库版本为 MySQL
官方 5.7.17版本

5.prepare语句实例总括表

summary表提供具有事件的汇总音信。该组中的表以差别的形式集中事件数量(如:按用户,按主机,按线程等等)。举例:要查阅哪些instruments占用最多的时刻,可以经过对events_waits_summary_global_by_event_name表的COUNT_STAR或SUM_TIMER_WAIT列进行查询(这两列是对事件的记录数实行COUNT(*)、事件记录的TIME汉兰达_WAIT列执行SUM(TIMER_WAIT)总括而来),如下:

performance_schema还总计后台线程和不恐怕验证用户的一而再,对于那一个连接总结行新闻,USEEscort和HOST列值为NULL。

发表评论

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