博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql 开发进阶篇系列 22 磁盘I/O问题(从linux操作系统上优化)
阅读量:5992 次
发布时间:2019-06-20

本文共 1198 字,大约阅读时间需要 3 分钟。

1. 使用Symbolic Links分布I/O

         mysql的数据库名和表名是与文件系统的目录名和文件名对应的,默认情况下,创建的数据库和表都存放在参数datadir定义的目录下。如果不使用RAID或逻辑卷,所有的表都放在一个磁盘设置上,无法发挥多磁盘并行读写的优势。这种情况,我们可以利用操作系统的符号连接(Symbolic Links)将不同的数据库或表,索引指向不同的物理磁盘,从而达到分布磁盘I/O的目的。

-- 查看文件路径SHOW GLOBAL VARIABLES LIKE "%datadir%";

  

-- 查看mysql下文件目录[root@xuegod64 ~]# cd /var/lib/mysql

  

  (1) 将一个数据库指向其他物理磁盘

           其方法是先在目标磁盘上创建目录,然后再创建从mysql数据目录到目标目录的符号连接:使用mkdir 创建目录

    
    然后再创建从mysql数据目录到目标目录的符号连接
    

  (2) 将myisam (其它存储引擎的表不支持) 表的数据文件或索引文件指向其他物理磁盘。

                   对于新建的表,可以通过在create table语句中增加 data directory 和index directory选项来完成例如 :

    
  对于已有的表,可以先将其数据文件(.MYD)或索引文件(.MYI)转移到目标磁盘,然后再建立符号连接即可,需要说明的是表定义文件(.frm)必须位于mysql数据文件目录下,不能用符号连接。

2. 禁止操作系统更新文件的atime属性

  atime是linux/unix系统下的一个文件属性,每当读取文件时,操作系统都会将读操作发生的时间回写到磁盘上。 对于读写频繁的数据库文件来说,记录文件的访问时间一般没有任何用处,去会增加磁盘系统的负担,影响I/O的性能。通过设置文件系统的mount属性,阻止操作系统写atime信息。具体做法是修改文件系统配置文件/etc/fstab,指定noatime选项。

  
  

3. 用裸设备(Raw Device)存放innodb的共享表空间

         在innodb缓存充足的情况下,可以考虑使用Raw Device来存放Innodb共享表空间。如果将其表和索引存储在裸设备(Raw Device)上,从而绕过了文件系统的高速缓存和缓冲器而直接访问磁盘,那么将大大降低Linux文件系统的负担,使系统性能获得显著改善。需要设置 innodb_data_file_path。

  转载:
  总结:本章从操作系统的角度介绍了如何对mysql数据库进行优化,主要是讨论i/o的优化问题,文件系统分布的优化问题。由于涉及到操作系统,待以后在去深入。

转载于:https://www.cnblogs.com/MrHSR/p/9483121.html

你可能感兴趣的文章
步步为营UML建模系列五、时序图(Squence diagram)
查看>>
【转】iOS平台安装包介绍
查看>>
GIS工具-shp浏览器
查看>>
.NET Core微服务之基于Steeltoe使用Hystrix熔断保护与监控
查看>>
软件调试的艺术(Linux Unix平台软件调试权威著作)
查看>>
知道力——彻底超越执行力的25条职场新思维
查看>>
转---一个提高渲染效率的小技巧
查看>>
Entity Framework 4.1正式版发布,徐汇区网站设计
查看>>
【JOURNAL】天井组诗之七 - 来生
查看>>
strtok()和strtok_r()
查看>>
关于override,new 那点事
查看>>
awk用法小结
查看>>
C++运算符重载
查看>>
论文笔记之:Playing Atari with Deep Reinforcement Learning
查看>>
iBeacon
查看>>
多线程编程之四——线程的同步
查看>>
存储过程,触发器,游标
查看>>
php.ini中allow_call_time_pass_reference参数的意思
查看>>
object references an unsaved transient instance - save the transient instance before flushing
查看>>
iPhone控件之UIWebView2
查看>>