而且不耍猴,performance_schema全方位介绍

图片 11
宝马技术

原标题:数据库对象事件与属性统计 | performance_schema全方位介绍(五)

原标题:Apple Watch 三年来最大升级即将出现?这些新特性你该提前知道

原标题:荣耀8X到底有多火?开卖首销就拿下全平台冠军!而且不耍猴!

图片 1

从 2015 年 4 月作为苹果发布会「One More Thing」出现至今,Apple Watch
已经经历了 Apple Watch 第一代、Apple Watch Series 1、Apple Watch Series
2 和 Apple Watch Series 3 多代演化,尽管如此,三年间 Apple Watch
在外观设计上变化并不大,真正的改变也许就发生在即将到来的苹果发布会上,我们不妨提前来看看,关于
Apple Watch 新款产品的变化有哪些?

荣耀8X在发布以来就得到了网络上的各大媒体、KOL热议,凭借着旗舰机般的产品力,却定价1399元起的价格简直就是不给友商活路,而这火热的程度也体现到了售卖上。

上一篇 《事件统计 |
performance_schema全方位介绍》详细介绍了performance_schema的事件统计表,但这些统计数据粒度太粗,仅仅按照事件的5大类别+用户、线程等维度进行分类统计,但有时候我们需要从更细粒度的维度进行分类统计,例如:某个表的IO开销多少、锁开销多少、以及用户连接的一些属性统计信息等。此时就需要查看数据库对象事件统计表与属性统计表了。今天将带领大家一起踏上系列第五篇的征程(全系共7个篇章),本期将为大家全面讲解performance_schema中对象事件统计表与属性统计表。下面,请跟随我们一起开始performance_schema系统的学习之旅吧~

和过去几年一样的是,今年的 Apple Watch
将仍旧有大小两个版本,但在外观、功能等方面,新的 Apple Watch
很可能让人们非常期待。

图片 2

友情提示:下文中的统计表中大部分字段含义与上一篇
《事件统计 | performance_schema全方位介绍》
中提到的统计表字段含义相同,下文中不再赘述。此外,由于部分统计表中的记录内容过长,限于篇幅会省略部分文本,如有需要请自行安装MySQL
5.7.11以上版本跟随本文进行同步操作查看。

首先是外观部分,外媒 9to5Mac 早前独家取得的渲染图显示,新款 Apple Watch
会有一个新表盘并展示出更大的显示屏,并且根据 watchOS 5 beta
系统更新的证据显示,新款 Apple Watch 的 42mm 机型屏幕分辨率为
384*480,相比之下,目前的 Apple Watch Series 3 分辨率为 312*390。

今天荣耀8X迎来了首销的日子,虽然这仅仅是一款千元机,但是关注度却是异常的高,同时销量也是异常的好,截止到今天的12点,荣耀8X就获得了全平台的销量和销售额双料冠军。

01

图片 3

图片 4

数据库对象统计表

图片 5

同时提一嘴海报上的白宇是真的帅,荣耀每次请的代言人真是不错。

1.数据库表级别对象等待事件统计

图片来自 9to5Mac

即使是首销,同时还拿下了销量冠军,荣耀8X目前依然还能够买到,并没有出现耍猴的情况,充分说明荣耀8X的备货还是挺足的,同时用的是自己的麒麟710芯片,自己对于供应链的控制也是挺强,所以不耍猴也是容易办到的。

按照数据库对象名称(库级别对象和表级别对象,如:库名和表名)进行统计的等待事件。按照OBJECT_TYPE、OBJECT_SCHEMA、OBJECT_NAME列进行分组,按照COUNT_STAR、xxx_TIMER_WAIT字段进行统计。包含一张objects_summary_global_by_type表。

这很可能意味着,Apple Watch
首先会在手表尺寸不变的情况下,通过减小边框尺寸来让屏幕增大
15%,这意味着在智能手表设备上,今年的新款 Apple Watch
很可能会有更棒的显示屏和显示效果。

