影响mysql的性能主要方面

在讲影响mysql的性能先简单科普下几个小知识,方便理解后面我讲的内容

并发量:同一时间数据库服务器处理的请求数量 
同时连接量:比’并发量’大的多得多连接数会有上千,很多处于sleep状态,好比nignx有很多请求连接,其中几个是请求数据库处理的,mysql连接数默认为100(max_connections定义的,生成模式可以设置大一些,若连接数满了,会出现500的错误) 
QPS:因特网上,经常用每秒查询率来衡量域名系统服务器的机器的性能,其即为QPS。(每秒钟处理的查询量) 
TPS:每秒系统能够处理的交易或事务的数量。它是衡量系统处理能力的重要指标。TPS是LoadRunner中重要的性能参数指标。 
大表:相对而言的 1)超过千万行 2)表数据文件超过10G 
事务隔离性:有4个级别,隔离性低到高,并发性由高到低。 
1)未提交读,脏读 
2)已提交读 
3)可重复读,innodb默认级别 
4)可串行化,读起每一个行数据都加锁,除非要求严格的数据一致性,并没有并发性高的情况下使用

影响mysql性能的方面

  1. 备份数据:磁盘IO突然增高,性能会下降,会有数据库备份远程同步计划任务,最好不要再主库上数据库备份,大型活动前例如双11促销提前取消这类计划。
  2. sql查询速度:效率低sql,数据库的性能大多数约80%出自‘慢查询’造成的。大多数数据库问题可以通过优化sql来解决
  3. 大量的并发和超高的CPU使用率:导致数据库的连接数会被占满,超高的CPU使用率,因CPU资源耗尽而出现宕机。
  4. 磁盘IO:数据库性能瓶颈之一就是磁盘IO,热数据远远大于服务器使用内存的情况下,磁盘IO性能会突然下降,改进方法使用更快的磁盘设备(ssd,raid卡等硬件)
  5. 网卡流量:网卡IO被占满,千兆网卡(1000Mb/8约等于100MB);解决办法:1)减少从服务器的数量,2)进行分级缓存,3)避免使用 select* 进行查询,没必要查询多余字段浪费没必要的流量,4)分离业务网络和服务器网络。
  6. 大表影响:mysql版本<5.5建立索引会锁表,>=5.5虽然不会锁表但会引起主从延迟,修改表结构需要长时间锁表的,会引起主从延迟
  7. 大事务来的影响:运行时间比较长,操作的数据比较多的事务,例如余额宝收益;锁定太多的数据,造成大量的堵塞和锁超时,执行时间长,容易造成主从延迟;如何处理大事务,1)避免一次处理太多数据,可以分批,例如余额宝可以分用户一批一批处理;2)移除不必要在事务中的select操作,保持必要的写操作
  8. 服务器的硬件:cpu、内存
  9. 操作系统
  10. 数据库存储引擎的选择(插件式存储引擎) 1)MyISAM:不支持事务,表级锁;2)InnoDB:事务级存储引擎,完美支持行锁,事务ACID特征
  11. 数据库参数配置:mysql有上百项参数
  12. 数据库结构设计

购买数据库服务器需要考虑什么

晚点我写一篇这份文档,已经写好,查看下面文章了解 

购买mysql服务器时需要考虑的问题


如何购买mysql服务器

当采购问我们 CPU买快的还是还多的:

当然不考虑成本的话,采用intel xeon e7-8870 v2, 
18核36线程,但成本高达4万,所以我们在选mysql,优先考虑业务需求是否是CPU密集型。 
如果是CPU密集型,处理sql需要快,所以我们需要的是更快的CPU而不是更多的CPU。 
现在目前版本的mysql还不支持多CPU对一条sql并发处理。 
也就是不管多复杂,也只能用到一个cpu核心来处理,多个cpu对提高速度是没有帮助的。如果我们的业务并发量高的,提高吞吐量,则需要多的CPU。

cpu选择32位、还是64位:

这个一般都不用考虑了,64位是当前默认的,尽力不能避免使用32位。

内存选择:

CPU支持的最高内存频率。

磁盘的配置和选择:

使用传统机械硬盘 
1、存储空间大 
2、价格低 
3、读写较慢 
4、最常见 
传统机械硬盘读取数据的过程 
1、移动磁头到磁盘表面上的正确位置 
2、等待磁盘旋转、使用所需要的数据在磁头之下 
3、等待磁盘旋转过去,所有所需要的数据都被磁头读出

使用RAID增强传统机械硬盘的性能 
RAID是磁盘冗余队列的简称 
简单的来说RAID的作用就是把多个容量较小的磁盘组成一组容量更大的磁盘,并提供数据冗余来保证数据完整性的技术。减少了传统磁盘损坏导致数据丢失的可能性。RAID可设置级别,RAID可以让多个磁盘同时读写数据,大福提高吞吐量。

说一说在数据库中常用的RAID级别

RAID0:最早出现的RAID模式,也称为数据条带,两块硬盘即可,成本低,提高磁盘的性能和吞吐量。RAID0是没有提供冗余或修复能力,但实现成本最低,其中一块硬盘损坏,就会导致数据丢失,主要用在不用担心数据丢失的情况,例如随时从其他数据库备份克隆备库。

RAID1:又称磁盘镜像,原理是把一个磁盘的数据镜像到另外一个磁盘上,也就是说数据写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,在不影响性能的情况下最大限度的保证系统的可靠性和修复性。 
成本会高。提供很好的读性能,比RAID0快一些,所以例如:存放日志类似。

常用的RAID5:称为分布式奇偶校验磁盘陈列,通过分布式奇偶校验块把数据分散到多个磁盘上,这样如果任何一个盘数据失效,都可以从奇偶校验块中重建。但是如果两块磁盘都失效,则整个卷都无法恢复。在RAID5写会比较慢,每次写都会在底层磁盘上发生两次读和两次写校验,但随即读和顺序读很快,因为读取不用校验奇偶,若一个盘失效会严重影响性能,需要及时跟换同步。适合以读的业务场景,最好使用在从服务器上 
常用的RAID10:称为分片的镜像,先对磁盘先做RAID1之后再对两组RAID1的磁盘再坐RAID0,所以读写都有良好的性能,相对于RAID5重新起来更加简单,速度也更快。

RAID级别选择 
随机读写:随机读写是按你给的地点读写,(用 fseek 等函数找地点),可以在文件的任何地方–开始处,文件尾,文件中部,前前后后地读写。顺序读写 是从文件开始处依次读,从文件尾开始依次写。

使用固态存储SSD和PCIE卡 
SSD也称为闪存,相比机械磁盘固态磁盘有更好的‘随机’读写性能。支持SATA接口,可以替换传统磁盘而不需要任何改变。注意如果SATA3.0的SSD插到SATA2.0接口上速度会受到影响。 
SATA接口的SSD支持RAID技术。 
相比机械磁盘固态磁盘能更好的支持并发。 
固态磁盘容易损坏 
适合: 
1、存在大量随机I/O的场景。 
2、使用解决单线程负载I/O瓶颈。 
3、适合用在从服务器上,因为从服务器一般是单线程写入,而主服务器一般为多线程写入。

PCIE卡:也就是Fusion-IO卡,不能直接使用SATA接口,需要独特的渠道和配置,价格相对SSD要贵,但性能比SSD更好。PCIE还会使用到CPU和内存。支持RAID比较少,不建议在PCIE上使用RAID。

使用网络存储NAS和SAN 
SAN:存取区域网络,通过光纤连接到服务器的,服务器再通过光纤接口访问SAN,适合在大量顺序读写,随机读写会慢一些。

NAS:网络附加储存,通过网络连接,通过基于文件的协议如NFS或SMB来访问。 
网络存储适合的场景:数据库备份

网络对性能也会有相应的影响,假如前端服务器有50台,同时访问一台数据库,可能会造成带宽被占满。 
建议: 
1、采用高性能和高带宽的网络接口设备和交换机 
2、对多个网卡进行绑定,增强可用性和带宽 
3、尽可能的进行网络隔离。


出处:https://blog.csdn.net/zhang5207892/article/details/79001372

猜你喜欢

转载自blog.csdn.net/jackliu16/article/details/80727322
今日推荐