performance_schema全方位介绍,xs马上就要发布了
分类:技术

原标题:连金属3D打印都能量产了,惠普还有什么打不出来?

原标题:iphone xs马上就要发布了,什么都挺好的,然而这一点我选择放弃

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

那些年神乎其神的 3D 打印,现在过得怎么样?

大概还有9个小时就要开iphone XS的发布会了!苹果手机都挺好的,就是这一点,我就选择放弃了!

图片 1

说实话我并没有觉得它进入了我们普通人的生活。

图片 2

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

对了,那天我逛商场碰见一个3D 打印摊:一个印度人守在机器前,你给他10块钱,他在那宝贝机器上捣鼓了几下,过一会机器吐出来一个塑料小动物玩具。

你们猜苹果512GB的型号有没有可能过万?返回搜狐,查看更多

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

仅此而已。

责任编辑:

01

图片 3

数据库对象统计表

3D 打印这个技术,在前几年号称能彻底革命制造行业,现在看来也只是少数朋友的玩具而已。

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

3D 打印并没有进入普通人家,美国人需要做个什么东西需要材料还是得跑一趟 Home Depot。

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

前几年逛 Maker Faire,总是能看到茫茫多的 3D 打印初创公司,但之后就一年比一年少。大约是这些公司明白过来,3D 打印创业没什么前景,都转行去做区块链了吧。

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

To C 没戏了,To B 呢?

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

今天我在芝加哥参加全美最大制造业展会 IMTS(国际制造业科技展),发现了惠普这家公司:

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

图片 4

OBJECT_TYPE: TABLE

上面是我在大会上看到的惠普新发布的打印机。当时我也有点犯迷糊:怎么一个做打印机的,还能跟“制造业”发生关系呢?

OBJECT_SCHEMA: xiaoboluo

仔细了解了一下,我发现惠普打来的这些新品打印机,远比我已经多年没用过的打印机厉害多了:

OBJECT_NAME: test

首先,它们是 3D 打印机,名叫 Metal Jet。

COUNT_STAR: 56

其次,顾名思义,它们能 3D 打印金属——可比之前只能打塑料的厉害多了。

SUM _TIMER_WAIT: 195829830101250

机器主要是用来生产金属零件的,小到齿轮,大到工业金属制品,只要是一体的,都能用 Metal Jet 打印出来。

MIN _TIMER_WAIT: 2971125

比如手动档汽车的变速杆:

AVG _TIMER_WAIT: 3496961251500

图片 5

MAX _TIMER_WAIT: 121025235946125

据惠普介绍,它们的打印效率已经达到了大规模量产的级别。

1 row in set (0.00 sec)

机器也不便宜:单机售价在39万美元以下,产品计划将在2020年开始向早期客户发货,2021年实现大规模供货。

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

然而,惠普这家从半导体起家的公司,能在挑战传统制造业这件事,完成那成百上千家3D 打印创业公司所未竟的事业么?

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

3D打印瞄准12万亿的制造业市场

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

为什么我们现在已经有了足够低成本的工具去生产金属螺丝和齿轮,还要用到高科技的 3D 打印。

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

这是因为金属零件的诞生之路大概是这样的:工厂对金属进行锻打、塑形、高压压缩、切割等工艺,完成对金属材料的处理,然后再将分散在世界各地的不同厂商制造的零件运到一起进行组装拼接。

+------------------------------------------------+

这样过程中浪费了很多材料,增加了许多成本。即便先进如苹果公司,也会在生产和组装 iPhone 的过程中产生很多浪费和无法避免的成本增加。

| Tables_in_performance_schema (%table%summary%) |

在这件事上,3D 打印的效率要高得多。如果真的得到推广并一统制造业,总体上讲工厂浪费的材料会减少,成本是会降低的。

+------------------------------------------------+

然而想要实现这个理想,首先要解决大规模量产的问题。

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

玩过的朋友可能知道,3D 打印挺耗费材料的,而且打印速度一般不怎么快,一个小小的玩具,可能要几分钟才能生产。

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

如果要在指定货期内达到量产级的数量,总不能一下子买成千上万台打印机吧?

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

“我们需要证明,3D 打印技术是可以用于大规模量产的,”惠普 3D 打印业务部门总裁史蒂芬·尼格罗 (Stephen Nigro) 表示,“对于3D打印技术的质疑,最核心的就是它能否完成量产。若一直只用于定制化的生产,那么永远没人会把它当回事。”

+------------------------------------------------+

大部分人不知道,其实早在2016年,惠普就已经推出了量产塑料 3D 打印机器 Jet Fusion plastic 3D 打印机。

3rows inset ( 0. 00sec)

解决了塑料之后,金属将成为 3D 打印的真正圣杯。

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

而3D打印技术在处理工艺上的方式则完全不同。

# table_io_waits_summary_by_index_usage表

3D打印的“学名”叫做增材制造(Additive Manufacturing,AM),就像这个名字的字面含义,它通过将原材料层层处理形成沉积的方法来生产产品。

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