图片 6

我们先来看看表中记录的统计信息是什么样子的。

设计上另一变化在数字表冠(Digital Crown)部分,根据 Fast Company
报道,数字表冠这个从第一代就设计出来,用来帮助进行交互的机械式按钮,在新一代的
Apple Watch 上将通过类似苹果在 iPhone 7 系列上的 HOME 按键类似的振动马达
Tapic Engine
方式实现操控,因为这样的方式将更好帮助手表进行防水,这也符合苹果在设备按键上的设想。

荣耀8X凭借着惊人的窄下巴,准旗舰的配置(麒麟710+GT+6G+128G),1399元起的价格,确实充满了吸引力和竞争力,荣耀8X成为爆款应该不成问题了。

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

图片 7

图片 8
返回搜狐,查看更多

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

图片来自 Apple

责任编辑:

OBJECT_TYPE: TABLE

在功能上,新一代 Apple Watch
还将有可能加入陶瓷背板和心电图(EKG)支持,根据知名苹果分析师郭明錤的预测,心电图的方式能够比标准心率传感器带来更精确的心脏监测,早前苹果公司已经和斯坦福医学(Stanford
Medicine)一起进行关于心脏健康的相关研究,所以在新一代 Apple Watch
上我们将看到一些成果。

OBJECT_SCHEMA: xiaoboluo

此外,Siri 也许会成为 Apple Watch 一个亮点。新的 Apple Watch
也许会提供更方便的 Siri 语音助手功能,苹果在今年最新的 MacBook Pro
中加入了 T2 芯片,带来了永远在线的 Siri,作为随身设备的 Apple
Watch,也许能考虑类似的方式实现这样的能力。

OBJECT_NAME: test

图片 9

COUNT_STAR: 56

电池续航上面,Bloomberg
在今年春季的一份报告中之处,苹果将在未来生产制造自己的 MicroLED
显示屏,MicroLED
技术将会具有更好的显示效果和更少耗电,这无疑也将会是提升 Apple Watch
这类产品续航的关键,考虑到过去 Apple Watch
几乎一天一充的续航成绩,我们当然期待新款产品能在续航上进一步突破。

SUM _TIMER_WAIT: 195829830101250

除了这些内容,我们还可以期待一下 AirPower 和 AirPods,AirPower
这款在去年九月苹果发布会上亮相的无线充电器是不少人想要尝试的产品,但要同时为
iPhone、Apple Watch、AirPods
三款产品充电似乎需要控制好设备的散热情况,如果苹果想要让无线充电更进一步普及,AirPower
伴随新的 Apple Watch 亮相也是很有可能的事情。

MIN _TIMER_WAIT: 2971125

图片 10

AVG _TIMER_WAIT: 3496961251500

图片来自 Apple

MAX _TIMER_WAIT: 121025235946125

AirPods
第一代凭借出色的体验让很多人接触并喜欢上了真无线耳机带来的快感,根据今年六月
Bloomberg 的消息,苹果将会带来更高阶的 AirPods
耳机,支持降噪以及防水功能,这也是不少用户在户外最期待的新功能。

1 row in set (0.00 sec)

图片 11

从表中的记录内容可以看到,按照库xiaoboluo下的表test进行分组,统计了表相关的等待事件调用次数,总计、最小、平均、最大延迟时间信息,利用这些信息,我们可以大致了解InnoDB中表的访问效率排行统计情况,一定程度上反应了对存储引擎接口调用的效率。

图片来自 Apple

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

最后,不妨让我们再盘点一下 Apple Watch 发布的时间表:2014 年 9
月,苹果发布了 Apple Watch 一代(次年 4 月正式发售),2016 年 9 月 Apple
Watch Series 1/Series 2 同步发售,2017 年 9 月 Apple Watch Series 3
发售。再到今年的 Series 4,我们可以看到 Apple Watch
已经成为了一条稳定更新的产品线,或者说进入到了一个健康的生命周期中。

