【www.yzc888.com】数据库对象事件与属性统计 | performance_schema全方位介绍(五)

套接字计算表允许选拔TRUNCATE
TABLE语句(除events_statements_summary_www.yzc888.com,by_digest之外),只将计算列重新载入参数为零,并不是剔除行。

AVG _TIMER_WAIT: 0

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

     MySQL
Performance-Schema中累计包罗55个表,首要分为几类:Setup表,Instance表,Wait
Event表,Stage Event表Statement
Event表,Connection表和Summary表。上一篇作品已经首要讲了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/THPRADO_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和一千0都以足以布署的。这四个表表结构同样,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产生的三十一人字符串。要是为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逍客:事件计数
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中总结包括55个表,重要分为几类:Setup表,Instance表,Wait
Event表,Stage Ev…

1row inset ( 0. 00sec)

MIN _TIMER_WAIT: 0

6.instance 统计表

| Tables_in_performance_schema (%prepare%) |

·COUNT_EXECUTE,SUM_TIMER_EXECUTE,MIN_TIMER_EXECUTE,AVG_TIMER_EXECUTE,MAX_TIMER_EXECUTE:实行prepare语句时的相关总结数据。

*
另外,遵照帐户,主机,用户或线程分类总结的内部存储器总计表或memory_summary_global_by_event_name表,假若在对其借助的accounts、hosts、users表实行truncate时,会隐式对那个内部存储器总括表实行truncate语句

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

COUNT_STAR: 0

·server只接受的接连属性数据的计算大小限制为64KB。假设客户端尝试发送超过64KB(正好是三个表全部字段定义长度的总限制长度)的属性数据,则server将不容该连接;

MAX _TIMER_WAIT: 2427645000

metadata_locks表字段含义如下:

*
内存instruments在setup_instruments表中持有memory/code_area/instrument_name格式的称呼。但暗中同意情状下大相当多instruments都被剥夺了,暗许只开启了memory/performance_schema/*开头的instruments

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

EVENT_NAME: memory/innodb/fil0fil

从地方表中的记录音讯大家能够观察:

USER: NULL

rwlock_instances表列出了server实行rwlock
instruments时performance_schema所见的具有rwlock(读写锁)实例。rwlock是在代码中采纳的联手提式有线电话机制,用于强制在给定时期内线程能够服从有些法规访谈一些公共能源。能够感到rwlock爱抚着那几个财富不被其余线程随便抢占。访谈方式可以是分享的(多个线程能够同一时候全体分享读锁)、排他的(相同的时间唯有二个线程在加以时间足以具有排他写锁)或分享独占的(有些线程持有排他锁按时,同时允许其余线程实践差异性读)。分享独占访谈被称为sxlock,该访谈情势在读写场景下能够增长并发性和可扩张性。

| events_waits_summary_global_by_event_name |

……

THREAD_ID: 47

AVG_TIMER_WAIT: 514656000

COUNT_STAR: 11

instance表记录了哪些类型的目的被检查测试。那个表中著录了平地风波名称(提供收罗效用的instruments名称)及其一些解释性的情况音讯(譬喻:file_instances表中的FILE_NAME文件名称和OPEN_COUNT文件张开次数),instance表首要有如下多少个:

SUM _TIMER_WAIT: 0

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

EVENT_NAME: memory/performance_schema/mutex_instances

·NAME:与互斥体关联的instruments名称;

*
CURRENT_NUMBER_OF_BYTES_USED:增加N

performance_schema提供了针对性prepare语句的监察和控制记录,并依据如下方法对表中的内容实行管理。

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

·socket_summary_by_event_name表:按照EVENT_NAME列进行分组

events_statements_summary_by_program表有投机额外的计算列:

admin@localhost : performance_schema 06:53:42> show tables like
‘%socket%summary%’;

AVG _TIMER_WAIT: 0

叁个总是可知的总是属性集合取决于与mysql
server创设连接的客户端平台项目和MySQL连接的客户端类型。

| events_transactions_summary_by_thread_by_event_name |

LOCK_TYPE: SHARED_READ

MIN _TIMER_READ_WRITE: 87193000

OWNER_OBJECT_NAME: NULL

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

·USEEnclave:有个别连接的用户名,假设是叁个里边线程成立的连年,只怕是无可奈何验证的用户成立的总是,则该字段为NULL;

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

| USER |HOST | CURRENT_CONNECTIONS |TOTAL_CONNECTIONS |

SUM _TIMER_WAIT: 0

SUM_TIMER_EXECUTE: 0

| events_transactions_summary_by_host_by_event_name |

EVENT_NAME: wait/io/file/innodb/innodb_data_file

PS3:对那一个表使用truncate语句,影响与等待事件类似。

从地点表中的笔录消息大家能够见见,table_io_waits_summary_by_index_usage表和table_io_waits_summary_by_table有着附近的计算列,但table_io_waits_summary_by_table表是含有整体表的增加和删除改查等待事件分类计算,table_io_waits_summary_by_index_usage区分了各类表的目录的增加和删除改查等待事件分类总结,而table_lock_waits_summary_by_table表总括纬度类似,但它是用以计算增加和删除改核查应的锁等待时间,而不是IO等待时间,这一个表的分组和计算列含义请大家自行一举三反,这里不再赘言,上边针对这三张表做一些不能缺少的认证:

root@localhost : performance _schema 01:25:27> select * from
events_transactions _summary_by _thread_by _event_name where SUM
_TIMER_WAIT!=0G

套接字instruments具有wait/io/socket/sql/socket_type格局的名称,如下:

*
LOW_COUNT_USED和HIGH_COUNT_USED将重新设置为CU奥迪Q7RENT_COUNT_USED列值

笔者们先来探视表中著录的总计音讯是什么体统的。

| Tables_in_performance_schema (%events_statements_summary%) |

| FILE_NAME |EVENT_NAME | OPEN_COUNT |

# events_transactions_summary_by_thread_by_event_name表

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

MAX_TIMER_WAIT:给定计时事件的最大等待时间

下卷将为咱们分享 《复制状态与变量记录表 |
performance_schema全方位介绍》 ,多谢你的开卷,大家不见不散!回去乐乎,查看越来越多

*
假诺该线程在threads表中平昔不展开拓集作用或然说在setup_instruments中对应的instruments未有张开,则该线程分配的内部存款和储蓄器块不会被监察和控制

6 rows inset (0.00 sec)

* 注意:倘使在server运行之后再修改memory
instruments,也许会招致由于错过之前的分配操作数据而致使在自由之后内部存款和储蓄器计算新闻出现负值,所以不提出在运行时每每按键memory
instruments,假使有内部存款和储蓄器事件总计须要,提出在server运维在此以前就在my.cnf中布局好内需总结的事件访问

我们先来拜望表中记录的总计音信是何许样子的。

SUM _NUMBER_OF _BYTES_ALLOC: 3296

MAX _TIMER_READ: 56688392

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

performance_schema通过table_handles表记录表锁消息,以对眼下各样展开的表所持有的表锁进行追踪记录。table_handles输出表锁instruments收罗的内容。那些音信体现server中已开荒了哪些表,锁定格局是什么以及被哪些会话持有。

*
SUM_NUMBER_OF_BYTES_ALLOC,SUM_NUMBER_OF_BYTES_FREE:已分配和已放出的内部存储器块的总字节大小

admin@localhost : performance _schema 01:57:20> select * from
table_lock _waits_summary _by_table where SUM _TIMER_WAIT!=0G;

* CURRENT_COUNT_USED:减少1

OBJECT _INSTANCE_BEGIN: 2655351104

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

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

root@localhost : performance _schema 11:08:05> select * from
events_waits _summary_by_instance limit 1G

COUNT_STAR: 24

原标题:事件总结 | performance_schema全方位介绍(四)

AVG_TIMER_READ_NORMAL: 0

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

(1)cond_instances表

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

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

admin@localhost : performance_schema 06:28:48> show tables like
‘%prepare%’;

·内部锁对应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。但在该表的概念上并从未观望该字段)

AVG _TIMER_WAIT: 0

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

events_statements_summary_by_thread_by_event_name:遵照种种线程和事件名称实行总括的Statement事件

·当线程成功锁定(持有)互斥体时:

prepared_statements_instances表有友好额外的总结列:

·accounts:依据user@host的花样来对各类客户端的连日进行总计;

# memory_summary_by_account_by_event_name表

·cond_instances:wait sync相关的condition对象实例;

root@localhost : performance _schema 01:19:07> select * from
events_transactions _summary_by _account_by _event_name where
COUNT_STAR!=0 limit 1G

·STATEMENT_ID:由server分配的说话内部ID。文本和二进制协议都选择该语句ID。

# events_stages_summary_by_user_by_event_name表

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

COUNT_STAR: 0

·prepare语句预编写翻译:COM_STMT_PREPARE或SQLCOM_PREPARE命令在server中开创三个prepare语句。固然语句检验成功,则会在prepared_statements_instances表中新增添一行。要是prepare语句不恐怕检验,则会增添Performance_schema_prepared_statements_lost状态变量的值。

MAX _TIMER_WAIT: 0

AVG_TIMER_WAIT: 24366870

EVENT_NAME: stage/sql/After create

大家先来拜候表中著录的总计新闻是什么样子的。

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

accounts表字段含义如下:

COUNT_ALLOC: 1

COUNT_READ: 0

| memory_summary_global_by_event_name |

COUNT_STAR: 213055844

关于events_statements_summary_by_digest表

admin@localhost : performance_schema 09 :34:49> select * from
accounts;

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

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

SUM_SORT_RANGE: 0

……

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

| 4 |_client_name | libmysql |1|

从下边表中的示范记录音讯中,大家得以看来,一样与等待事件类似,依据用户、主机、用户+主机、线程等纬度实行分组与总计的列,分组和一些年华计算列与等待事件类似,这里不再赘述,但对于语句计算事件,有针对性语句对象的附加的总结列,如下:

(1)metadata_locks表

THREAD_ID: 1

table_handles表不容许采纳TRUNCATE TABLE语句。

SCHEMA_NAME: NULL

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

SUM _TIMER_WAIT: 0

COUNT _READ_WITH _SHARED_LOCKS: 0

下一篇将为大家分享《数据库对象事件总计与性子总括 | performance_schema全方位介绍》
,多谢您的读书,大家不见不散!回去博客园,查看愈来愈多

OBJECT _INSTANCE_BEGIN: 2658004160

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

·OBJECT_INSTANCE_BEGIN:读写锁实例的内部存款和储蓄器地址;

检查实验内部存款和储蓄器工作负荷峰值、内部存款和储蓄器总体的做事负荷稳固性、恐怕的内部存款和储蓄器泄漏等是根本的。

OBJECT_TYPE: TABLE

# events_waits_summary_by_user_by_event_name表

·每一种文件I/O计算表都有多少个或四个分组列,以标记怎么着计算这么些事件音信。这一个表中的风云名称来自setup_instruments表中的name字段:

……

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

HOST: NULL

主编:

EVENT_NAME: memory/innodb/fil0fil

| wait/synch/mutex/mysys/THR_LOCK_heap |32576832| NULL |

| 事务事件总计表

(2)users表

5rows inset ( 0. 00sec)

| USER |CURRENT_CONNECTIONS | TOTAL_CONNECTIONS |

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

| table_io_waits_summary_by_table |#
依据各类表张开总结的表I/O等待事件

events_waits_summary_by_user_by_event_name表:按照列EVENT_NAME、USE福特Explorer进行分组事件音信

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

* SUM_NUMBER_OF_BYTES_ALLOC:增加N

MIN_TIMER_READ: 0

注意:这个表只针对专门的工作事件音信实行计算,即富含且仅包罗setup_instruments表中的transaction搜聚器,每种职业事件在各种表中的总计记录行数须求看怎么着分组(举个例子:依照用户分组总括的表中,有稍许个活泼用户,表中就能有微微条同样搜聚器的笔录),其余,计揣测数器是还是不是见效还索要看transaction收集器是或不是启用。

OBJECT _INSTANCE_BEGIN: 140568048055488

*
LOW_NUMBER_OF_BYTES_USED和HIGH_NUMBER_OF_BYTES_USED将重新初始化为CURubiconRENT_NUMBER_OF_BYTES_USED列值

与objects_summary_global_by_type
表总计消息类似,表I/O等待和锁等待事件总计音信越来越精细,细分了各种表的增删改查的实施次数,总等待时间,最小、最大、平均等待时间,以至精细到某些索引的增加和删除改查的等候时间,表IO等待和锁等待事件instruments(wait/io/table/sql/handler和wait/lock/table/sql/handler
)暗许开启,在setup_consumers表中无具体的应和配置,私下认可表IO等待和锁等待事件总计表中就能够总计有关事件音讯。满含如下几张表:

COUNT_STAR: 53

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

HOST: localhost

session_account_connect_attrs表分裂意使用TRUNCATE TABLE语句。

SUM _SELECT_RANGE_CHECK: 0

7.锁对象记录表

MIN _TIMER_WAIT: 0

|wait/synch/cond/sql/COND_manager | 31903008 |

root@localhost : performance _schema 11:02:15> select * from
events_statements _summary_by _host_by _event_name where
COUNT_STAR!=0 limit 1G

4rows inset ( 0. 00sec)

EVENT_NAME: statement/sql/select

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

当server中的某线程施行了内存分配操作时,依据如下准则进行检查评定与集中:

admin@localhost : performance_schema 06:48:12> show tables like
‘%file_summary%’;

EVENT_NAME: statement/sql/select

MIN_TIMER_EXECUTE: 0

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

2. 一而再属性总括表

COUNT_STAR: 55

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

root@localhost : performance _schema 11:07:14> select * from
events_waits _summary_by _host_by _event_name limit 1G

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

| Tables_in_performance_schema (%events_transactions_summary%) |

3rows inset ( 0. 00sec)

HOST: NULL

SUM_TIMER_WAIT: 412754363625

小编们先来探视那几个表中著录的总结消息是哪些体统的。

·当呼吁元数据锁不能够即时赢得时,将插入状态为PENDING的锁消息行;

MAX _TIMER_WAIT: 0

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

MAX _TIMER_WAIT: 0

·对此通过TCP/IP
套接字(client_connection)的客户端连接,端口是server随机分配的,但不会为0值.
IP是源主机的IP(127.0.0.1或本地主机的:: 1)。

当一个可被监察和控制的内部存款和储蓄器块N被释放时,performance_schema会对计算表中的如下列进行更新:

OBJECT_SCHEMA: xiaoboluo

MIN_TIMER_WAIT:给定计时事件的一丝一毫等待时间

·LOCK_STATUS:元数据锁子系统的锁状态。有效值为:PENDING、GRANTED、VICTIM、TIMEOUT、KILLED、PRE_ACQUIRE_NOTIFY、POST_RELEASE_NOTIFY。performance_schema依照区别的级差改变锁状态为这么些值;

PS:对这么些表使用truncate语句,影响与等待事件类似。

OBJECT _INSTANCE_BEGIN: 2658003840

SUM_SELECT_RANGE: 0

admin@localhost : performance _schema 01:56:16> select * from
table_io _waits_summary _by_table where SUM _TIMER_WAIT!=0G;

| events_statements_summary_global_by_event_name |

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

USER: root

·EXTERNAL_LOCK:在仓库储存引擎品级使用的表锁。有效值为:READ
EXTE奇骏NAL、W逍客ITE EXTE凯雷德NAL。

PS:对这几个表使用truncate语句,影响与等待事件类似。

·OWNER_EVENT_ID:触发table
handles被展开的风云ID,即持有该handles锁的风云ID;

COUNT_STAR: 3

| file_summary_by_instance |

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

SUM _NUMBER_OF _BYTES_READ: 11567104

SUM _CREATED_TMP_TABLES: 10

该表允许选拔TRUNCATE TABLE语句。只将总结列重新初始化为零,并不是去除行。

CURRENT_COUNT_USED: 0

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

* COUNT_FREE:增加1

AVG _TIMER_READ: 56688392

当某给定对象被删去时,该指标在events_statements_summary_by_program表中的总结新闻将在被剔除;

users表字段含义如下:

EVENT_NAME: stage/sql/After create

| localhost |1| 1 |

1 row in set (0.00 sec)

OBJECT_TYPE: TABLE

| events_stages_summary_by_thread_by_event_name |

MySQL允许应用程序引进新的连天属性,可是以下划线(_)伊始的属性名称保留供内部使用,应用程序不要创制这种格式的连接属性。以管教内部的接二连三属性不会与应用程序创立的连天属性相龃龉。

USER: root

大家先来拜望表中记录的总括消息是什么体统的。

events_statements_summary_by_digest:遵照各类库等级对象和话语事件的原始语句文本总计值(md5
hash字符串)进行总计,该计算值是基于事件的原始语句文本实行轻便(原始语句调换为条件语句),每行数据中的相关数值字段是负有同样总结值的计算结果。

| qfsys |10.10. 20.15| 1 |1|

COUNT _READ_ONLY: 1

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

1 row in set (0.00 sec)

1 row in set (0.00 sec)

HIGH _NUMBER_OF _BYTES_USED: 32

·只若是插入操作,则不或许使用到目录,此时的计算值是依照INDEX_NAME =
NULL计算的

AVG _TIMER_WAIT: 0

·session_connect_attrs:全部会话的连日属性。

当某给定对象被实施时,其相应的计算消息将记录在events_statements_summary_by_program表中并开始展览总结。

metadata_locks表不允许选用TRUNCATE TABLE语句。

PS2:关于存款和储蓄程序监察和控制行为:对于在setup_objects表中启用了instruments的囤积程序类型,events_statements_summary_by_program将维护存款和储蓄程序的总括新闻,如下所示:

COUNT_STAR: 802

SUM _TIMER_WAIT: 0

TIMER_PREPARE: 896167000

COUNT_STAR: 0

当客户端连接到MySQL
server时,它的用户名和主机名都是特定的。performance_schema依据帐号、主机、用户名对那一个连接的计算音讯实行归类并保留到种种分类的接连消息表中,如下:

MAX _TIMER_WAIT: 0

·execute步骤:语法EXECUTE stmt_name[USING @var_name [,
@var_name] …],示例:execute stmt;
重返实践结果为1,此时在prepared_statements_instances表中的总括消息会进展更新;

# events_stages_summary_by_host_by_event_name表

*
events_waits_current表中能够查阅到近日正值班守护候互斥体的线程时间新闻(比如:TIME普拉多_WAIT列表示已经等候的时光)

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

·ORDINAL_POSITION:将一连属性添加到连年属性集的逐个。

* CURRENT_COUNT_USED:增加1

OBJECT_SCHEMA: xiaoboluo

events_statements_summary_by_user_by_event_name:依照各种用户名和事件名称进行总括的Statement事件

SUM_TIMER_READ_NORMAL: 0

SUM_WARNINGS: 0

SOURCE: sql_parse.cc:6031

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

…………

内部存款和储蓄器总计表允许利用TRUNCATE
TABLE语句。使用truncate语句时有如下行为:

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

# events_transactions_summary_by_host_by_event_name表

·当server中部分代码创造了八个互斥量时,在mutex_instances表中会增加一行对应的互斥体新闻(除非不或然再次创下制mutex
instruments
instance就不会增加行)。OBJECT_INSTANCE_BEGIN列值是互斥体的独步一时标记属性;

PS:内部存款和储蓄器总结表不含有计时音信,因为内部存储器事件不匡助时间音信征集。

·当已给予的锁或挂起的锁诉求被杀死时,其锁状态从GRANTED或PENDING更新为KILLED;

MIN _TIMER_WAIT: 57571000

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

  • SUM_NUMBER_OF_BYTES_FREE

每一种连接音信表都有CU宝马7系RENT_CONNECTIONS和TOTAL_CONNECTIONS列,用于追踪连接的脚下连接数和总连接数。对于accounts表,每一个连接在表中每行音讯的有一无二标志为USE途锐+HOST,不过对于users表,独有二个user字段进行标志,而hosts表唯有二个host字段用于标记。

# events_waits_summary_by_host_by_event_name表

| socket_summary_by_instance |

admin@localhost : performance_schema 06:27:58> show tables like
‘%events_statements_summary%’;

OBJECT_NAME: test

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

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

1 row in set (0.00 sec)

EVENT_NAME: wait/io/socket/sql/client_connection

*
CURRENT_NUMBER_OF_BYTES_USED:当前已分配的内部存款和储蓄器块但未释放的计算大小。那是三个便捷列,等于SUM_NUMBER_OF_BYTES_ALLOC

·READ_LOCKED_BY_COUNT:当一个线程在分享(读)方式下持有四个rwlock时,READ_LOCKED_BY_COUNT列值扩展1,所以该列只是三个计数器,不可能直接用来查找是哪个线程持有该rwlock,但它能够用来查阅是不是存在一个关于rwlock的读争用以及查看当前有微微个读情势线程处于活跃状态。

# events_statements_summary_by_digest表

cond_instances表列出了server施行condition instruments
时performance_schema所见的具备condition,condition表示在代码中一定事件产生时的一块儿实信号机制,使得等待该标准的线程在该condition满足条件时能够过来专门的学业。

主编:

·已被死锁检验器检查评定到并被杀死的锁,也许锁央求超时正值班守护候锁乞求会话被打消。

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

SUM_TIMER_READ: 0

6rows inset ( 0. 00sec)

·hosts:遵照host名称对各类客户端连接进行总结;

| events_waits_summary_by_host_by_event_name |

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

| Tables_in_performance_schema (%memory%summary%) |

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

root@localhost : performance _schema 11:21:04> select * from
events_stages _summary_by _account_by _event_name where USER is
not null limit 1G

OWNER _THREAD_ID: 46

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

1.多少库表品级对象等待事件总括

SUM_TIMER_WAIT: 234614735000

·OWNER_EVENT_ID:诉求元数据锁的风云ID。

对此依照帐户、主机、用户集中的总计表,truncate语句会删除已开首连接的帐户,主机或用户对应的行,并将其他有连日的行的总结列值重新恢复设置为零(实地衡量跟未依据帐号、主机、用户集中的总结表一样,只会被重新恢复设置不会被删除)。

performance_schema如何管理metadata_locks表中著录的内容(使用LOCK_STATUS列来表示每一个锁的事态):

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

…………

root@localhost : performance _schema 11:54:36> select * from
memory_summary _by_host _by_event _name where COUNT_ALLOC!=0
limit 1G

* _pid:客户端进程ID

| memory_summary_by_account_by_event_name |

# file_summary_by_instance表

Query OK, 377 rows affected (0.00 sec)

(1)accounts表

1 row in set (0.00 sec)

·LOCKED_BY_THREAD_ID:当七个线程当前怀有一个排斥锁定时,LOCKED_BY_THREAD_ID列展现全部线程的THREAD_ID,若无被其余线程持有,则该列值为NULL。

performance_schema把阶段事件总括表也如约与等待事件总括表类似的准绳进行分类聚合,阶段事件也许有一部分是暗中认可禁止使用的,一部分是敞开的,阶段事件总结表包蕴如下几张表:

OWNER_OBJECT_SCHEMA: NULL

SUM _NUMBER_OF _BYTES_FREE: 3296

·PROCESSLIST_ID:会话的连日标记符,与show
processlist结果中的ID字段相同;

从地点表中的示范记录消息中,大家能够观察:

admin@localhost : performance _schema 11:01:23> select * from
file_summary _by_instance where SUM _TIMER_WAIT!=0 and EVENT_NAME
like ‘%innodb%’ limit 1G;

COUNT_ALLOC: 103

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

| events_transactions_summary_by_account_by_event_name |

·STATEMENT_NAME:对于二进制协议的话语事件,此列值为NULL。对于文本协议的语句事件,此列值是用户分配的外表语句名称。比如:PREPARE
stmt FROM’SELECT 1′;,语句名叫stmt。

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

·CURRENT_CONNECTIONS:某用户的此时此刻连接数;

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

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

1 row in set (0.00 sec)

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

THREAD_ID: 1

·socket_summary_by_instance:针对各种socket实例的有所 socket
I/O操作,这么些socket操作相关的操作次数、时间和出殡和埋葬接收字节音讯由wait/io/socket/*
instruments发生。但当连接中断时,在该表中对应socket连接的音信将要被删去(这里的socket是指的脚下活跃的接连成立的socket实例)

SUM_SELECT_SCAN: 45

| NAME |OBJECT_INSTANCE_BEGIN | LOCKED_BY_THREAD_ID |

*
如若给定语句的总括音讯行在events_statements_summary_by_digest表中一向不已存在行,且events_statements_summary_by_digest表空间范围已满的场所下,则该语句的计算音讯将助长到DIGEST
列值为
NULL的特殊“catch-all”行,假设该特别行子虚乌有则新插入一行,FIEvoqueST_SEEN和LAST_SEEN列为当前时刻。假若该非常行已存在则更新该行的音讯,LAST_SEEN为当前时光

MIN_TIMER_READ_NORMAL: 0

1 row in set (0.00 sec)

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

1 row in set (0.00 sec)

3 rows in set (0.00 sec)

MIN _TIMER_WAIT: 0

MAX_TIMER_READ: 0

SUM_ROWS_SENT: 1635

……

*
HIGH_COUNT_USED和HIGH_NUMBER_OF_BYTES_USED是较高的高水位揣测值。performance_schema输出的低水位值能够保险总结表中的内部存款和储蓄器分配次数和内部存款和储蓄器大于或等于当前server中真正的内部存款和储蓄器分配值

# socket_summary_by_instance表

performance_schema把作业事件总括表也遵从与等待事件总括表类似的准绳进行归类总括,事务事件instruments只有多个transaction,暗中认可禁止使用,事务事件计算表有如下几张表:

|4| _os |linux-glibc2. 5| 0 |

AVG_TIMER_WAIT: 4426693000

·已呼吁但未予以的锁(突显怎会话正在等候哪些元数据锁);

SUM _SELECT_FULL _RANGE_JOIN: 0

·OBJECT_NAME:instruments对象的名目,表等第对象;

……

file_instances表字段含义如下:

EVENT_NAME: stage/sql/After create

·VICTIM,TIMEOUT和KILLED状态值停留时间很简短,当三个锁处于这么些景况时,那么表示该锁行音信就要被去除(手动试行SQL也许因为日子原因查看不到,能够使用程序抓取);

SUM _CREATED_TMP _DISK_TABLES: 3

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

*
假设给定语句的计算信息行在events_statements_summary_by_digest表中早已存在,则将该语句的总计消息举行立异,并更新LAST_SEEN列值为当下时刻

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

SUM _SORT_MERGE_PASSES: 0

·OWNER_THREAD_ID,OWNER_EVENT_ID:那么些列表示创设prepare语句的线程ID和事件ID。

SUM_NO_INDEX_USED: 42

·OBJECT_SCHEMA:该锁来自于哪个库级其他目的;

内部存储器事件在setup_consumers表中并未有单独的安插项,且memory/performance_schema/*
instruments暗许启用,无法在运营时或运维时关闭。performance_schema相关的内部存储器计算消息只保存在memory_summary_global_by_event_name表中,不会保存在根据帐户,主机,用户或线程分类聚合的内部存款和储蓄器总结表中。

OBJECT _INSTANCE_BEGIN: 139968890586816

events_statements_summary_by_host_by_event_name:依照每一种主机名和事件名称进行计算的Statement事件

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

……

·当呼吁立时获得元数据锁时,将插入状态为GRANTED的锁音讯行;

我们先来探问那些表中著录的总结音讯是什么样子的。

performance_schema还统计后台线程和不可能求证用户的接连,对于这么些连接计算行新闻,USELacrosse和HOST列值为NULL。

由于performance_schema表内存限制,所以珍惜了DIGEST
= NULL的极度行。
当events_statements_summary_by_digest表限制体量已满的场馆下,且新的说话总括新闻在供给插入到该表时又不曾经在该表中找到相称的DIGEST列值时,就能把那些语句计算音信都计算到
DIGEST =
NULL的行中。此行可帮助您估量events_statements_summary_by_digest表的限量是或不是须要调动

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

*
HIGH_COUNT_USED:如果CURRENT_COUNT_USED扩充1是二个新的最高值,则该字段值相应扩大

1 row in set (0.00 sec)

COUNT_STA揽胜:事件被实践的数目。此值包涵具备事件的实践次数,须要启用等待事件的instruments

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

| 语句事件总括表

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

root@localhost : performance _schema 11:56:02> select * from
memory_summary _global_by _event_name where COUNT_ALLOC!=0 limit
1G

SUM_TIMER_READ: 305970952875

events_statements_summary_by_account_by_event_name:根据每一个帐户和话语事件名称实行总计

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

| events_statements_summary_by_program |

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

EVENT_NAME: stage/sql/After create

连天计算音讯表允许采用TRUNCATE
TABLE。它会同期删除总计表中未有连接的帐户,主机或用户对应的行,重新恢复设置有连接的帐户,主机或用户对应的行的并将其他行的CU奥迪Q7RENT_CONNECTIONS和TOTAL_CONNECTIONS列值。

……

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

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

MAX _TIMER_READ _WITH_SHARED_LOCKS: 0

admin@localhost : performance_schema 06:37:45> show tables like
‘%events_transactions_summary%’;

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

MIN _TIMER_WAIT: 0

| table_lock_waits_summary_by_table |#
依据各个表张开总括的表锁等待事件

OBJECT_SCHEMA: sys

MIN _TIMER_WAIT: 2971125

# events_statements_summary_global_by_event_name表

在服务器端面,会对连日属性数据进行长度检查:

EVENT_NAME: transaction

·STATE:套接字状态,有效值为:IDLE或ACTIVE。追踪活跃socket连接的等候时间利用相应的socket
instruments。跟着空闲socket连接的等候时间使用三个称呼idle的socket
instruments。假设叁个socket正在等待来自客户端的乞请,则该套接字此时居于空闲状态。当套接字处于空闲时,在socket_instances表中对应socket线程的音讯中的STATE列值从ACTIVE状态切换来IDLE。EVENT_NAME值保持不改变,不过instruments的小时搜聚功用被中止。同一时间在events_waits_current表中记录EVENT_NAME列值为idle的一行事件新闻。当以此socket接收到下二个呼吁时,idle事件被结束,socket
instance从闲暇状态切换成活动状态,并还原套接字连接的年月访谈功能。

MIN _TIMER_READ_ONLY: 57571000

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

MAX _TIMER_WAIT: 0

*
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字段,用于记录具体的磁盘文件有关消息。

EVENT_NAME: transaction

| 3 |_client_name | libmysql |1|

1 row in set (0.00 sec)

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

LOW_COUNT_USED: 0

·SOCKET_ID:分配给套接字的内部文件句柄;

| prepared_statements_instances |

相关文章

发表评论

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

*
*
Website