什么影响了MySQL性能

发布时间:2020-08-01 21:22:30 作者:ZeroOne01
来源:网络 阅读:3652

影响性能的一些常见因素

  1. 服务器硬件
  2. 服务器系统
  3. 数据库存储引擎
    • MyISAM:可以很好的利用内存,但不支持事务,表级锁
    • InnoDB:事务级存储引擎,完美支持行级锁以及事务ACID特性
  4. 数据库参数配置
  5. 数据库表结构设计和SQL语句执行效率
  6. 数据库的版本

CPU资源和可用内存大小

在服务器硬件中,最容易影响数据库性能的是CPU资源和可用内存大小以及I/O。

选择CPU时需要考虑的点:

内存:


传统的机械磁盘

使用传统机器磁盘。机械硬盘读取数据的过程:

  1. 移动磁头到磁盘表面上的正确位置
  2. 等待磁盘旋转,使得所需的数据在磁头之下
  3. 等待磁盘旋转过去,所有所需的数据都被磁头读出

注:第一步+第二部=磁盘的访问时间。第三步消耗的时间=磁盘的传输速度

所以选择机械硬盘主要参考以下几个点:

  1. 存储容量
  2. 传输速度
  3. 访问时间
  4. 主轴转速
  5. 物理尺寸

使用RAID增强传统机器磁盘的性能

RAID:

常用的RAID模式 - RAID 0:

RAID 0是最早出现的RAID模式,也称之为数据条带。是组建磁盘阵列中最简单的一种形式,只需要2块以上的硬盘即可,成本低,可以提高整个磁盘的性能和吞吐量。 RAID 0没有提供冗余或错误修复能力,但是实现成本是最低的

RAID 0 模式结构图:
什么影响了MySQL性能

常用的RAID模式 - RAID 1:

RAID 1又称磁盘镜像,原理是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时会在另一块闲置的磁盘上生成镜像文件,在不影响性能情况下最大限度的保证系统的可靠性和可修复性。

RAID 1 模式结构图:
什么影响了MySQL性能

常用的RAID模式 - RAID 5:

RAID 5又称之为分布式奇偶校验磁盘阵列通过分布式奇偶校验块把数据分散到多个磁盘.上这样如果任何一个盘数据失效,都可以从奇偶校验块中重建。但是如果两块磁盘失效,则整个卷的数据都无法恢复。

RAID 5 模式结构图:
什么影响了MySQL性能

常用的RAID模式 - RAID 10,适合数据库的模式:

RAID 10又称分片的镜像它是对磁盘先做RAID 1之后对两组RAID 1的磁盘再做RAID 0 ,所以对读写都有良好的性能,相对于RAID 5重建起来更简单,速度也更快。

RAID 10 模式结构图:
什么影响了MySQL性能

RAID级别的选择,可以参考下表:
什么影响了MySQL性能


使用固态存储SSD和PCIe卡

相比机械磁盘固态磁盘有更好的随机读写性能,相比机械磁盘固态磁盘有更好的并发支持,相比机械磁盘固态磁盘更容易损坏

固态磁盘的特点:

PCIe卡的特点:

固态磁盘的使用场景:


使用网络存储NAS和SAN

SAN(Storage Area Network)和NAS(Network-Attached Storage)是两种外部文件存储设备加载到服务器上的方法

SAN设备通过光纤链接到服务器,设备通过块接口访问,服务器可以将其当做硬盘使用:
什么影响了MySQL性能

SAN的优缺点:

NAS设备使用网络链接,通过基于文件的协议如NFS或SMB来访问。

网络存储适合的场景:

网络对性能的影响:


总结:服务器硬件对性能的影响

CPU:

内存:

I/O子系统:


操作系统对性能的影响-MySQL适合的操作系统

MySQL在不同操作系统需要注意的事项:


CentOS系统参数优化

内核相关参数(/etc/sysctl.conf):

参考:

Linux系统内存交换分区:

在MySQL服务器上是否要使用交换分区有一些争议:


增加资源限制(/etc/security/limit.conf),这个文件实际上是Linux PAM也就是插入式认证模块的配置文件。通过我们会在文件末尾加入以下参数来控制打开文件数的限制:

说明:

由于系统默认的可打开文件句柄的数量是比较小的,所以一般我们都会将MySQL服务所在的操作系统的可打开的文件数量增加到65535个以保证可以打开足够多的文件句柄。需要注意的是,这个文件的修改需要重启系统才生效。


磁盘调度策略(/sys/block/vda/queue/scheduler):

除了默认的cfq策略外还可以选择以下几种策略:

  1. noop(电梯式调度策略):

    NOOP实现了一个FIFO队列,它像电梯的工作方式一样对I/O请求进行组织,当有一个新的请求到来时,它将请求合并到最近的请求之后,以此来保证请求同一个介质。NOOP倾向于饿死读而利于写,因此NOOP对于闪存设备,RAM以及嵌入式是最好的选择。

  2. deadline(介质时间调度策略):

    Deadline确保了在一个截至时间内服务请求,这个截至时间是可调整的,而默认读期限短于写期限。这样就防止了写操作因为不能被读取而饿死的现象。Deadline对数据库类应用是最好的选择。

  3. anticipatory(预料I/O调度策略):

    本质上与Deadline一样,但在最后一次读操作后,要等待6ms,才能继续进行对其他I/O请求进行调度。它会在每个6ms中插入新的I/O操作,而会将一些小写入流合并成一个大写入流,用写入延时换取最大的写入吞吐量。AS适合于写入较多的环境,比如文件服务器,AS对数据库环境表现很差。

修改磁盘调度策略的命令,例如我将策略改为deadline:

echo deadline > /sys/block/vda/queue/scheduler

文件系统对性能的影响

服务器所使用的文件系统对服务器的I/O性能是有一定影响的,而文件系统的选择十分依赖于操作系统,例如Windows下就只有FAT和NTFS可供选择:
什么影响了MySQL性能

Linux下则有EXT3、EXT4、XFS,这三种文件系统都是具有日志功能的,这一点对于数据的安全性十分重要。其中XFS性能要比EXT3和EXT4高:
什么影响了MySQL性能

如果使用EXT3和EXT4的话,有几个挂载参数可以了解一下。EXT3/4文件系统的挂载参数可以在/etc/fstab 文件中配置:

然后我们再来看看另外两个重要的参数,在介绍这两个参数之前,我们需要了解默认情况下Linux操作系统会把文件访问的时间atime做一个记录,文件系统在文件被访问、创建、修改等的时候记录下了文件的一些时间戳。比如:文件创建时间、最近一次修改时间和最近一次访问时间;这在绝大部分的场合都是没有必要的。因为系统运行的时候要访问大量文件,如果能减少一些动作(比如减少时间戳的记录次数等)将会显著提高磁盘 IO 的效率、提升文件系统的性能。如果遇到机器IO负载高或是CPU WAIT高的情况时,可以尝试使用noatime和nodiratime禁止记录最近一次访问时间戳。

所以 noatime 和 nodiratime,是用于禁止记录文件的访问时间和读取目录的时间的,禁用了这两个时间的选项后,可以减少一些,写的操作。系统在读取文件和目录时候,不必写操作来记录以上两个时间。

推荐阅读:
  1. 如何优化MySQL插入性能
  2. MySQL 性能医生:OrzDBA

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql 性能 服务器

上一篇:Lambda基础语法

下一篇:开发时间缩短90% Amaze UI助H5梦工场响应式网站

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》