与objects_summary_global_by_type
表统计信息类似,表I/O等待和锁等待事件统计信息更为精细,细分了每个表的增删改查的执行次数,总等待时间,最小、最大、平均等待时间,甚至精细到某个索引的增删改查的等待时间,表IO等待和锁等待事件instruments(wait/io/table/sql/handler和wait/lock/table/sql/handler
)默认开启,在setup_consumers表中无具体的对应配置,默认表IO等待和锁等待事件统计表中就会统计相关事件信息。包含如下几张表:

而且还可以看到,尽管已经过去三年时间,但 Apple Watch
依然选择遵循独特的方形表盘设计,从某种程度上也在继续坚持 iPod Nano
时代曾经的经典设计,这一点我们也曾在极客博物馆中和大家聊过。此前有一种观点是,Apple
Watch 将替代 iPhone 成为苹果新的生态中心。

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

虽然这个目标短期内看是不现实的,但是通过最近几代更新后,Apple Watch
在软硬件上的独立性越来越强,确实有着「独当一面」的趋势。对于普通消费者来说,也能明显感觉到
Apple Watch 变得越来越实用了。

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

前不久 IDC 公布了 2018
年第二季度的可穿戴市场数据报告,苹果继续领跑,而且环比增长达到了
38.4%。实际上,苹果已经长时间保持了其在可穿戴产品市场领先的地位,从去年发布会上苹果还宣布成为全球最大的手表制造商。在可穿戴领域,或者具体来说在智能手表领域,苹果的新品动向势必会影响其他厂商的决策。(编辑:Rubberso)

| Tables_in_performance_schema (%table%summary%) |

参考资料

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

| table_io_waits_summary_by_index_usage |#
按照每个索引进行统计的表I/O等待事件

| table_io_waits_summary_by_table |#
按照每个表进行统计的表I/O等待事件

| table_lock_waits_summary_by_table |#
按照每个表进行统计的表锁等待事件

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

)

3rows inset ( 0. 00sec)

责任编辑:

我们先来看看表中记录的统计信息是什么样子的。

# table_io_waits_summary_by_index_usage表

admin@localhost : performance _schema 01:55:49> select * from
table_io _waits_summary _by_index _usage where
SUM_TIMER_WAIT!=0G;

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

OBJECT_TYPE: TABLE

OBJECT_SCHEMA: xiaoboluo

OBJECT_NAME: test

INDEX_NAME: PRIMARY

COUNT_STAR: 1

SUM _TIMER_WAIT: 56688392

MIN _TIMER_WAIT: 56688392

AVG _TIMER_WAIT: 56688392

MAX _TIMER_WAIT: 56688392

COUNT_READ: 1

SUM _TIMER_READ: 56688392

MIN _TIMER_READ: 56688392

AVG _TIMER_READ: 56688392

MAX _TIMER_READ: 56688392

……

1 row in set (0.00 sec)

# table_io_waits_summary_by_table表

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

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

OBJECT_TYPE: TABLE

OBJECT_SCHEMA: xiaoboluo

OBJECT_NAME: test

COUNT_STAR: 1

…………

1 row in set (0.00 sec)

# table_lock_waits_summary_by_table表

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

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

OBJECT_TYPE: TABLE

OBJECT_SCHEMA: xiaoboluo

OBJECT_NAME: test

…………

COUNT_READ_NORMAL: 0

SUM_TIMER_READ_NORMAL: 0

MIN_TIMER_READ_NORMAL: 0

AVG_TIMER_READ_NORMAL: 0

MAX_TIMER_READ_NORMAL: 0

COUNT _READ_WITH _SHARED_LOCKS: 0

SUM _TIMER_READ _WITH_SHARED_LOCKS: 0

MIN _TIMER_READ _WITH_SHARED_LOCKS: 0

AVG _TIMER_READ _WITH_SHARED_LOCKS: 0

