影响mysql性能的因素

一、服务器硬件。

CPU不够快,内存不够多,磁盘IO太慢。

对于计算密集型的应用,CPU越可能去影响系统的性能,此时,CPU和内存将越成为系统的瓶颈。

当热数据大小远远超过系统可用内存大小时,IO资源可能成为系统的瓶颈。

网络对性能的影响往往发生在数据被大量查询时,特别是当我们用 redis等缓存层时,当缓存大量失效时,救护产生大量的网络传输,从而影响服务器的性能。

解决办法:

升级IO子系统,增加更多的内存。

1、如何选择CPU?

我们究竟是需要更多的CPU还是更快的CPU(频率&数量)?

  • a、我们的应用是否是CPU密集型的,如果是CPU密集型的,那么我们需要的是更好的CPU而不是更多的CPU。因为目前的mysql版本还不支持多CPU对同一SQL的并发处理。
  • b、我们系统的并发量如何?如果要提供系统的并发处理量,那么CPU越多越好。加入我们有32个CPU,那么就可以同时处理32条sql。
  • c、还要看所使用mysql的版本。

QPS:同时处理SQL的数量。

web类应用,核心数量比频率更重要一些。因为这类应用并发量都比较大。

mysql5.0以前的版本对多核CPU的支持不怎么好,mysql5.6/5.7之后的版本对多核CPU的支持有了很大的改善,我们可以选择16核/32核的CPU。所以要使用多核CPU,尽量使用新版的mysql。

注意:

在64位架构的CPU上运行32位的操作系统,特别是云服务器和虚拟主机上。32位的操作系统意味着我们不能使用太大的内存,任何一个单独的进程都不能寻址到4G以上的内存。mysql是一个单进程的服务器,如果使用了32位的操作系统,将对mysql的性能有很大的限制。

3、内存

内存的IO效应要远远高于磁盘,就算和SSD、Fusion-IO这种高速磁盘相比,内存的速率也要高的多。

 MyISAM存储引擎是将索引缓存在内存中,而将数据通过操作系统来缓存。

 

 InnoDB存储引擎会同时在内存中缓存数据和索引

 

提示:

虽然内存是越多越好,但是对内存的影响也是有限的。并不能通过不断的增加内存来无限的增加系统的性能。当磁盘中所有数据都缓存到内存中时,在增加内存就没有意义了。

但是多余的内存可以增加操作系统其它服务的性能。

缓存不仅对读有益处,对写同样有益。虽然不能影响写操作,但是可以让写操作延缓。还可以把多次写入并成一次写入(界面的操作先更新内存,等内存中的某个值达到一定的值后,在一起写入)。

 

 4、如何选择内存?

  • 内存的主频和CPU的主频是类似的,建议选则主板支持的最大内存频率。频率越高内存的读取速度也越快。
  • 每个通道内存尽量选择相同品牌,相同颗粒, 相同电压,相同校验技术和相同型号的内存条。
  • 单条内存条的内存尽量足够大。
  • 根据数据库数据量的大小和数据的增量速度来选择。

虽然内存对系统很重要,而且通过增加内存可以解决系统大部分的IO问题,单不能忽视IO子系统对系统的影响,有时候我们需要以牺牲内存为代价来提供IO子系统的性能。因为我们最终都是要实现数据在磁盘上持久存储。

5、磁盘的配置和选择

磁盘的性能的瓶颈一般体现在延迟吞吐量两个方面。

  • 使用传统机器磁盘。
  • 使用RAID增强传统机器磁盘的性能。
  • 使用固态存储SSD和PCIe卡。
  • 使用网络存储NAS和SAN。

使用传统机器磁盘是最常见且使用最多的一种存储设备。

特点

  • 价格较低
  • 单盘的存储空间较大
  • 读写速度相对较慢。

读取过程

  • 移动磁头到磁盘表面上的正确位置。
  • 等待磁盘旋转,使得所需数据在磁头之下。
  • 等待磁盘旋转过去,所有所需数据都被磁头读出。(取决于主轴转动的速度和数据存储的密度)

如何选择传统机器磁盘

  • 磁盘容量
  • 传输速度(读取过程的第三步)
  • 访问时间(读取过程的一二步)
  • 主轴的转速(常见:7200/10000/15000转/s)
  • 物理尺寸(磁盘的物理尺寸越小,磁头移动的时间也就会较短)

6、使用RAID技术增加传统机器磁盘的性能

什么是RAID?

RAID时磁盘冗余队列的简称(Redundant Arrays Of Independent Disks)

作用

可以把多个容量较小的磁盘组成一组容量更大的磁盘,并提供数据冗余来保证数据完整性的技术。拓展了传统磁盘的存储空间,减少了因为传统磁盘的损坏导致的数据丢失的问题。

RAID0

 

 RAID0一般用在不担心数据丢失的情况,它的性价比最高。

RAID1

 

