MySQL 学习篇(二)MYSQL性能影响基础扩展篇3--网络存储(SAN和NAS)

  1. 1 SAN和NAS的定义

----------------------------------------------------------------------------------------

  1. SAN和NAS的区别

 

 

而SAN设备可以承受大量的顺序读写操作,因为这些读I/O可以缓冲,并且进行I/O合并,但是在随机读写上的就要慢一些,甚至不如直接通过RAID访问本地磁盘那种读写效率,如下图:

----------------------------------------------------------------------------------------

1.3 NAS

由于是通过网络使用文件传输协议来进行访问,通常会有网络传输的延迟!

----------------------------------------------------------------------------------------

  • 网络存储使用场景

(一)前言:

通过上面我们对网络存储简单的介绍,大家可以看出网络存储对顺序I/O上的性能还是不错的,但是在随机I/O的性能就差强人意了,而数据库这种应用的性能瓶颈往往出现在随机I/O上,可以从这一点上来看,网络存储并不适合MYSQL数据库存放数据文件;

而另一方面呢,有一些人认为可以使用网络存储来实现数据库的高可用性,比如可以有两台服务器挂在同一网络存储设备上的磁盘,而当主服务器出现宕机,可以由主备服务器接管来接管磁盘,来继续提供这种数据服务,就有一点像那种Oracle的一种实现方式,但是现实情况是这种配置的,虽然可以在一定的情况下实现高可用,但是却是以牺牲性能为代价的,而且一段网络存储设备本身出现问题,需要工作时间来进行恢复。因为在大多数情况下呢,我们这网络存储设备都是不够熟悉的,正常情况下的一切都是良好的,一旦出现问题,就相关厂商协助解决,这样会产生大量的维护时间。

所以呢网络存储对于数据库最适合做的就是数据库备份。

存放数据库备份文件,备份文件的统一存放的往往是需要大量一种空间的,而且把备份文件放在网络存储设备上,也可以进一步的保证数据的安全性,一旦某一台独立的数据库服务器出现了故障,在我们短时间内无法恢复的情况下呢,就可以利用网通设备上的文件,来简单的恢复数据库,来建立一个新的数据库实例,这里呢,我们已经对数据库服务器常用的一些存储设备,以及各自的一些特点,或者是以及如何根据业务、类型,来选择什么样的设备进行了一个介绍。

下面我们来看一下,可能会影响数据库性能的另一个关键的硬件设备,也就是网络的接口设备对我们数据库性能的影响:

----------------------------------------------------------------------------------------

  1. 前面说过了,对于磁盘的性能限制主要出现在延迟和吞吐量两个方面;
  2. 对于网络的性能,也主要体现在延迟和吞吐量这两个方面,吞吐拉ing称之为带宽:

----------------------------------------------------------------------------------------

我们来说一说网络带宽对性能的影响,对于网络来说,没有什么比带宽给我们带来的影响更直接了:

如果我们使用512k的网络,和使用10M的网络,在网上看电影,那给我们带来的体验绝对是不一样的。我们在使用512k的网络看电影的时候呢,可能几乎是无法看下去,总是要进行缓存。

----------------------------------------------------------------------------------------

其实服务器呢也是一样的,web服务器和数据库服务器之间,是通过网络来进行连接的,而如果网络带宽不足时,总是会出现各种由于网络而产生的堵塞:

----------------------------------------------------------------------------------------

如果我们web有50台服务器,同时向数据库请求,或许两兆的数据,那么这个千兆网络几乎 就会被满载了,要注意移动网络带宽的问题:

----------------------------------------------------------------------------------------

  • 网络对性能的影响

  1. 网络带宽
  2. 网络的质量【如果一个网络质量不好,经常丢包,这样就会产生大量的网络包的重复发送,这也从另一个方面增加了网络的负担,而且这种情况一旦发生,就会越来越难以控制,从而形成网络风暴,从而对整个网络环境下的服务器都会产生影响,demo:那次事故是由于一款监控软件造成的使用这款监控软件的,用于监控网络设备,它发送了一些监测包,由于网络质量不太好,还没有收到网上的反馈,会频繁的去发送这个探测包,最终形成了一种网络风暴,把整个带宽占满了,整个儿的网络服务都陷入瘫痪。

为了避免这个网络对性能的影响呢,这里对于网络配置,也给大家提几个意见,大家参考:

  1. 采用高性能的一种网络接口设备和交换机【尽可能的使用性能更好的带宽更大的网络设备,特别是核心交换机,最好是使用万兆的设备,】
  2. 对多个网卡进行绑定,增强可用性和带宽【目前的服务器通常都是具有多个网络接口的,我们可以对多个网卡接口进行绑定,绑定后可以在系统中可以把多个网卡弄一个网卡来使用,这不仅可以增加网卡各种带宽,更重要的是可以增加网卡的冗余,当一个网卡出现问题的时候,不至于影响整个服务器的正常使用】
  3. 尽可能的进行网络的隔离【特别是对内外网进行隔离,通常不建议你把数据库直接暴露在外网环境下,因为这样很不安全,企业的这种网络和管理的网络也可以进行相互隔离,可以使业务和管理不至于相互影响,也会增加服务器的稳定性】

----------------------------------------------------------------------------------------

  • 总结

  • 服务硬件对性能的影响

  • CPU

问:mysql的数据库是核数重要还是频率重要?

答:对于并发比较高的场景,CPU的数量比频率重要,而对于CPU密集型场景和复杂SQL的这种运算,频率呢又比核数要要,就便频率越高越好;

问:如果并发现高运行的SQL又很复杂,那怎么做呢?

答:这时候就需要我们在成本和性能之间做一个平衡,比较贵罢了。

  • 内存
  1. 选择主板所能使用的最高频率的内存,内存的频率越高,性能也就越好,吞吐量达越大;
  2. 是内存大小对性能,有很重要的影响,足够的内存可以把大量的随即I/O又变成顺序I/O,并对读写数据的进行缓存,把多次写合并成一次写,所以内存总是越多越好。
  • I/O子系统

前言:

足够的内存,虽然可以尽量的减少,随机I/O来增加服务器的这种性能,但并不能避免随机I/O的发生,数据库服务器一旦遇到随机I/O的读写,就会对性能产生很大的影响,造成性能下降;

一个高性能的iO子系统也是十分重要的,对于iO子系统性能来说呢,使用固态存储的这种PCI-e卡,由于接口的性能优势呢,随机I/O性能高于同样使用固态存储的SSD硬盘,但是能SSD硬盘又可以直接使用在我们传统的一种磁盘接口上,所以使用起来会更加简单;

但是固态存储的成本相对于传统的磁盘来说还是比较高的,所以出于成本的考虑呢,我们也可以选择由多个传统磁盘所处的那种RAID 阵列来进行存储,如果要使用RAID,建议大家在数据库服务器上使用的RAID 10这个级别,而对于网络存储呢,在数据库服务器上呢,我们可以把它当作,集中存放备份文件的一种方案来使用,另外请大家使用网络存储作为高可用的方案时一定要谨慎,因为网络的复杂程度,一旦出现设备上的问题,很难快速进行解决。

猜你喜欢

转载自blog.csdn.net/Sicily_winner/article/details/87597874