MAX _TIMER_READ _WITH_SHARED_LOCKS: 0

……

1 row in set (0.00 sec)

从上面表中的记录信息我们可以看到,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等待时间,这些表的分组和统计列含义请大家自行举一反三,这里不再赘述,下面针对这三张表做一些必要的说明:

table_io_waits_summary_by_table表:

该表允许使用TRUNCATE
TABLE语句。只将统计列重置为零,而不是删除行。对该表执行truncate还会隐式truncate
table_io_waits_summary_by_index_usage表

table_io_waits_summary_by_index_usage表:

按照与table_io_waits_summary_by_table的分组列+INDEX_NAME列进行分组,INDEX_NAME有如下几种

·如果使用到了索引,则这里显示索引的名字,如果为PRIMARY,则表示表I/O使用到了主键索引

·如果值为NULL,则表示表I/O没有使用到索引

·如果是插入操作,则无法使用到索引,此时的统计值是按照INDEX_NAME =
NULL计算的

该表允许使用TRUNCATE
TABLE语句。只将统计列重置为零,而不是删除行。该表执行truncate时也会隐式触发table_io_waits_summary_by_table表的truncate操作。另外使用DDL语句更改索引结构时,会导致该表的所有索引统计信息被重置

table_lock_waits_summary_by_table表:

该表的分组列与table_io_waits_summary_by_table表相同

该表包含有关内部和外部锁的信息:

·内部锁对应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。但在该表的定义上并没有看到该字段)

·外部锁对应存储引擎层中的锁。通过调用handler::external_lock()函数来实现。(官方手册上说有一个OPERATION列来区分锁类型,该列有效值为:read
external、write external。但在该表的定义上并没有看到该字段)

该表允许使用TRUNCATE TABLE语句。只将统计列重置为零,而不是删除行。

3.文件I/O事件统计

文件I/O事件统计表只记录等待事件中的IO事件(不包含table和socket子类别),文件I/O事件instruments默认开启,在setup_consumers表中无具体的对应配置。它包含如下两张表:

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

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

| Tables_in_performance_schema (%file_summary%) |

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

| file_summary_by_event_name |

| file_summary_by_instance |

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

2rows inset ( 0. 00sec)

两张表中记录的内容很相近:

·file_summary_by_event_name:按照每个事件名称进行统计的文件IO等待事件

·file_summary_by_instance:按照每个文件实例(对应具体的每个磁盘文件,例如:表sbtest1的表空间文件sbtest1.ibd)进行统计的文件IO等待事件

我们先来看看表中记录的统计信息是什么样子的。

# file_summary_by_event_name表

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;

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

EVENT_NAME: wait/io/file/innodb/innodb_data_file

COUNT_STAR: 802

SUM_TIMER_WAIT: 412754363625

MIN_TIMER_WAIT: 0

AVG_TIMER_WAIT: 514656000

MAX_TIMER_WAIT: 9498247500

COUNT_READ: 577

SUM_TIMER_READ: 305970952875

MIN_TIMER_READ: 15213375

AVG_TIMER_READ: 530278875

MAX_TIMER_READ: 9498247500

SUM _NUMBER_OF _BYTES_READ: 11567104

……

1 row in set (0.00 sec)

# file_summary_by_instance表

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;

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

FILE_NAME: /data/mysqldata1/innodb_ts/ibdata1

EVENT_NAME: wait/io/file/innodb/innodb_data_file

OBJECT _INSTANCE_BEGIN: 139882156936704

COUNT_STAR: 33

…………

1 row in set (0.00 sec)

从上面表中的记录信息我们可以看到:

·每个文件I/O统计表都有一个或多个分组列,以表明如何统计这些事件信息。这些表中的事件名称来自setup_instruments表中的name字段:

* file_summary_by_event_name表:按照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字段,用于记录具体的磁盘文件相关信息。

·每个文件I/O事件统计表有如下统计字段:

*
COUNT_STAR,SUM_TIMER_WAIT,MIN_TIMER_WAIT,AVG_TIMER_WAIT,MAX_TIMER_WAIT:这些列统计所有I/O操作数量和操作时间

*
COUNT_READ,SUM_TIMER_READ,MIN_TIMER_READ,AVG_TIMER_READ,MAX_TIMER_READ,SUM_NUMBER_OF_BYTES_READ:这些列统计了所有文件读取操作,包括FGETS,FGETC,FREAD和READ系统调用,还包含了这些I/O操作的数据字节数

*
COUNT_WRITE,SUM_TIMER_WRITE,MIN_TIMER_WRITE,AVG_TIMER_WRITE,MAX_TIMER_WRITE,SUM_NUMBER_OF_BYTES_WRITE:这些列统计了所有文件写操作,包括FPUTS,FPUTC,FPRINTF,VFPRINTF,FWRITE和PWRITE系统调用,还包含了这些I/O操作的数据字节数

*
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操作没有字节计数信息。

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

PS:MySQL
server使用几种缓存技术通过缓存从文件中读取的信息来避免文件I/O操作。当然,如果内存不够时或者内存竞争比较大时可能导致查询效率低下,这个时候您可能需要通过刷新缓存或者重启server来让其数据通过文件I/O返回而不是通过缓存返回。

4.套接字事件统计

套接字事件统计了套接字的读写调用次数和发送接收字节计数信息,socket事件instruments默认关闭,在setup_consumers表中无具体的对应配置,包含如下两张表:

·socket_summary_by_instance:针对每个socket实例的所有 socket
I/O操作,这些socket操作相关的操作次数、时间和发送接收字节信息由wait/io/socket/*
instruments产生。但当连接中断时,在该表中对应socket连接的信息行将被删除(这里的socket是指的当前活跃的连接创建的socket实例)

·socket_summary_by_event_name:针对每个socket I/O
instruments,这些socket操作相关的操作次数、时间和发送接收字节信息由wait/io/socket/*
instruments产生(这里的socket是指的当前活跃的连接创建的socket实例)

可通过如下语句查看:

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

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

| Tables_in_performance_schema (%socket%summary%) |

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

| socket_summary_by_event_name |

| socket_summary_by_instance |

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

2rows inset ( 0. 00sec)

我们先来看看表中记录的统计信息是什么样子的。

# socket_summary_by_event_name表

root@localhost : performance _schema 04:44:00> select * from
socket_summary _by_event_nameG;

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

EVENT_NAME: wait/io/socket/sql/server_tcpip_socket

COUNT_STAR: 2560

SUM_TIMER_WAIT: 62379854922

MIN_TIMER_WAIT: 1905016

AVG_TIMER_WAIT: 24366870

MAX_TIMER_WAIT: 18446696808701862260

COUNT_READ: 0

SUM_TIMER_READ: 0

MIN_TIMER_READ: 0

AVG_TIMER_READ: 0

MAX_TIMER_READ: 0

SUM _NUMBER_OF _BYTES_READ: 0

……

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

EVENT_NAME: wait/io/socket/sql/server_unix_socket

COUNT_STAR: 24

……

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

EVENT_NAME: wait/io/socket/sql/client_connection

COUNT_STAR: 213055844

……

3 rows in set (0.00 sec)

# socket_summary_by_instance表

root@localhost : performance _schema 05:11:45> select * from
socket_summary _by_instance where COUNT_STAR!=0G;

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

EVENT_NAME: wait/io/socket/sql/server_tcpip_socket

OBJECT _INSTANCE_BEGIN: 2655350784

……

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

EVENT_NAME: wait/io/socket/sql/server_unix_socket

OBJECT _INSTANCE_BEGIN: 2655351104

……

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

EVENT_NAME: wait/io/socket/sql/client_connection

OBJECT _INSTANCE_BEGIN: 2658003840

……

*************************** 4. row
***************************

发表评论

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

网站地图xml地图