
因为某些过程是在批处理时候通过分段起多个job跑的,在RAC环境下,可能有部分跑到第一个节点,另一部分跑到第二个节点上,因为系统并没有针对RAC做过优化(暂不考虑系统问题),如果job分别跑在两个节点上,当大量的插入数据的时候会导致大量的等待所以在单节点资源足够且能够承受的情况下,想尽量放在一个节点上运行
电脑CPU-Z怎么查看参数许多用户朋友表示很捉急。下面我整理了解决查看CPU-Z参数的方法,希望能帮到大家O(∩_∩)O哈哈~
查看CPU-Z参数的方法
CPU-Z的处理器选项卡下显示的参数就是处理器的核心参数知识,下面我们具体来解读看。
图为Intel六代I5-6600K的CPU-Z检测结果
①名字
CPU-Z检测结果出来之后,第一栏叫“名字”,但是这个“名字”只具有参考价值,如果你看CPU-Z检测的处理器型号是看“名字”这一栏,只能说明你并不会用这款软件。
CPU-Z经常会出现这样的检测结果,名字和规格显示的结果并不一样,这是为什么呢我之前已经说了,名字栏可以理解为这是CPU-Z拿到处理器后与自身数据库比对后第一反应的结果,这个结果对检测ES型号不显的处理器有一定的帮助,而对于我们正式版或者正显型号的产品,只会多几分误导,所以小白们,千万不要去看名字这一栏参数!
②代号
即为核心代号,用于区分处理的核心架构,比如Skylake就是我们常说的进入酷睿I时代的第六代处理器核心代号,第五代是Broadwell,而第四代则是Haswell。
③TDP热设计功耗
这个参数非常难解释!绝大部分人都不懂什么是TDP,小白们以为TDP越大功耗越大,但并非如此!现阶段最通俗的解释就是:同一系列处理器,TDP越大,性能越强。TDP是一个可以修改的参数,并不是实际功耗,而至于怎么修改,英特尔以及OEM制造商可以根据他们对处理器的预期表现而进行设定。I5-6600的TDP是65W,而到了6600K就被设定在95W,这是为什么呢TDP设定的越高,处理器就越不容易降频,这对6600K的超频表现就越不容易产生限制。
很多至强E5的TDP设在130W甚至更高,这是因为这些服务器、工作站处理器经常需要高负载运行,所以TDP定的高一些就不容易出现性能下降。而在日常使用中,这些处理器的实际功耗往往都要低于TDP是95W的普通桌面处理器。有人问我,为什么E3-1230V3没有核芯显卡,TDP在80W,而I7-6700有核芯显卡,频率和E3一样,TDP却只有65W因为至强E3系列主要是为工作站所设计,高负载的数据设计、渲染都会对处理器的稳定性产生极大的依赖,TDP为80W的E3-1230V5在这一过程中的表现一定是要比I7-6700更加稳定的!而我们日常家用环境下,不带核芯显卡的E3实际功耗是要略低于I7的。
④插槽
其实这个翻译是通俗化了的,因为准确的英文翻译过来是封装形式。最通俗的讲,LGA就是我们所说的触点式接口的处理器,包括绝大部分的英特尔桌面级处理器以及AMD的皓龙系列处理器;PGA就是我们所说的针脚式处理器,包括可以更换的移动版处理器以及绝大部分的AMD桌面处理器;BGA封装就是焊接在主板上的形式,无法更换。
⑤工艺
制造工艺纳米数越小,代表越精细,处理器也就越先进。第四代Haswell处理器为22纳米制造工艺。
⑥核心电压
同一架构处理器的核心电压在同一主频率的对比中,电压越低代表处理器的体质越好,但是经常有人拿着01V、03V的核心电压问我们,我这处理器体质是不是很牛!兄弟我只想告诉你,你这个明显是主板检测错误。现阶段处理器的核心电压几乎是不可能低于07V的!
⑦规格
这一栏才是检测重点!一款正式版的处理器会在规格栏显示出完整的处理器型号以及设定的标准主频。
上图,如果检测出来的型号后面还有ES字样,说明这是一颗QS(品质确认)版的处理器,虽然也是属于工程测试版处理器的一种,但是这种处理器和正式发售的型号已经几乎没有差别,价格上也只是比正式版略低。
此外,像这种只有一个主频,没有任何型号显示的处理器,就是标准的ES不显测试版处理器了,这种处理器因为属于测试型号,或多或少都存在一定的问题,因此不建议新手购买这些。不过,这些处理器价格便宜。
现在淘宝上许多奸商自创“QS不显“这种叫法来迷惑消费者!记住,只要能被归类到QS类别下的测试版处理器,是一定可以在规格栏看到具体的型号的!如果看不到,就是ES不显!就不值钱!
1~6是绝大部分用户看不懂的类目,那么它们代表什么意思呢
①和④是一对,这组数据并没有什么意义,所有的英特尔处理器的系列/扩展系列都是6/6!所有AMD处理器的系列都是F,扩展系列有些是F,有些是15。所以这组数据意义不大。
②和⑤是一对,这组数据其实是处理器架构的决定数据,比如E/5E就代表Skylake,而C/3C就代表Haswell,而7/17就代表酷睿2。
③和⑥是一对,这组数据相对比较重要,同一型号的正式版处理器如果修订号存在差别,那么其实际功能也会存在差异。比如说酷睿2四核Q6600,G0修订号代表TDP是95W,而B3修订号代表TDP是105W。如果你去淘宝买当下热门的E5-2670,卖家会强调他们卖的是C1版还是C2版,C2更贵一些,因为C2版在C1的基础上加入了对VT-d虚拟化技术以及TXT可执行信技术的支持。然而,这两个技术对普通用户并没有什么卵用。买ES处理器的用户也需要关注修订号,修订号越新的CPU相对存在的BUG也会更少一些。
⑦指令集
其实吧,这个翻译不合理,CPU-Z所列出来的指令集都是扩展指令集,连最本质的X86指令集都没有列上去。所以我们应该叫⑦为扩展指令集。
下面给大家非常通俗的解释一下这些扩展指令集的功能,让你也可以更专业一点。
MMX
MMX是X86处理器首个加入的扩展指令集,于1997年首次出现在奔腾MMX处理器中,是处理器中最重要的提升多媒体性能的扩展指令集,AMD的MMX(+)是对MMX指令集进一步完善之后的结果(AMD原先还有个3D NOW!指令集);
SSE家族
SSE指令集家族本质上是MMX的延伸,主要还是提升了处理器的多媒体能力以及运算性能。其中SSSE3指令集是英特尔酷睿架构的标志,当然,它后来也被应用在AMD处理器中。AMD的SSE4A可以理解为是对SSE4系列指令集的补充;
EM64T(英特尔)/X86-64(AMD)具备这两种扩展指令集的处理器就是我们所说的64位处理器,可以安装64位 *** 作系统。AMD早在2003年就已经将64位扩展指令集应用在自家消费级处理器上,英特尔则是晚了好久;
VT-X(英特尔)/AMD-V(AMD)虚拟化技术,最早是由AMD向广大用户普及的,英特尔之前只有高端处理器才有这一指令集;
AES加密运算指令集;
AVX/AVX2浮点运算扩展指令集,这一指令集极大地提升了处理器的浮点运算能力;
FMA3/FMA4(AMD)FMA指令集可以看做是AVX的补充集或者子集。
TSXTSX命途多舛,一度在Haswell以及Broadwell处理器上被禁用,因为存在运算BUG,TSX的设计初衷是为了提升处理器多线程运算的效率。
下面也是重点:
①核心速度
指的是当前处理器核心的速度!很多人总是问为什么我的I5-4590明明主频是330GHz,现在只有16GHz或者其他达不到标称的频率
这是因为英特尔处理器支持EIST增强型节能技术(2003年以后处理器基本都有这项技术),处理器会根据当前任务量(负载高低)而在最低频率(Haswell之后是08GHz,之前一般是12~16GHz)与最大睿频之间自由切换频率!!!所以不要对你的处理器频率总是一直变啊变感到担心!如果哪一天它卡在某个频率不会动了,你才应该感到担忧!
AMD同样有类似节能技术,叫“凉又静”。
②倍频/③总线倍频X总线=主频。处理器节能技术实现的关键就是倍频一直在变。
关于英特尔总线的说明从第二代处理器开始,英特尔使用了DMI总线,频率是100MHz,但是根据主板上的时钟发生器的差异,这个频率几乎不可能正好100,一般都是9976~101之间。如果你的 *** 作系统支持HyperV虚拟化,并且你将它开启,你的总线速度会进一步降低到96MHz左右,并且VT-X也会在CPU-Z的检测中消失。
④额定FSBFSB前端总线是一种淘汰的总线技术,应用在奔腾4~酷睿2期间的处理器中,其频率与外频的关系式:FSB=外频X4
处理器缓存
⑤一级数据/⑥一级指令
英特尔所有的处理器每一个核心都是同时具备一级指令缓存以及一级数据缓存的。有几个物理核心,CPU-Z就会在这里写上X核心数目(图中为四核I5,所以X4)。
AMD处理器的话,采用模块化架构以来,每个核心单独拥有一级数据缓存,但是指令缓存则是一个模块中的两个核心共享的。
⑦二级缓存
英特尔处理器现在一般都是每个核心分配256KB二级缓存,从第一代酷睿I开始都是如此。
AMD的二级缓存是每个模块共享的。
⑧三级缓存
不论英特尔处理器还是AMD处理器的三级缓存都是所有核心共享的。
扩展四级缓存:英特尔采用iris Pro系列核芯显卡的CPU都拥有128MB或更大的四级缓存,这个参数只有在AIDA 64的CPU检测中才能看到,如下图:(i7-5775C的缓存分布)
核心数/线程数核心数就是代表物理核心的数目,四核处理器这里就显示4支持超线程技术的处理器,线程数就是核心数的2倍,千万不要把线程数当作核心的数目来看待!两者存在本质区别!任务管理器中的处理器负载框框的数目代表的是线程数!!!所以不要被任务管理器给骗了!
以上就是脚本之家我为大家带来的利用CPU-Z检测电脑CPU型号方法介绍了,希望可以帮助到大家,大家如果还有疑问的话,可以在下方的评论框内给我们留言哦。我们会尽自己所能的为大家解答。谢谢大家一如既往的支持,也请大家继续关注脚本之家的后续教程和软件。
作者 王文安,腾讯CSIG数据库专项的数据库工程师,主要负责腾讯云数据库 MySQL 的相关的工作,热爱技术,欢迎留言进行交流。文章首发于腾讯云+社区的腾讯云数据库专家服务专栏。
在日常工作中,发现 MySQL 的状态不太对劲的时候,一般都会看看监控指标,很多时候会看到熟悉的一幕:CPU 使用率又爆了。本文将给大家介绍 MySQL 和 CPU 之间的关系,对此有一定的了解之后可以更准确的判断出问题的原因,也能够提前发现一些引发 CPU 问题的隐患。
怎么看懂CPU使用率
以 Linux 的 top 命令为例,效果如下:
Top 命令
在 %CPU 这一列就展示了 CPU 的使用情况,百分比指代的是总体上占用的时间百分比:
%us:表示用户进程的 CPU 使用时间(没有通过 nice 调度)
%sy:表示系统进程的 CPU 使用时间,主要是内核使用。
%ni:表示用户进程中,通过 CPU 调度(nice)过的使用时间。
%id:空闲的 CPU 时间
%wa:CPU 运行时在等待 IO 的时间
%hi:CPU 处理硬中断花费的时间
%si:CPU 处理软中断花费的时间
%st:被虚拟机偷走的 CPU 时间
通常情况下,我们讨论的 CPU 使用率过高,指的是 %us 这个指标,监控里面的 CPU 使用率通常也是这个值(也有用其他的方法计算出来的,不过简单起见,不考虑其他的情况 )。其他几个指标过高也代表出 MySQL 的状态异常,简单起见,这里主要还是指 %us 过高的场景。
MySQL和线程
MySQL 是单进程多线程的结构,意味着独占的 MySQL 服务器里面,只能用 top 命令看到一行数据。
TOP 命令效果
这里能看到的是 MySQL 的进程 ID,如果要看到线程的情况,需要用top -H
TOP 命令效果
在这里能看到的是 MySQL 各个线程的 ID,可以看到 MySQL 在启动之后,会创建非常多的内部线程来工作。
这些内部线程包括 MySQL 自己用来刷脏,读写数据等 *** 作的系统线程,也包括处理用户 SQL 的线程,姑且叫做用户线程吧。用户线程有一个特殊的地方:程序端发送到 MySQL 端的 SQL,只会由一个用户线程来执行(one-thread-per-connection),所以 MySQL 在处理复杂查询的时候,会出现“一核有难,多核围观”的尴尬现象。
参考 %us 的定义,对于 Linux 系统来说,MySQL 进程和它启动的所有线程都不算内核进程,因此 MySQL 的系统线程和用户线程在繁忙的时候,都会体现在 CPU 使用率的 %us 指标上。
什么时候CPU会100%
MySQL 干什么的时候,CPU 会 100%?从前文的分析来看,MySQL 主要是两类线程占用 CPU:系统线程和用户线程。因此 MySQL 独占的服务器上,只需要留意一下这两类线程的情况,就能 Cover 住绝大部分的问题场景。
系统线程
在实际的环境中,系统线程遇到问题的情况会比较少,一般来说,多个系统线程很少会同时跑满,只要服务器的可用核心数大于等于 4 的话,一般也不会遇到 CPU 100%,当然有一些 bug 可能会有影响,比如这个:
MySQL BUG
虽然情况比较少,但是在面对问题的常规排查过程中,系统线程的问题也是需要关注的。
用户线程
提到用户线程繁忙,很多时候肯定会第一时间凭经验想到慢查询。确实 90% 以上的时候都是“慢查询”引起的,不过作为方法论,还是要根据分析再去得出结论的~
参考 us% 的定义,是指用户线程占用 CPU 的时间多少,这代表着用户线程占用了大量的时间。
一方面是在进行长时间的计算,例如:order by,group by,临时表,join 等。这一类问题可能是查询效率不高,导致单个 SQL 语句长时间占用 CPU 时间,也有可能是单纯的数据量比较多,导致计算量巨大。另一方面是单纯的 QPS 压力高,所以 CPU 的时间被用满了,比如 4 核的服务器用来支撑 20k 到 30k 的点查询,每个 SQL 占用的 CPU 时间并不多,但是因为整体的 QPS 很高,所以 CPU 的时间被占满了。
问题的定位
分析完之后,就要开始实战了,这里根据前文的分析给出一些经典的 CPU 100% 场景,并给出简要的定位方法作为参考。
PS:系统线程的 bug 的场景 skip,以后有机会再作为详细的案例来分析。
慢查询
在 CPU 100% 这个问题已经发生之后,真实的慢查询和因为 CPU 100% 导致被影响的普通查询会混在一起,难以直观的看 processlist 或者 slowlog 来发现尊敬的大船,这时候就需要一些比较明确的特征来进行甄别。
从前文的简单分析可以看出来,查询效率不高的慢查询通常有以下几种情况:
全表扫描:Handler_read_rnd_next 这个值会大幅度突增,且这一类查询在 slowlog 中 row_examined 的值也会非常高。
索引效率不高,索引选错了:Handler_read_next 这个值会大幅度的突增,不过要注意这种情况也有可能是业务量突增引起的,需要结合 QPS/TPS 一起看。这一类查询在 slowlog 中找起来会比较麻烦,row_examined 的值一般在故障前后会有比较明显的不同,或者是不合理的偏高。
比如数据倾斜的场景,一个小范围的 range 查询在某个特定的范围内 row_examined 非常高,而其他的范围时 row_examined 比较低,那么就可能是这个索引效率不高。
排序比较多:order by,group by 这一类查询通常不太好从 Handler 的指标直接判断,如果没有索引或者索引不好,导致排序 *** 作没有消除的话,那么在 processlist 和 slowlog 通常能看到这一类查询语句出现的比较多。
当然,不想详细的分析 MySQL 指标或者是情况比较紧急的话,可以直接在 slowlog 里面用 rows_sent 和 row_examined 做个简单的除法,比如 row_examined/rows_sent > 1000 的都可以拿出来作为“嫌疑人”处理。这类问题一般在索引方面做好优化就能解决。
PS:1000 只是个经验值,具体要根据实际业务情况来定。
计算量大
这一类问题通常是因为数据量比较大,即使索引没什么问题,执行计划也 OK,也会导致 CPU 100%,而且结合 MySQL one-thread-per-connection 的特性,并不需要太多的并发就能把 CPU 使用率跑满。这一类查询其实是是比较好查的,因为执行时间一般会比较久,在 processlist 里面就会非常显眼,反而是 slowlog 里面可能找不到,因为没有执行完的语句是不会记录的。
这一类问题一般来说有三种比较常规的解决方案:
读写分离,把这一类查询放到平时业务不怎么用的只读从库去。
在程序段拆分 SQL,把单个大查询拆分成多个小查询。
使用 HBASE,Spark 等 OLAP 的方案来支持。
高 QPS
这一类问题单纯的就是硬件资源的瓶颈,不论是 row_examined/rows_sent 的比值,还是 SQL 的索引、执行计划,或者是 SQL 的计算量都不会有什么明显问题,只是 QPS 指标会比较高,而且 processlist 里面可能什么内容都看不到,例如:
processlist
总结
实际上 CPU 100% 的问题其实不仅仅是单纯的 %us,还会有 %io,%sys 等,这些会涉及到 MySQL 与 Linux 相关联的一部分内容,展开来就会比较多了。本文仅从 %us 出发尝试梳理一下排查&定位的思路和方法,在分析 %io,%sys 等方面的问题时,也可以用类似的思路,从这些指标的意义开始,结合 MySQL 的一些特性或者特点,逐步理清楚表象背后的原因。
以上就是关于怎么通过PL/SQL查询数据库应用的CPU使用率和内存,IO等信息全部的内容,包括:怎么通过PL/SQL查询数据库应用的CPU使用率和内存,IO等信息、CPU-Z处理器参数怎么看、数据库消耗内存大还是cpu大等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)