CPU资源和可用内存大小

博客围绕CPU资源和可用内存大小展开,但具体内容缺失。通常CPU资源和可用内存大小是衡量计算机性能的重要指标,对系统运行和软件使用有重要影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


从上一节我们举得例子可以看到,每当大促系统繁忙的时候,我们可以监控到的CPU资源,内存资源都是十分

紧张的,特别是对于一些计算密集型的应用,CPU越可能是影响整个系统的功能,成为系统的瓶颈,所以首先对

MYSQL性能又影响的呢,就是这两种资源,也就是CPU资源,和可用的内存大小,另外一方面就是咱们工作所需要的

热数据大小远远大于可用内存大小时,IO系统就可能成为我们的瓶颈,网络我们也可以看做是另外一种IO资源,

网络往往发生在大量数据被查询时,特别是我们使用Memcache这种存储引擎,当缓存大量生效时,就会产生大量的

网络传输,从而影响服务器的性能,所以当出现IO系统瓶颈时,最有效的方法就是升级IO子系统,来增加可用内存,

网络及IO资源呢,也是堆数据库性能影响的第二个硬件因素,下面我们会分别介绍服务器硬件会对MYSQL性能有什么

样的影响,和如何对他们进行优化,首先来看我们如何来选择CPU,经常有人会问我这样的问题,我们是需要更多地CPU

呢,还是需要更快的CPU,这个在我们升级服务器,或者是在购买服务器硬件的时候,经常会被采购硬件的同事问到,他

经常要求我们选择我们所需要的CPU的频率和CPU的数量,当然完美的情况下我们都想做到最好,我们想要最高频率的CPU,

同时也想要更多的核心数,但是现实往往是很残酷的,有些原因只能让我们选择一种,其中某些原因还是成本的因素,

那我们首先要有一些了解之后才能做正确的选择,首先我们要看我们的应用是否是CPU密集型的,而对于CPU密集型的

应用呢,要加快SQL语句的处理速度,显然是更好的CPU,不是更多的CPU,这里还有一点要注意,我们之前也提到过,对于

目前版本的MYSQL而言,不支持对多CPU的对同一SQL并发处理,也就是不管CPU多复杂,或者多简单,我们只能用到一个CPU

的核心进行处理,这时多个CPU对提高SQL的处理效率呢,显然是没有帮助的,接下来我们还要研究系统的并发量如何呢?

虽然单个SQL无法利用到多个CPU的资源,而如果我们要提高系统的吞吐量呢,并发处理量呢,那么这个时候我们就需要

CPU数量越多越好,我们来想象一下,如果一个CPU可以处理一个SQL,那是不是40个CPU可以处理40个SQL

细心地朋友可能发现到了,之前我们定义了衡量数据库处理能力的指标,QPS,指的是同时处理SQL的数量,这里要强调

一下的是,QPS是每秒钟处理SQL的数量,而这里所说的并发处理SQL的次数,可能是在纳秒级的,这完全取决于SQL的执行情况,

MYSQL大量的被应用到WEB类应用中,这里应用通常是非常大的,所以在这种情况下,CPU的数量可能比频率就更加重要一些,

同时我们还要考虑使用MYSQL的使用版本,MYSQL的版本也会决定如何选择CPU,老版本的MYSQL对多核的支持都不知道,对于

MYSQL5.0之前的版本,是非常严重的,而对于MYSQL5.6来说呢,对于多核CPU的支持已经有了很大的改善,我们可以放心的使用

16核,32核这样的CPU,所以要使用多个CPU的话,还要建议大家使用最新的MYSQL,达到最好的性能,关于如何使用CPU还有最后

一个问题,也需要我们来注意的,这个问题现在来说已经不是问题了,就是我们选择32位的CPU还是64位的CPU,这个选项现在来看

已经是完全多余的,因为64位架构的CPU呢,现在已经成为一种默认的配置了,我们现在想买32位的服务器可能也已经买不到了,

同时MYSQL的64位的CPU呢,做到了完美的支持,所以下面的注意事项才是我们的选项的重点,在64位架构CPU上,使用32位的操作系统,

