欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

mysql学习记录(二十一)--调整linuxI/O以提高mysql运行效率_MySQL

程序员文章站 2022-04-28 11:16:02
...
一、概念:
1.使用磁盘阵列
RAID译成中文为“廉价磁盘冗余阵列”。简称“磁盘阵列”
2.常见raid级别:
a.raid 0:条带化,将数据依次分布
b.raid 1:磁盘镜像,两个磁盘一组,写入时两个一起写入,读时从任意一个磁盘读
c.raid 10:先做磁盘镜像又做条带化,既有raid 1的可靠性和raid 0的优良并发性能
d.raid 4:像raid 0一样对磁盘组条带化,另需要加一个磁盘用来写各Stripe的校验纠错数据
e.raid 5:将每一个条带的校验纠错数据块也分别写到各个磁盘,各不是写到一个特定的磁盘
3.选择raid级别:
a.读写频繁,可靠性要求高,raid 10
b.读频繁而写较少,对可靠性有一定要求,raid 5
c.读写频繁,可靠性要求不高,rand 0
4.虚拟文件卷或软raid
a.linux下的逻辑卷系统lvm2,支持条带化
b.linux下的md驱动,支持raid 0,raid 1,raid 4,raid 5,raid 6
5.使用symbolic links分布I/O
a.可以利用操作系统的符号连接将不同的数据库、表或索引指向不同的物理磁盘,从而达到分布磁盘I/O的目的
b.将一个数据库指向其他物理磁盘
c.将MyISAM(其他存储引擎的表不支持)表的数据文件或索引文件指向其他物理磁盘
1)对于新建的表可以在create table中增加data directory和index directory
2)对于已有的表可以将数据文件或索引文件转移到目标磁盘,但表定义文件必须位于mysql数据文件目录下,不能用符号连接
6.禁止操作系统更新文件的atime属性
7.调整I/O调度算法:
a.NOOP算法:不对I/O请求排序,更适合随机设备。
b.最后期限算法:当系统存在大量顺序请求的时候,Deadline可能导致请求无法被很好的排序,引发频繁寻道。
c.预期算法:基于预测的I/O算法,适合写入较多的环境,不适合Mysql等随机读取较多的数据库环境
d.完全公平队列:将I/O请求按照进程分别放入进程对应的队列中。CFQ以时间片算法为前提,轮转调动队列
8.RAID卡电池充放电问题:
a.raid卡电池会自动充放电
9.RAID卡缓存策略:
10.RAID卡电池充放电带来的I/O性能波动
a.根据raid卡电池下次充放电的时间,定期在业务量较低的时候,提前进行充放电。
b.设置Forced WriteBack写策略,此时一定要有UPS之类的后备电源
11.NUMA架构优化:
a.多处理器结婚(SMP):对此进行扩展的方法有增加内存、使用更快的CPU、增加CPU、扩充I/O、增加更多的磁盘
b.SMP架构导致在扩展能力上被限制,NUMA架构出现了。NUMA把一台计算机分成多个节点,每个节点内部拥有多个CPU,节点内部使用共有的内存控制器,节点之间是通过互联模块进行连接和信息交互
c.NUMA的内存分配策略有以下4种:
1)缺省:总是在本地节点分配
2)绑定:强制分配到指定节点上
3)交叉:在所有节点或者指定节点上交叉分配内存
4)优先:在指定节点上分配,失败则在其他节点上分配
d.若单机只运行一个mysql实例,可以选择关闭NUMA
1)在BIOS中设置关闭
2)在/etc/grub.conf的kernel行追加numa = off
二、实践:
abc@ubuntu:~$ dmesg | grep -i scheduler
[ 1.124750] io scheduler noop registered
[ 1.124754] io scheduler deadline registered (default)
[ 1.124837] io scheduler cfq registered
abc@ubuntu:~$ more /sys/block/sda/queue/scheduler

noop [deadline] cfq

备注:由于各种原因,其他本节相关实验等过段时间再做。

相关标签: 效率