www.4355mg娱乐游戏科技杂志MySQL Performance-Schema(二) 理论篇,performanceschema

·server只接受的连天属性数据的总结大小限制为64KB。固然客户端尝试发送超越64KB(正好是1个表全数字段定义长度的总限制长度)的属性数据,则server将不容该连接;

EVENT_NAME: statement/sql/select

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

     MySQL
Performance-Schema中总结包括5一个表,首要分为几类:Setup表,Instance表,Wait
伊夫nt表,Stage 伊芙nt表Statement
伊芙nt表,Connection表和Summary表。上1篇小说已经首要讲了Setup表,那篇作品将会分别就每种类型的表做详细的描述。

Instance表
   
 instance中驷比不上舌包罗了5张表:cond_instances,file_instances,mutex_instances,rwlock_instances和socket_instances。
(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/TH锐界_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-PO奥德赛T消息,能够与行使接入起来。
event_name重要包括三类:
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表主要涵盖一个表,events_waits_current,events_waits_history和events_waits_history_long,通过thread_id+event_id能够唯1明确一条记下。current表记录了脚下线程等待的风云,history表记录了种种线程方今等待的十三个事件,而history_long表则记录了最近持有线程爆发的一千0个事件,那里的十和一千0都以足以安插的。这多少个表表结构同样,history和history_long表数据都源于current表。current表和history表中大概会有再度事件,并且history表中的事件都以到位了的,未有完毕的风云不会投入到history表中。
THREAD_ID:线程ID
EVENT_ID:当前线程的风云ID,和THREAD_ID组成八个Primary Key。
END_EVENT_ID:当事件初始时,那一列棉被服装置为NULL。当事件甘休时,再立异为当下的事件ID。
SOUQX56CE:该事件时有发生时的源码文件
TIMER_START, TIMER_END,
TIMER_WAIT:事件始于/截至和等候的岁月,单位为微秒(picoseconds)

OBJECT_SCHEMA, OBJECT_NAME, OBJECT_TYPE视情状而定
对于联合对象(cond, mutex, rwlock),那些三个值均为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表主要涵盖一个表,events_stages_current,events_stages_history和events_stages_history_long,通过thread_id+event_id能够唯1明确一条记下。表中著录了当前线程所处的施行等级,由于能够明白种种阶段的实践时间,由此通过stage表能够博得SQL在各类阶段消耗的年华。

THREAD_ID:线程ID
EVENT_ID:事件ID
END_EVENT_ID:刚截至的风云ID
SOUCR-VCE:源码地点
TIMER_START, TIMER_END,
TIMER_WAIT:事件始于/停止和等待的光阴,单位为阿秒(picoseconds)
NESTING_EVENT_ID:该事件对应的父事件ID
NESTING_EVENT_TYPE:父事件类型(STATEMENT, STAGE, WAIT)

Statement Event表
     
Statement表首要含有贰个表,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做MD伍爆发的三十二个人字符串。假设为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表记录了客户端的新闻,首要总结三张表: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唯1分明一条记下。
COUNT_STAEvoque:事件计数
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:第3个语句执行的时光
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中一起包涵55个表,首要分为几类:Setup表,Instance表,Wait
伊夫nt表,Stage Ev…

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

通过对以下多个表执行查询,能够兑现对应用程序的监察或DBA能够检验到关系互斥体的线程之间的瓶颈或死锁消息(events_waits_current能够查看到当前正在等候互斥体的线程消息,mutex_instances能够查看到近日有些互斥体被哪些线程持有)。

COUNT _READ_WRITE: 6

Stage Event表 

AVG_TIMER_EXECUTE: 0

质量事件总括表中的数额条目是不可能去除的,只好把相应总结字段清零;

Wait Event表
     
Wait表主要包罗1个表,events_waits_current,events_waits_history和events_waits_history_long,通过thread_id+event_id能够唯1鲜明一条记下。current表记录了脚下线程等待的轩然大波,history表记录了每一种线程近日守候的拾三个事件,而history_long表则记录了近日具备线程发生的10000个事件,那里的十和10000都是能够配备的。那个表表结构同样,history和history_long表数据都源于current表。current表和history表中只怕会有重复事件,并且history表中的事件都以到位了的,没有甘休的风云不会到场到history表中。
THREAD_ID:线程ID
EVENT_ID:当前线程的风浪ID,和THREAD_ID组成二个Primary
Key。
END_EVENT_ID:当事件初始时,那1列棉被服装置为NULL。当事件结束时,再立异为当下的轩然大波ID。
SOURAV4CE:该事件时有发生时的源码文件
TIMER_START, TIMER_END,
TIMER_WAIT:事件初步/甘休和等待的小运,单位为飞秒(picoseconds)

按照与table_io_waits_summary_by_table的分组列+INDEX_NAME列实行分组,INDEX_NAME有如下二种:

# events_waits_summary_global_by_event_name表

(2)file_instances:文件实例
表中著录了系统中开拓了文件的目的,包含ibdata文件,redo文件,binlog文件,用户的表文件等,比如redo日志文件:/u01/my3306/data/ib_logfile0。open_count突显当前文件打开的数量,要是重来未有打开过,不会现出在表中。

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

| events_transactions_summary_by_thread_by_event_name |

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

·COUNT_WRITE,SUM_TIMER_WRITE,MIN_TIMER_WRITE,AVG_TIMER_WRITE,MAX_TIMER_WRITE,SUM_NUMBER_OF_BYTES_W陆风X8ITE:这几个列总结了全数发送操作(socket的SEND、SENDTO、SENDMSG类型操作,即以server为参考的socket写入数据的操作)相关的次数、时间、接收字节数等新闻

USER: root

Connection表
   
 Connection表记录了客户端的新闻,重要不外乎叁张表:users,hosts和account表,accounts包涵hosts和users的新闻。
USER:用户名
HOST:用户的IP

OWNER_OBJECT_NAME: NULL

* 对于memory
instruments,setup_instruments表中的TIMED列无效,因为内部存款和储蓄器操作不协助时间计算

(3)mutex_instances:互斥同步对象实例
表中著录了系统中接纳互斥量对象的拥有记录,个中name为:wait/synch/mutex/*。比如打开文件的互斥量:wait/synch/mutex/mysys/THENCORE_LOCK_open。LOCKED_BY_THREAD_ID突显哪个线程正持有mutex,若未有线程持有,则为NULL。

·FILE_NAME:磁盘文件名称;

*
LOW_COUNT_USED:如果CURRENT_COUNT_USED裁减一从此是2个新的最低值,则该字段相应回落

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

| file_summary_by_event_name |

*
HIGH_COUNT_USED和HIGH_NUMBER_OF_BYTES_USED是较高的高水位测度值。performance_schema输出的低水位值可以确认保证总括表中的内部存款和储蓄器分配次数和内部存款和储蓄器大于或等于当前server中真实的内部存款和储蓄器分配值

Summary表
   
Summary表聚集了逐一维度的总计新闻包蕴表维度,索引维度,会话维度,语句维度和锁维度的总括消息。
(1).wait-summary表
events_waits_summary_global_by_event_name
情景:按等待事件类型聚合,种种事件一条记下。
events_waits_summary_by_instance
现象:按等待事件指标聚合,同一种等待事件,只怕有七个实例,各类实例有例外的内部存款和储蓄器地址,因而
event_name+object_instance_begin唯1分明一条记下。
events_waits_summary_by_thread_by_event_name
现象:按每一个线程和事件来总结,thread_id+event_name唯壹分明一条记下。
COUNT_STAR:事件计数
SUM_TIMER_WAIT:总的等待时间
MIN_TIMER_WAIT:最小等待时间
MAX_TIMER_WAIT:最大等待时间
AVG_TIMER_WAIT:平均等待时间

大家先来看望表中记录的总结音信是什么样体统的。

5rows inset ( 0. 00sec)

(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

* _program_name:客户端程序名称

SUM _CREATED_TMP_TABLES: 10

(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的欠缺是,只可以记录持有写锁的线程,对于读锁则无从。

贰. 总是属性计算表

root@localhost : performance _schema 11:50:46> update
setup_instruments set enabled=’yes’,timed=’yes’ where name like
‘memory/%’;

(5)socket_instances:活跃会话对象实例
表中记录了thread_id,socket_id,ip和port,其余表能够经过thread_id与socket_instance进行关联,获取IP-PO福特ExplorerT新闻,能够与利用接入起来。
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

·file_instances:文件对象实例;

1 row in set (0.00 sec)

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做MD伍发出的三十二个人字符串。即使为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时,第5个表位全表扫描的多少
SORT_ROWS:排序的笔录数据
NESTING_EVENT_ID,NESTING_EVENT_TYPE,保留字段,为NULL。

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

内部存款和储蓄器大小总括音信有助于掌握当下server的内存消耗,以便及时开始展览内部存款和储蓄器调整。内部存款和储蓄器相关操作计数有助于明白当下server的内部存款和储蓄器分配器的完整压力,及时了解server品质数据。例如:分配单个字节一百万次与单次分配一百万个字节的品质源消花费是见仁见智的,通过跟踪内部存款和储蓄器分配器分配的内部存款和储蓄器大小和分红次数就能够知道两岸的反差。

events_statements_summary_by_account_by_event_name
events_statements_summary_by_user_by_event_name
events_statements_summary_by_host_by_event_name

·USERAV4:某连续的客户端用户名。假设是1个之中线程创制的连接,大概是心有余而力不足证实的用户成立的连天,则该字段为NULL;

# events_statements_summary_by_user_by_event_name表

     MySQL
Performance-Schema中一起包蕴伍拾个表,主要分为几类:Setup表,Instance表,Wait
伊夫nt表,Stage 伊夫nt表Statement
伊夫nt表,Connection表和Summary表。上一篇小说已经首要讲了Setup表,那篇文章将会独家就每种类型的表做详细的叙说。

1 row in set (0.00 sec)

www.4355mg娱乐游戏科技杂志 1

     
 Stage表首要涵盖二个表,events_stages_current,events_stages_history和events_stages_history_long,通过thread_id+event_id能够唯壹分明一条记下。表中记录了脚下线程所处的推行等级,由于能够领略各种阶段的施行时间,因而通过stage表能够得到SQL在各样阶段消耗的日子。

一个老是可知的接连属性集合取决于与mysql
server建立连接的客户端平台项目和MySQL连接的客户端类型。

admin@localhost : performance_schema 06:17:11> show tables like
‘%events_waits_summary%’;

(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

·依赖于连接表中国国投息的summary表在对这一个连接表执行truncate时会同时被隐式地实践truncate,performance_schema维护着依照accounts,hosts或users总括各类风云总结表。这么些表在称呼包含:_summary_by_account,_summary_by_host,*_summary_by_user

注意:那几个表只针对工作事件音信进行总结,即含有且仅包蕴setup_instruments表中的transaction采集器,每种事情事件在各种表中的总计记录行数要求看什么分组(例如:根据用户分组总结的表中,有稍许个活泼用户,表中就会有些许条相同采集器的笔录),此外,总计计数器是还是不是见效还亟需看transaction采集器是或不是启用。

events_stages_summary_by_account_by_event_name
events_stages_summary_by_user_by_event_name
events_stages_summary_by_host_by_event_name

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

HOST: localhost

其它表
performance_timers:
系统接济的总结时间单位
threads:
监视服务端的当下运作的线程

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

# events_statements_summary_global_by_event_name表

(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等

一. 再三再四信息总括表

小编们先来看看这个表中记录的总括信息是哪些体统的。

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)

套接字总计表允许选拔TRUNCATE
TABLE语句(除events_statements_summary_by_digest之外),只将总计列重置为零,而不是去除行。

COUNT_STAR: 58

THREAD_ID:线程ID
EVENT_ID:事件ID
END_EVENT_ID:刚停止的风云ID
SOU锐界CE:源码地点
TIMER_START, TIMER_END,
TIMER_WAIT:事件始于/结束和等候的时间,单位为皮秒(picoseconds)
NESTING_EVENT_ID:该事件对应的父事件ID
NESTING_EVENT_TYPE:父事件类型(STATEMENT,
STAGE, WAIT)

| table_io_waits_summary_by_table |#
依据每种表举行总结的表I/O等待事件

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

(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

·file_summary_by_event_name:遵照每种事件名称举行总括的文本IO等待事件

SUM_SELECT_SCAN: 45

Instance表
   
 instance中要害包括了伍张表:cond_instances,file_instances,mutex_instances,rwlock_instances和socket_instances。
(1)cond_instances:条件等待对象实例
表中记录了系统中选用的原则变量的目的,OBJECT_INSTANCE_BEGIN为对象的内部存储器地址。比如线程池的timer_cond实例的name为:wait/synch/cond/threadpool/timer_cond

·TIMER_PREPARE:执行prepare语句小编消耗的小时。

EVENT_NAME: wait/synch/mutex/mysys/THR_LOCK_heap

(9).socket-summaries表
socket_summary_by_instance
socket_summary_by_event_name

| NULL |41| 45 |

COUNT_STAR: 0

(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
INSEPRADOT总结,相应的还有DELETE和UPDATE计算。

cond_instances表字段含义如下:

MIN _TIMER_WAIT: 0

·PO帕杰罗T:TCP/IP端口号,取值范围为0〜6553五;

当server中的某线程执行了内部存款和储蓄器分配操作时,根据如下规则进行检测与聚集:

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

EVENT _NAME: wait/synch/mutex/sql/TC_LOG _MMAP::LOCK_tc

OWNER_OBJECT_SCHEMA: NULL

EVENT_NAME: statement/sql/select

performance_schema提供了针对prepare语句的督察记录,并遵照如下方法对表中的内容进行保管。

COUNT_STAR: 55

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

MIN _TIMER_WAIT: 0

· NAME:与condition相关联的instruments名称;

*
经常,truncate操作会重置总结信息的准绳数据(即清空以前的数目),但不会修改当前server的内部存款和储蓄器分配等状态。也正是说,truncate内部存款和储蓄器总括表不会自由已分配内部存款和储蓄器

……

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

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

对于未依照帐户、主机、用户聚集的总计表,truncate语句会将总结列值重置为零,而不是去除行。

SUM_LOCK_TIME: 0

AVG _TIMER_READ_WRITE: 1432022000

·file_summary_by_instance:依据每一个文件实例(对应现实的各样磁盘文件,例如:表sbtest一的表空间文件sbtest一.ibd)进行总计的公文IO等待事件

| events_stages_summary_global_by_event_name |

大家先来看望表中著录的计算音信是何等体统的。

1 row in set (0.00 sec)

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

AVG_TIMER_WAIT:给定计时事件的平分等待时间

大家先来看望表中著录的总括消息是怎么着体统的。

root@localhost : performance _schema 11:01:51> select * from
events_statements _summary_by_digest limit 1G

*************************** 2. row
***************************

*
FIRST_SEEN,LAST_SEEN:展现某给定语句第二次插入
events_statements_summary_by_digest表和尾声二遍立异该表的时辰戳

下卷将为大家分享 《复制状态与变量记录表 |
performance_schema全方位介绍》 ,感激您的开卷,我们不见不散!回去微博,查看越来越多

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

同意实施TRUNCATE TABLE语句,可是TRUNCATE
TABLE只是重置prepared_statements_instances表的总括音信列,然而不会删除该表中的记录,该表中的记录会在prepare对象被销毁释放的时候自动删除。

root@localhost : performance _schema 11:37:03> select * from
events_stages _summary_by _thread_by _event_name where thread_id
is not null limit 1G

·OWNER_EVENT_ID:请求元数据锁的轩然大波ID。

当三个可被监察和控制的内存块N被放走时,performance_schema会对总计表中的如下列进行更新:

·socket_instances:活跃接连实例。

……

COUNT _READ_WITH _SHARED_LOCKS: 0

EVENT_NAME: memory/innodb/fil0fil

OBJECT_NAME: test

# events_transactions_summary_by_account_by_event_name表

(2)file_instances表

COUNT _READ_ONLY: 1

MAX_TIMER_WAIT: 18446696808701862260

| memory_summary_global_by_event_name |

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

USER: root

大家先来看望表中记录的总结音讯是怎样体统的。

*
其余,依照帐户,主机,用户或线程分类总计的内部存款和储蓄器总结表或memory_summary_global_by_event_name表,如果在对其借助的accounts、hosts、users表执行truncate时,会隐式对这一个内存总括表执行truncate语句

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

| 事务事件总括表

·ATTR_VALUE:连接属性值;

root@localhost : performance _schema 11:53:24> select * from
memory_summary _by_account _by_event _name where COUNT_ALLOC!=0
limit 1G

·OWNER_THREAD_ID,OWNER_EVENT_ID:那几个列表示创造prepare语句的线程ID和事件ID。

1 row in set (0.00 sec)

·OBJECT_INSTANCE_BEGIN:instruments对象的内部存款和储蓄器地址;

| events_waits_summary_by_account_by_event_name |

COUNT_READ: 0

root@localhost : performance _schema 10:37:27> select * from
events_statements _summary_by _account_by _event_name where
COUNT_STAR!=0 limit 1G

3rows inset ( 0. 00sec)

……

[Warning] Connection attributes oflength N were truncated

THREAD_ID: 1

·OBJECT_NAME:instruments对象的名目,表级别对象;

COUNT_STAR: 7

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

HOST: localhost

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

1 row in set (0.01 sec)

总是属性记录在如下两张表中:

1 row in set (0.00 sec)

……

admin@localhost : performance_schema 06:56:56> show tables like
‘%memory%summary%’;

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

SUM _SELECT_FULL_JOIN: 21

·放活元数据锁时,对应的锁音讯行被删除;

事务聚合总计规则

* 使用mysqlnd编译:只有_client_name属性,值为mysqlnd

EVENT_NAME: statement/sql/select

EVENT_NAME: wait/io/socket/sql/client_connection

# memory_summary_by_account_by_event_name表

COUNT_STAR: 2560

events_statements_summary_by_user_by_event_name:依据每一种用户名和事件名称进行计算的Statement事件

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

SUM_ROWS_EXAMINED: 39718

·COUNT_READ,SUM_TIMER_READ,MIN_TIMER_READ,AVG_TIMER_READ,MAX_TIMER_READ,SUM_NUMBER_OF_BYTES_READ:这几个列计算全部接受操作(socket的RECV、RECVFROM、RECVMS类型操作,即以server为参照的socket读取数据的操作)相关的次数、时间、接收字节数等新闻

对于根据帐户、主机、用户聚集的计算表,truncate语句会删除已初叶连接的帐户,主机或用户对应的行,并将其它有连日的行的总结列值重置为零(实地衡量跟未遵照帐号、主机、用户聚集的总结表1样,只会被重置不会被去除)。

MAX_TIMER_READ: 9498247500

EVENT_NAME: stage/sql/After create

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

root@localhost : performance _schema 12:34:43> select * from
events_statements _summary_by_programG;

上一篇 《事件计算 |
performance_schema全方位介绍》详细介绍了performance_schema的轩然大波总计表,但这个总括数据粒度太粗,仅仅根据事件的5大品类+用户、线程等维度实行分类总结,但有时大家供给从更加细粒度的维度进行分类计算,例如:有些表的IO开支多少、锁费用多少、以及用户连接的1对品质总计信息等。此时就需求查阅数据库对象事件总括表与品质计算表了。前些天将引导大家①起踏上聚讼纷纭第陆篇的征途(全系共几个篇章),本期将为大家无微不至授课performance_schema中目的事件总结表与性格总结表。上面,请随行大家一道初阶performance_schema系统的上学之旅吧~

*
LOW_COUNT_USED,HIGH_COUNT_USED:对应CURRENT_COUNT_USED列的低和高水位标记

01

由于performance_schema表内部存款和储蓄器限制,所以珍贵了DIGEST
= NULL的非正规行。
当events_statements_summary_by_digest表限制容积已满的情况下,且新的说话总计新闻在急需插入到该表时又不曾在该表中找到匹配的DIGEST列值时,就会把那个语句总计音信都计算到
DIGEST =
NULL的行中。此行可协助您测度events_statements_summary_by_digest表的限定是或不是供给调动

mutex_instances.LOCKED_BY_THREAD_ID和rwlock_instances.WRITE_LOCKED_BY_THREAD_ID列对于排查品质瓶颈或死锁难题至关心尊崇要。

当多少个可被监察和控制的内部存款和储蓄器块N被分配时,performance_schema会对内部存款和储蓄器计算表中的如下列实行立异:

metadata_locks表是只读的,无法立异。暗中认可保留行数会自动调整,借使要布局该表大小,能够在server运维在此之前设置系统变量performance_schema_max_metadata_locks的值。

1 row in set (0.00 sec)

七.锁目的记录表

SUM_TIMER_WAIT:总括给定计时事件的总等待时间。此值仅针对有计时效力的风云instruments或打开了计时成效事件的instruments,借使某事件的instruments不协助计时照旧尚未开启计时功用,则该字段为NULL。其余xxx_TIMER_WAIT字段值类似

*
复制slave连接的program_name属性值被定义为mysqld、定义了_client_role属性,值为binary_log_listener、_client_replication_channel_name属性,值为坦途名称字符串

OBJECT_NAME: ps_setup_enable_consumer

文件I/O事件总括表允许采用TRUNCATE
TABLE语句。但只将总计列重置为零,而不是去除行。

MIN _TIMER_WAIT: 0

SUM_TIMER_READ: 305970952875

EVENT_NAME: statement/sql/select

· 对于通过Unix
domain套接字(client_connection)的客户端连接,端口为0,IP为空白;

*
假设给定语句的总结新闻行在events_statements_summary_by_digest表中绝非已存在行,并且events_statements_summary_by_digest表空间限制未满的情况下,会在events_statements_summary_by_digest表中新插队1行总括新闻,FI景逸SUVST_SEEN和LAST_SEEN列都应用当前时刻

·外部锁对应存款和储蓄引擎层中的锁。通过调用handler::external_lock()函数来达成。(官方手册上说有三个OPERATION列来区分锁类型,该列有效值为:read
external、write external。但在该表的概念上并从未观察该字段)

咱俩先来探望这个表中著录的总结音讯是什么样样子的(由于单行记录较长,那里只列出events_transactions_summary_by_account_by_event_name表中的示例数据,其余表的以身作则数据省略掉1部分雷同字段)。

|NULL | NULL |41| 45 |

OBJECT_TYPE: PROCEDURE

套接字instruments具有wait/io/socket/sql/socket_type情势的称号,如下:

| events_transactions_summary_by_host_by_event_name |

该表允许选用TRUNCATE
TABLE语句。只将总括列重置为零,而不是删除行。该表执行truncate时也会隐式触发table_io_waits_summary_by_table表的truncate操作。其余利用DDL语句更改索引结构时,会促成该表的持有索引总括信息被重置

*
即使该线程在threads表中并未有拉开采集作用可能说在setup_instruments中对应的instruments未有拉开,则该线程分配的内部存款和储蓄器块不会被监察和控制

* _pid:客户端进度ID

1 row in set (0.00 sec)

admin@localhost : performance_schema 02:50:02> select * from
cond_instances limit 1;

SUM _TIMER_WAIT: 0

我们先来看望表中记录的总括消息是哪些体统的。

# events_waits_summary_by_thread_by_event_name表

……

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

IP:PO悍马H二T列组合值可用于标识3个总是。该组合值在events_waits_xxx表的“OBJECT_NAME”列中使用,以标识这个事件音讯是源于哪个套接字连接的:

EVENT_NAME: memory/performance_schema/mutex_instances

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

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

MAX _TIMER_READ _WITH_SHARED_LOCKS: 0

# memory_summary_by_thread_by_event_name表

·当四个线程尝试得到已经被有个别线程持有的互斥体时,在events_waits_current表中会显示尝试拿到那一个互斥体的线程相关等待事件音讯,显示它正在等候的mutex
体系(在EVENT_NAME列中能够看看),并出示正在等候的mutex
instance(在OBJECT_INSTANCE_BEGIN列中能够看来);

MAX _TIMER_WAIT: 0

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

*
HIGH_COUNT_USED:如果CURRENT_COUNT_USED增添一是一个新的最高值,则该字段值相应增多

* _pid:客户端进度ID

1row inset ( 0. 00sec)

| /data/mysqldata1/innodb_ts/ibdata1
|wait/io/file/innodb/innodb_data_file | 3 |

注意:那些表只针对阶段事件音信举办总括,即含有setup_instruments表中的stage/%初步的采集器,每一种阶段事件在每一个表中的总结记录行数需求看哪样分组(例如:遵照用户分组总计的表中,有多少个活泼用户,表中就会有微微条相同采集器的记录),其余,总结计数器是不是见效还亟需看setup_instruments表中相应的阶段事件采集器是否启用。

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

进行该语句时有如下行为:

OBJECT_NAME: test

root@localhost : performance _schema 11:08:36> select * from
events_waits _summary_by _user_by _event_name limit 1G

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

MIN _TIMER_WAIT: 0

* _os:客户端操作系统类型(例如Linux,Win6四)

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

MAX _TIMER_READ: 56688392

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

·当有着互斥体的线程释放互斥体时,mutex_instances表中对应排斥体行的THREAD_ID列被涂改为NULL;

# events_transactions_summary_by_thread_by_event_name表

AVG_TIMER_READ: 0

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

种种连接信息表都有CU凯雷德RENT_CONNECTIONS和TOTAL_CONNECTIONS列,用于跟踪连接的脚下连接数和总连接数。对于accounts表,各种连接在表中每行消息的绝无仅有标识为USEPRADO+HOST,可是对于users表,唯有2个user字段举办标识,而hosts表唯有贰个host字段用于标识。

MAX _TIMER_READ_WRITE: 2427645000

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

SUM_WARNINGS: 0

COUNT_STAR: 56

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

两张表中著录的内容很周边:

* COUNT_ALLOC:增加1

table_io_waits_summary_by_table表:

AVG _TIMER_READ_ONLY: 57571000

·VICTIM,TIMEOUT和KILLED状态值停留时间很简短,当叁个锁处于那几个景况时,那么表示该锁行消息就要被去除(手动执行SQL大概因为时间原因查看不到,能够行使程序抓取);

#
events_statements_summary_by_program表(要求调用了蕴藏进程或函数之后才会有数量)

STATEMENT_NAME: stmt

USER: NULL

table_handles表是只读的,不可能创新。私下认可自动调整表数据行大小,假使要显式内定个,能够在server运行此前设置系统变量performance_schema_max_table_handles的值。

1 row in set (0.00 sec)

·EVENT_NAME:与公事相关联的instruments名称;

对于较高级其余聚众(全局,按帐户,按用户,按主机)计算表中,低水位和高水位适用于如下规则

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

AVG _TIMER_WAIT: 1235672000

·当三个pending状态的锁被死锁检查测试器检查实验并选定为用于打破死锁时,那个锁会被打消,并回到错误音信(EXC60_LOCK_DEADLOCK)给请求锁的对话,锁状态从PENDING更新为VICTIM;

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

1 row in set (0.00 sec)

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

·对此已接受的连天,performance_schema根据performance_schema_session_connect_attrs_size系统变量的值检查计算连接属性大小。若是属性大小超越此值,则会执行以下操作:

SUM _TIMER_WAIT: 0

……

HIGH_COUNT_USED: 1

(5) socket_instances表

EVENT_NAME: memory/innodb/fil0fil

SUM _TIMER_READ: 56688392

AVG _TIMER_WAIT: 0

(4)rwlock_instances表

USER: NULL

……

1 row in set (0.00 sec)

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

SUM _TIMER_WAIT: 0

·CURRENT_CONNECTIONS:某用户的脚下连接数;

| Tables_in_performance_schema (%events_transactions_summary%) |

COUNT_STAR: 1

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

表字段含义与session_account_connect_attrs表相同,可是该表是保存全数连接的连年属性表。

* CURRENT_NUMBER_OF_BYTES_USED:减少N

·每一种文件I/O事件总结表有如下总计字段:

AVG _TIMER_WAIT: 0

STATEMENT_ID: 1

1 row in set (0.00 sec)

| 4 |program_name | mysql |5|

| 导语

作者们先来看看表中著录的总结音信是如何体统的。

LOW_COUNT_USED: 0

file_instances表列出执行文书I/O
instruments时performance_schema所见的有着文件。
假若磁盘上的公文并未有打开,则不会在file_instances中著录。当文件从磁盘中去除时,它也会从file_instances表中剔除相应的笔录。

# 纵然必要计算内存事件音讯,供给敞开内部存款和储蓄器事件采集器

我们先来看望表中记录的总括消息是什么体统的。

MIN _TIMER_WAIT: 0

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

EVENT_NAME: transaction

table_io_waits_summary_by_index_usage表:

# events_waits_summary_by_account_by_event_name表

小编:

THREAD_ID: 47

socket_instances表差异意利用TRUNCATE TABLE语句。

COUNT_ALLOC: 103

3rows inset ( 0. 00sec)

关于内存事件的一颦一笑监督装置与注意事项

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

USER: NULL

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

root@localhost : performance _schema 11:08:53> select * from
events_waits _summary_global _by_event_name limit 1G

SUM_WARNINGS: 0

| events_statements_summary_by_program |

| PROCESSLIST_ID |ATTR_NAME | ATTR_VALUE |ORDINAL_POSITION |

COUNT_STAR: 0

PS:MySQL
server使用二种缓存技术通过缓存从文件中读取的音讯来幸免文件I/O操作。当然,如果内部存款和储蓄器不够时要么内部存款和储蓄器竞争相比较大时可能引致查询功能低下,那一年你只怕要求经过刷新缓存也许重启server来让其数据经过文件I/O再次回到而不是由此缓存再次回到。

COUNT_STAR: 7

AVG _TIMER_READ _WITH_SHARED_LOCKS: 0

咱俩先来看看这么些表中记录的计算新闻是如何样子的(由于单行记录较长,这里只列出events_statements_summary_by_account_by_event_name
表中的示例数据,其他表的以身作则数据省略掉一部分同样字段)。

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

OBJECT _INSTANCE_BEGIN: 32492032

COUNT_STAR: 802

SUM _SELECT_FULL _RANGE_JOIN: 0

OBJECT_SCHEMA: xiaoboluo

MAX _TIMER_READ_ONLY: 57571000

MIN _TIMER_WAIT: 56688392

COUNT_ALLOC: 1

OBJECT_NAME: test

COUNT_STAR: 0

·当连接终止时,在socket_instances表中对应的连日新闻行被剔除。

*
HIGH_NUMBER_OF_BYTES_USED:如果CURRENT_NUMBER_OF_BYTES_USED增添N之后是八个新的最高值,则该字段值相应扩张

*
COUNT_STAR,SUM_TIMER_WAIT,MIN_TIMER_WAIT,AVG_TIMER_WAIT,MAX_TIMER_WAIT:这几个列总结全数I/O操作数量和操作时间

| Tables_in_performance_schema (%events_statements_summary%) |

·个中锁对应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。但在该表的概念上并从未看出该字段)

root@localhost : performance _schema 11:04:31> select * from
events_statements _summary_global _by_event_name limit 1G

Post Author: admin

发表评论

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