MySQL 学习篇(二)MYSQL性能影响基础扩展篇1--服务器硬件与CPU
-
目录
-
2-01 影响性能的几个方面
- 服务器硬件
- 服务器系统
- 数据库存储引擎的选择
- 数据库参数配置
- 数据库结构设计和SQL语句
-
2-02 CPU资源和可用内存大小
每当双十一大促我们可以监控到CPU资源和可用内存资源都是十分紧张的
特别是对于一些计算密集型的应用,CPU资源就越可能影响整个系统的性能,首先对于MYSQL性能有影响就是以下两个Y硬件资源:
另一方面,当工作所需要的热数据的大小,远远超过可用内存大小时,IO系统就会成为我们的瓶颈;
网络我们也可以看到是另外一种IO资源,网络对性能的影响发生在大量的数据被查询时,特别是当我们使用MemCache这样的存储引擎当缓存层的时候。当缓存大量失效时,就会产生大量的网络传输,从而影响服务器的性能。
所以当出现IO系统瓶颈时,我们最有效的方法就是升级IO子系统,来增加更多的内存:
网络及IO资源就是对我们数据库性能有影响的第二个因素。
-
服务器硬件对性能的影响和优化
1.1 如何选择CPU
Q1:我们是需要更多的CPU呢,还是需要更快的CPU?
w1:这个问题能在我们升级服务器,或者是在购买新的服务器硬件的时候,经常会被负责采购硬件的那种同事的问道,他们经常会要求我们选择我们所需要的,CPU的评论和CPU的数量,当然在完美的情况下,对于这两个选项的我都想要得最好。
我们想要最高频率的CPU,同时也想要更多的CPU的核心数,但是呢,现实往往是很残酷的,总由于某些原因,迫使我们只能选择这两种中的一种。当然了,某些原因呢,最主要的还是成本的因素。
首先我们要看我们的应用是否是CPU密集型,而对于CPU密集型的应用,要加快sql的处理速度,显然我们需要的是有更好的CPU,而不是更多的CPU。
这里呢,还有一点要注意,我们之前也提到过,对于目前版本的系统而言,还不支持多CPU对同一SQL的并发处理,也就是说不管SQL多复杂或者多简单,都只能用到一个CPU核心进行处理,这时多个CPU对提高SQL处理效率,显然是没有帮助的。
接下来呢,我们还要了解一下我们的系统的并发量是如何呢?虽然单个SQL无法利用到多个CPU资源,要提高系统的吞吐量,或者说是并发处理量呢,这时我们就需要CPU越多越好。
我们想象一下,如果说一个CPU,可以处理一个SQL,那么是不是可以说,如果有40个CPU就可以同时处理40个SQL呢?
同时处理的SQL的数量,这里要强调的是,QPS指的是每秒钟处理的数量,而这里所说的并发处理40个SQL呢?可能是纳秒级的,完全取决于我们所要处理的SQL的执行情况;
MYSQL被大量执行在web类应用中,这类应用通常并发量是非常大的,所以在这种情况下,CPU的数据就显得比频率更加重要一些了!
还要考虑使用的版本,最新版本;
就是安装错误的情况下,才会出现这样的情况。32位的操作系统,这意味着我们不能使用大量的内存。MYSQL本身它是一个单线程的服务,我们使用了32位的操作系统,这是对MYSQL性能有一个极大的限制。
-
内存
内存的大小直接影响数据库的性能,目前内存的IO效益远远高于磁盘,比SSD和Fusion-IO也高的多,所以把数据缓存到内存中,进行读取,可以大大提高数据库的性能。
-
常用MYSQL数据引擎
MyISAM会把索引缓存到内存中,数据会通过操作系统,来进行缓存。
InnoDB会同时在内存中缓存数据和索引,从而提高数据库的运行效率.
还有几个提示大家注意,内存虽然是越多越好,但是对性能的影响有限的:
数据库可以利用的内存是有限的,一般当缓存的数据和磁盘中有的数据一样时,是也就是说所有的数据缓存到内存后。再增加缓存内存的大小就是就是没有意义了。举个例子来说,如果我们的数据文件大小是一百G,那时候我们的内存只有64g的情况下,我们可以通过增加服务器的内存,扩大数据库的缓冲区的大小,来获取数据库的提升,如果说我们的数据文件是100G,而我们的内存已经是256G,那如何操作呢?