【IT老齐050】MySQL服务器选择
【IT老齐050】MySQL服务器选择
CPU
MySQL5.6以后版本对多核CPU进行优化
不支持多CPU对同一SQL并发处理
- 64位的CPU一定要工作在64位的系统下
- 对于并发比较高的场景CPU的数量比频率重要
- 对于CPU密集性场景和复杂SQL则频率越高越好
内存
- 理想的选择是服务器内存大于数据总量
- 内存频率越高处理速度越快
- 内存总量小要合理组织热点数据,保证内存覆盖
- 内存对写操作也有重要的性能影响
硬盘
RAID
RAID是磁盘元余队列的简称(Redundant Arrays of Independent Disks),简单来说RAID的作用就是可以把多个容量较小的磁盘,组成一组容量更大的磁盘,并提供数据冗余来保证数据完整性的技术
RAID0
RAID 0是最早出现的RAID模式,也称之为数据条带。是组建磁盘阵列中最简单的一种形式,只需要2块以上的硬盘即可,成本低,可以提高整个磁盘的性能和吞吐量。RAID 0没有提供余或错误修复能力,但是实现成本是最低的
RAID1
RAID 1又称磁盘镜像,原理是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时会在另一块闲置的磁盘上生成镜像文件,在不影响性能情况下最大限度的保证系统的可靠性和可修复性
RAID 5
RAID 5又称之为分布式奇校验磁盘阵列。通过分布式奇偶校验块把数据分散到多个磁盘上这样如果任何一个盘数据失效,都可以从奇偶校验块中重建。但是如果两块磁盘失效,则整个卷的数据都无法恢复。
RAID 10
RAID 10 又称分片的镜像,它是对磁盘先做RAID 1之后对两组RAID 1的磁盘再做RAID 0,所以对读写都有良好的性能。相对于RAID 5重建起来更简单,速度也更快
选择
等级 | 特点 | 是否冗余 | 盘数 | 读 | 写 |
---|---|---|---|---|---|
RAID0 | 便宜,快速,危险 | 否 | N | 快 | 快 |
RAID1 | 高速读,简单,安全 | 有 | 2 | 快 | 慢 |
RAID5 | 安全,成本折中 | 有 | N+1 | 快 | 取决于最慢的盘 |
RAID10 | 贵,高速,安全 | 有 | 2N | 快 | 快 |
方案
- 8C16T的基础上,永远主频优先,最终上什么看预算。一般企业高并发场景太少了,哪有那么多爆款应用,尤其是内部系统,不要听甲方吹牛逼说我们有几万几万员工同时用的场景,不存在,最后性能问题永远是EOD日终跑批。
- 内存和CPU核数成比例关系。照着core的2~4倍给就行了,比如8C16T的U可以给到32~64G之间。理解是内存只要够装索引就可以了,有些极限响应场景可以直接用mysql memory engine做缓存表,由守护进程维护,那样可以配大点。个人也没试过内存大于硬盘的配置,然后盲给海量innodb buffer效果如何。
- 内存容量永远大于频率。数据库在一般场景下对内存频率不敏感,差不多就行了,如果2400/2666/2997价差不大,那肯定用快的。如果采购价差大,尽可能追求容量。
- 硬盘无脑SSD RAID1,90%的场景都是最优解。机械硬盘给数据库用实在太容易出瓶颈了。RAID0在企业市场没遇到过,RAID5重构慢,维护麻烦,冗余保护不如1好