1、服务器硬件,(cpu不够块,内存不够多,磁盘IO太慢)
2、服务器操作系统(配置)
3、MySQL的存储引擎(myisam:不支持事务,表及锁。innodb:支持事务,行级锁)
4、数据库参数配置(优化)(影响比前三个大)
5、数据库结构设计和sql优化:慢查询,数据库表结构设计,sql语句编写和优化。
一、CPU选择:频率和线程不可兼得,贵
应用是否是CPU密集型的(加快sql语句的处理速度),是需要更好的CPU而不是更多的CPU
对于目前版本的mysql不支持多CPU对同一sql的处理,只能一个
如果并发量高,就需要多个CPU。
QPS:同时处理SQL的数量
mysql大量应用在web应用。
也要考虑mysql的版本
在64位的服务器上使用32位的服务器版本(小心):32位意味着不能使用大量内存,并且
32位系统任何一个单独的进程不能使用4g以上的内存
二、内存(大小之间影响mysql效率,缓存)
内存高于磁盘IO的效率
myisam会把索引缓存内存,数据通过操作系统来进行缓存OS
innoDB索引和数据都缓存到内存中。
缓存对读有益处,对写也有益处。
例如:商品浏览的数量,并不需要在每一次浏览时都将数据库中增加一个(会增加IO操作),可以先将浏览次数存入
内存中,当达到某个数量后一次性写入磁盘中
内存的主频最好选取服务器支持最高的内存主频
服务器内存选区:组成购买升级,每个通道的内存:相同品牌,颗粒,频率,电压,校验技术和型号
单条容量要尽可能大
根据数据库大小选择内存(数据库现在数据数量为100G,则买大于100G的如128,还要考虑之后数据库
内存的增加,相应买较大内存)
三、磁盘的选择
1传统机器硬盘
2增强传统机器硬盘
3固态存储SSD和PCIe卡
4网络存储NAS和SAN
传统机器硬盘:最常见,使用最多,便宜,内存大,读写慢
如何选择传统机器硬盘:存储容量(影响小),传输速度(顺序读取传输速度不会成为瓶颈),访问时间(随机查找的主要限制因素),主轴转速(越快,读取越快,15000转),物理尺寸
固态磁盘有更好的随机读取性能,比支持更好的并发,固态磁盘容易损坏
SSD固态硬盘:可以直接使用SATA接口(替换传统磁盘不需任何改变),SATA接口的SSD同样支持RAID技术
PCI-E SSD固态存储PCIe卡:无法使用SATA接口,需要独特的驱动和配置。比SSD更贵,性能比SSD性能好
固态存储的使用场景:适合存在大量随机I/O的场景
适用于解决单线程负载的I/O瓶颈(主服务器多线程,从服务器单线程,且固态存储容易损坏,所有放在从服务器上)
四、RAID(磁盘冗余队列)可以把多个容量较小的磁盘组成一组容量更大的磁盘
RAID 0 :是最早出现的RAID模式,多个独自的磁盘串联在一起
RAID1 ,RAID5,RAID10
五,网络存储SAN和NAS