第一、影响mysql性能的几个方面:
1、服务器硬件;
2、服务器系统;
3、数据库存储引擎的选择;
4、数据库参数配置;
5、数据库结构设计和sql语句;
第二、CPU资源和可用内存大小:
2.1、如何选择CPU:
主频:2.5Ghz 核心数量:18核36线程,俩者之间选其一;
2.1.1、当我们的应用CPU密集型时:要想加快sql的执行速度我们要可好的CPU而不是更多的CPU,因为目前版本的nysql不支持多CPU对同一sql并发处理;
2.1.2、要查看系统的并发量:当我们的并发量大的时候,这时候的CPU的数量就比频率要更加的重要点;
2.2.3、还要看我们选择mysql的版本(推荐使用最新的mysql版本);
注意:在64位使用32位的服务器版本:意味着我们不使用大量的内存,任何一个进程存储都不能超过4G以上的内存;
2.2、内存:
在常用的mysql存储引擎中:
2.2.1、MyISAM:会将索引存储在内存,将数据通过OS(操作系统)来存储;
2.2.2、InnDB:同时将索引和数据同时存在内存中;
提示:内存虽然是越多越好,但是对性能影响有限,不能通过增加内存而并不能无限的增加性能;
在选择内存时:选择主板支持的最大内存频率;
第三、磁盘的配置和选择:
3.1、常用的磁盘IO的选择:
3.1.1、使用传统机器硬盘:
是我们最常见的,使用最多的,它的特点是:价格低,单体存储空间大,但是读、写比较慢;
读取数据过程:1、移动磁头到磁盘表面的正确位置;2、等待磁盘旋转,使得所需的数据再磁头之下;3、等待磁盘旋转过去,所有的数据都被磁头读出;
传统硬盘如何选择:1、存储容量;2、传输速度;3、访问时间;4、主轴转速;5、物理尺寸;
3.1.2、使用RAID增强传统机器硬盘的性能:
什么是RAID:其实是磁盘 冗余队列的简称,简单来说它的作用就是可以把多个容量较小的磁盘组成一组容量更大的磁盘,并提供数据冗余来保证数据完整性的技术;
RAID 0:最早出现的raid模式,也称之为数据条带,是组成磁盘陈列中最简单的一种形式,只需要2中以上的硬盘即可,成本低,可以提高整个磁盘的性能和吞吐量。
最大限度的保证系统的可靠性和可修复性。
数据分散到多个磁盘上,这样任何一个盘数据失效,都可以从奇
偶效验块中重建。但是如果俩块磁盘都失效,则整个数据都不能恢复;(比较适合于:读服务器)
RAID 10:RAID 10有称分片镜像,它是对磁盘先做RAID 1 之后对俩组RAID 1 的磁盘在做RAID 0,所以对读写都有良好的性能,相对于RAID 5重建起来更简单,速度
也更快。
RAID 级别的选择:
3.1.3、使用固态存储SSD和PCIe的特点:
3.1.3.1、相比机械磁盘固态磁盘有更好的随机读写性能;
3.1.3.2、相比机械磁盘固态磁盘能更好的支持并发;
3.3.1.3、相比机械磁盘固态磁盘更容易 损坏;
常见的俩种存储设备:
1、SSD(固态硬盘)特点:使用SATA接口,可以替换传统磁盘而不需要任何改变;SATA接口的SSD同样支持RAID技术;
2、固态存储PCIEe卡的特点:无法使用SATA接口,需要独特的驱动和配置;价格比SSD要贵,但是性能好;还要使用服务器的内存和CPU;
固态存储的使用场景:适用于存在大量随机I/ O的场景;使用于解决单线程负载的I/O瓶颈(当有一块固态时:应该放在从服务器上);
3.1.4、使用网络存储NAS和SNA:
NAS和SNA是俩种外部文件存储设备加载到服务器上的方法;
NAS 设备使用网络连接,基于文件的协议如NFS或SMB来访问;
网路存储使用的场景:
网路对性能的影响: 网路带框对性能的影响; 网路质量对性能的影响;
建议:
1、采用高性能和高宽带的网路接口设备和交换机;
2、对多个网卡进行绑定,增强可用性和宽带;
3、尽可能的进行网路隔离。
总结
服务器硬件对性能的影响:主要从CPU、内存、I/O子系统、网络四个方面!
CPU:
1、在64位的CPU一定要工作在64位的系统下;
2、对于并发比较高的场景CPU的数量比频率重要;
3、对于CPU密集性场景和复杂SQL则频率越高越好。
内存:
1、选择主板能使用的最高频率的内存;
2、内存的大小对性能很重要,所以尽可能大。
I/O子系统:
固态的PCIe卡由于接口的优势性能高于固态SSD卡,但是固态SSD卡可以直接使用在传统的磁盘接口上,所以使用起来比较简单,相比于传统的磁盘价格比较高;我们也可以选择由传统磁盘组成的RAID阵列存储(RAID 10);
网络:
网路存储我们可以当做集中存放备份文件的一种方案来使用(使用要谨慎,出现设备上的问题很难快速的恢复)