下面的部分内容来自《深入浅出MySQL》、老叶的视频、网上其他人的blog。
这里列出的是MySQL的一些非运行参数的优化部分,具体如下:
(对于使用云主机的用户,下文中的部分优化方法是无法奏效的)
0、使用SSD。资金不足的话,使用RAID设备 【建议使用RAID10,因为RAID5的性能并不太高】
可以SSD+SAS混合使用。SSD存放数据文件。mysql的日志文件还是存在普通机械磁盘上,因为这些日志本来就是顺序IO的,存在SSD上浪费磁盘。
1、RAID卡设置
关闭读cache:RAID卡上的cache容量有限,我们选择direct方式读取数据,从而忽略读cache。
关闭预读:RAID卡的预读功能对于随机IO几乎没有任何提升,所以将预读功能关闭。
关闭磁盘cache:一般情况下,如果使用RAID,系统会默认关闭磁盘的cache,也可以用命令强制关闭。
以上设置都可以通过RAID卡的命令行来完成,比如LSI芯片的RAID卡使用megacli命令。
2、禁止操作系统更新文件的atime属性
# vim /etc/fstab,将mysql数据文件存放的分区加上noatime挂载属性即可,类似如下:
UUID=ccbb4c85-32ff-4b8d-ae58-f39569b67d96 /data ext4 defaults,noatime 1 2
# mount -o remount,noatime /data
# 查看设备UUID的命令: blkid /dev/sdb1
3、使用裸设备存放InnoDB的共享表空间 (目前很少这么用了,直接用SSD)
vim my.cnf如下:
[mysqld]
innodb_data_home_dir=
innodb_data_file_path=/dev/hdd1:3Gnewraw;/dev/hdd2:2Gnewraw
然后启动MySQL服务,让其自动完成分区的初始化,然后关闭MySQL。此时还不能创建或修改InnoDB表。
将my.cnf的文件继续修改下:
[mysqld]
innodb_data_home_dir=
innodb_data_file_path=/dev/hdd1:3Graw;/dev/hdd2:2Graw
然后重启MySQL服务,即可使用。