特点

  • 当其中一块儿磁盘损坏后,系统会忽略已损坏的磁盘。
  • RAID1可以提供很好的读性能,比RAID0的读性能更快,可以用来存储日志。而且可以在不同的磁盘间冗余数据。

 RAID5

 

 Ap,Bp,Cp,Dp分别代表各个区的奇偶检验值,如果磁盘0出现问题,可以通过其它三块儿磁盘上的数据和奇偶校验值来计算出磁盘0的数据,但是如果两块儿磁盘同时出现问题,则无法恢复数据。就每个存储单元的成本而言,这是最经济的一种冗余配置,因为整个阵列值需要一块儿额外的存储空间。

特点

在RAID5上随机写比较慢,因为每次写都需要在底层磁盘上发生2次读和2次写,一计算存储位检验位的数值。但是随机读和顺序读都很快,因为读取时并不需要计算奇偶校验位,因此RAID5比较适合以读为主的数据库业务。

RAID5最大的性能问题发生在磁盘数据大量失效的时候,因为数据需要重新分布到其它磁盘上,就会验证影响磁盘的性能,如果要用RAID5的话,用在从服务器上。

RAD10

最好的一种数据库配置

 

RAID级别的选择

 

 固态存储

也称为闪存(Flash Menory)

特点

  • 相比于机械磁盘,固态磁盘有更好的随机读写性能(对于数据库来说,随机读写性能相当重要)。
  • 能更好的支持并发(能在大并发下提供很好的IO性能)。
  • 固态磁盘比机械磁盘更容易损坏。

SSD(固态硬盘)

特点

  • 使用SATA接口,替换传统磁盘而不需要任何改变。即可以把SSD直接插在服务器或者个人PC的SATA接口上就可以使用。
  • SATA接口的SSD同样支持RAID技术。

PCI-E SSD (PCIE卡)

 Fusion-IO就是一种使用闪存的PCIE卡设备。

特点

  • 无法使用SATA接口,需要PCIE接口,独特的驱动和配置。
  • 价格相对于SSD要贵,但是性能比SSD更好。
  • 多数情况下,Fusion-IO卡还需要使用服务器的内存和CPU资源(即提升服务器的IO性能有时候需要牺牲服务器的内存,用内存换IO性能)。
  • 不用配置RAID,成本是不能接受的。

适用场景

  • 适用于存在大量随机IO的场景。
  • 适用于解决单线程负载的IO瓶颈。

当我们只有一块儿固态磁盘时,我们应该怎么适用?

我们应该把它用在从服务器上,而不是主库上,因为从服务器的复制是单线程的,而主DB的写入时多线程的,为了产生更少的延迟,我们应该增加从服务器的IO性能,而且固态存储有易损耗的特点,在主服务器上使用也不太安全,容易损坏。

 

网络存储SAN和NAS

SAN和NAS是两种外部文件存储设备加载到服务器上的方法。

SAN(Storage Area Network)

 

 

SAN设备通过光纤连接到服务器,设备通过块儿接口访问,服务器可以将其当做硬盘使用。

SAN的顺序读写还比较快,但是随机读写就不如本地RAID磁盘快。

NAS(Network-Attached Storage)

NAS设备使用网络连接,通过基于文件的协议如NFS或SMB来访问(由于使用网络文件传输协议来访问,通常会有一些网上的延时)。

网络存储有随机读写性能不好,故不太适合用来存放数据库文件,但是可以用来存放数据库备份。因为数据库备份一般需要很大的存储空间。

 

网络

网络的性能瓶颈一般体现在延迟带宽上。

对于网络来说,没有什么比带宽带来的影响更大。

 

 

 

 

 

就算是在内网环境下千兆内网,如果是在双十一大促中,前端有50台web服务器,每台有2M的数据传输,也就耗尽了所有的带宽。

网络的质量对性能的影响。

如果网络的质量不好,经常丢包,就会产生大量的重复发送,这也从另一个方面增加了网络的负担。更有甚者,可能产生网络风暴,把网络带宽占满,对整个服务器系统都产生影响。

建议

  • 采用高性能和高带宽的网络接口设备和交换机(核心交换机最好使用万兆的设备)。
  • 对多个网卡进行绑定,增加可用性和带宽。
  • 尽可能的进行网络隔离,特别是内外网的隔离。

总结

CPU

  • 64位的CPU一定要工作在64位的系统下。
  • 对于并发比较高的场景,CPU的数量比频率重要。
  • 对于CPU密集性场景和复杂sql则频率越高越好。

内存

  • 选择主板能使用的最高频率的内存。
  • 内存的大小对性能很重要,所以尽可能大。

I/O子系统

  • PCI-E > SSD > RAID10 > 机械磁盘 > SAN.

 

二、操作系统。

3、数据库存储引擎的选择。

mysql最大的特定就是插件式的存储引擎。

4、数据库参数配置。

某些参数对数据库有决定性影响(该因素比前面三个加起来影响都大)。

5、数据库结构设计和SQL语句。

慢查询是大多数数据库问题的罪魁祸首。

库表结构的设计。

本文为袋鼠学习中的总结,如有转载请注明出处:https://www.cnblogs.com/chrdai/protected/p/11437571.html

posted @ 2019-09-03 23:06  Chrdai  阅读(1832)  评论(0编辑  收藏  举报