大家不要以为这种情况是很难发生的,其实这种情况是经常发生的,特别是在一些云服务器,或虚拟主机上,当然有些公司的服务器上

也会出现这种情况,这一般是因为运维人员在按照操作系统的时候,使用了错误的版本系统而造成的,不要小看忽略这个问题,对于

一些大公司,也可能出现这样的错误,特别是对于一些非生产环境,比如说开发和测试环境,更容易出现这种情况了,32位的操作系统呢,

意味着我们不能使用大量的内存,而且在32位系统上,任何一个单独的进程呢,不能存储4G以上的内存,所以大家要知道,MYSQL本身是一个

单线程的服务,所以如果我们使用了32位的操作系统,实际上对MYSQL有一个极大的限制,所以大家要注意这一点,说完了CPU,

我们来说说内存,内存的大小直接影响数据库的性能,目前内存的IO效率呢要远远高于磁盘,就是和SSD和Fushion-IO相比呢,内存的IO速率

也要高的多

所以把数据缓存到内存中,进行读取,可以大大提高数据库的性能

常用的MYSQL存储引擎中呢,MyISAM会把索引缓存到内存中,数据通过操作系统来缓存

而InnoDB是在内存中同时缓存索引和数据,从而提高数据库的运行效率

关于内存的配置呢,有几个提示需要大家注意,内存虽然是越多越好,但是对于性能的影响也是有个限度的,

我们不能指望通过增加内存无限的增加系统的性能

数据库可以利用的内存是有限的,一般当缓存的数据和磁盘上已有的数据呢,一样时,就是当所有的数据

都被缓存到缓存后,会增加缓存内存的大小,就没有意义了,如果我们数据文件是100个G,如果我们的内存

只有64个G的情况下,增加内存,扩大数据库的缓存区大小来获取性能的提升,如果我们的数据文件是100个G,

而我们的内存已经是256个G了,那你数据库的缓存池呢,大小达不到196个G的情况下,就不能指望通过增加服务器

内存的方式来获得性能提升,当然这个也不是绝对的,虽然数据库不能应用多出来的内存,但是多用内存也会增加

操作系统等其他服务的性能,缓存不但会对读有益处,同时也会对写有益处,关于缓存的一个常见的误区就是,只有读

在缓存中受益

如果有足够的内存,就完全可以避免磁盘读取的请求,如果所有的数据都可以放到内存中,一旦所有缓存数据

热起来,所有数据被缓存起来之后,所有的读操作都会在缓存中,但是写入是不同的问题,写入可以像读一样,

在内存中完成,但是迟早我们要把写到内存的数据写入到磁盘上,但是虽然是这样的,缓存对写入还是有好的影响

他虽然不能避免磁盘的写入操作,但是可以对写操作进行延缓,把多次写入变成一次写入

比如我们电商网站中,对每一个产品会有一个浏览的计数器,如果每次用户查询这个商品的时候呢,

显然会造成大量的IO操作,如果我们只更新内存的计数器,当技术器增长到100以后,再统一写入到磁盘,

这样就把100次写入就变成了1次操作,从而增加了服务器的性能,数据库就提供了类似的一些功能,可以在缓存

池中,把对同一数据库的写操作呢,合并成一次,然后最后写入到磁盘设备上,那么我们如何配置内存呢,涉及到内存的

选择问题,这里还有一个建议,就是内存的主频和CPU的主频是类似的,所以捡一块大家选择服务器主频最高的内存,

频率越高表示内存的读取速度越快,因此我们选择内存时,应该选择主板支持的主频最高的内存,应该注意的是,服务器

内存通常来说呢,是组成购买升级的,每个通道尽量使用相同的品牌,相同颗粒,相同电压,相同校验技术,相同型号的内存条,

另外呢我们选择的单条容量要尽量大,这就意味着我们所花费的成本呢,会增加

当然也可以根据我们数据库的大小来选择合适的内存,比如我们目前的数据库,可能有100个G,

我们选择128G内存就已经足够了,但是还是要考虑到数据的增长速度,以及增长幅度的因素,来选择更大的内存,

比如256G呢

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值