据尼格罗介绍,3D打印又分三个不同“流派”:激光切割、注射成型和粘合剂喷射成型。

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

总的来讲,第一种很浪费材料,第二种比较简单实现但有天花板,比如成品的精确度。喷射成型的全称是“粘结剂喷射成形技术”,意思是打印机的喷头将“胶水”喷到原材料粉末的对应位置,得到最终需要的形状。

OBJECT_TYPE: TABLE

Metal Jet 就属于喷射成型。这可厉害了,因为这次被喷的可不是塑料,而是熔点较高的金属。

OBJECT_SCHEMA: xiaoboluo

为什么这种高科技打印技术,惠普能做的出来?

OBJECT_NAME: test

你可以这样理解:惠普的 3D 打印喷射成型,跟沿用了几十年的纸张喷墨打印,在本质上是差不多的,属于同一科技树上的分支迭代。

INDEX_NAME: PRIMARY

“惠普过往30年在热喷墨技术上的积累,让我们的3D打印技术起点很高,”惠普金属3D打印事业部全球事业经理蒂姆·韦伯 (Tim Weber) 说。“我们可以在3D打印中拥有比其他对手大两倍的页宽,比他们多4倍的喷嘴密度。”

COUNT_STAR: 1

不仅如此,据他介绍,惠普这么多年专注于打印,积累了很多化学材料专利,这给了他们一个很大的优势:在打印金属时,可以有效降低机器里粘结剂的比例,进而降低成品的重量。

SUM _TIMER_WAIT: 56688392

图片 6

MIN _TIMER_WAIT: 56688392

Metal Jet 和成年男子一样高

AVG _TIMER_WAIT: 56688392

“我们有这样的技术优势,于是我们做了些市场调查,最终决定集中力量在量产而非定制化业务方面。”尼格罗对硅星人表示。

MAX _TIMER_WAIT: 56688392

图片 7

COUNT_READ: 1

Metal Jet 的控制面板 想要更大市场 惠普先要做“推销员”

SUM _TIMER_READ: 56688392

据惠普方面介绍,横向来看,整个制造业价值12万亿,3D打印有很大空间,而现在明显占比还很小。而纵向来看,每年仅汽车、工业和医疗行业就能生产数十亿个金属零件。在这些垂直领域蕴含着很多机会。

MIN _TIMER_READ: 56688392

技术准备好了,还需要市场的接受。惠普开始向市场最重要的玩家推荐自己的技术,靠什么吸引他们?当然是证明这种技术可以帮他们降低成本。

AVG _TIMER_READ: 56688392

这就需要和两类对手进行比较:其他3D打印技术提供商,以及传统的制造方式。

MAX _TIMER_READ: 56688392

尼格罗表示,相较于其他3D打印技术,Metal Jet可将工作效率提升高达50倍,同时降低成本。

......

尼格罗以汽车零件“指形从动滚轮”为例,“如果你使用金属注塑成型,单个零件的成本是 $2;如果你使用激光切割,成本将剧增至 $40-50。

1 row in set (0.00 sec)

图片 8

# table_io_waits_summary_by_table表

而根据惠普的核算,用 Metal Jet 生产这个零件的成本能降低到 $2,而且还会比注塑成型的产品更轻便。

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

尼格罗表示,企业工厂权衡是否采用 3D 打印机,不应该只计算量产上的成本。一个很重要的考虑在于,3D 打印机显著降低了原形生产,也即打样的成本。业内人士大多清楚,在过去如果找工厂生产一个什么东西,打样的价格是最贵的。

OBJECT_SCHEMA: xiaoboluo

惠普开始和垂直行业顶尖公司合作,推广自己的产品,进行用户教育。

OBJECT_NAME: test

图片 9

COUNT_STAR: 1

惠普已经和大众汽车、GKN、Parmatech等公司达成合作

............

“我们的方法是,先和零件生产商、原材料企业联系,告诉他们我们新的技术可以帮助节省成本,并证明给他们看。然后,他们再去跟他们的客户介绍这种新的生产方式,拿到订单。“

1 row in set (0.00 sec)

比如,惠普先找到了世界上最大零件生产商之一的 GKN。后者转身联系自己的客户,问他们是否愿意订购 3D 打印的零件,来代替传统方式生产的零件。

# table_lock_waits_summary_by_table表

通过这个路径,惠普还真得到了不少大品牌的背书,比如 GKN 的客户大众汽车。

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

大众汽车技术规划与发展主管马丁·歌德 (Martin Goede) 博士介绍,大众旗下一些车型的车钥匙以及个性名牌现已通过3D打印量产,他们计划在明年实现变速杆的3D打印量产。未来甚至有可能实现车身等核心部件30%由3D打印完成。

*************************** 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 ***************************

本文由永利402com官方网站发布于技术,转载请注明出处:performance_schema全方位介绍,xs马上就要发布了

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文