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数据库的InnoDB引擎配置裸设备(Raw Device)

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

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

mysql 开发进阶篇系列 22 磁盘I/O问题(从linux操作系统上优化)相关推荐

  1. mysql 开发进阶篇系列 10 锁问题 (使用“索引或间隙锁”的锁冲突)

    1.使用"相同索引键值"的冲突 由于mysql 的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但如果是使用相同的索引键,是会出现锁冲突的.设计时要注意 例 ...

  2. mysql 开发进阶篇系列 41 mysql日志之慢查询日志

    一.概述 慢查询日志记录了所有的超过sql语句( 超时参数long_query_time单位 秒),获得表锁定的时间不算作执行时间.慢日志默认写入到参数datadir(数据目录)指定的路径下.默认文件 ...

  3. mysql 开发进阶篇系列 32 工具篇(mysqladmin工具)

    一.概述 mysqladmin是一个执行管理操作的客户端程序.用来检要服务的配置和当前的状态,创建并删除数据库等.功能与mysql客户端类似,主要区别在于它更侧重于一些管理方面的功能. 1. 查找my ...

  4. mysql 开发进阶篇系列 34 工具篇 mysqlcheck(MyISAM表维护工具)

    一.概述 mysqlcheck客户端工具可以检查和修复MyISAM表,还可以优化和分析表.实际上,它集成了mysql工具中check,repair,analyze,optimize功能,对于check ...

  5. mysql 开发进阶篇系列 23 应用层优化与查询缓存

    一.概述 前面章节介绍了很多数据库的优化措施,但在实际生产环境中,由于数据库服务器本身的性能局限,就必须要对前台的应用来进行优化,使得前台访问数据库的压力能够减到最小. 1. 使用连接池 对于访问数据 ...

  6. mysql 开发进阶篇系列 7 锁问题(innodb锁争用情况及锁模式)

    1 .获取innodb行锁争用情况 1.1 通过检查innodb_row_lock状态变量来分析系统上的行锁的争夺情况 SHOW STATUS LIKE 'innodb_row_lock%' 通过in ...

  7. mysql如果索引为uid间隙锁_mysql 开发进阶篇系列 10 锁问题 (使用“索引或间隙锁”的锁冲突)...

    1.使用"相同索引键值"的冲突 由于mysql 的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但如果是使用相同的索引键,是会出现锁冲突的.设计时要注意 例 ...

  8. mysql key buffer_mysql 开发进阶篇系列 16 MySQL Server(myisam key_buffer)

    一.概述 mysql 提供了很多参数来进行服务器的设置,当服务第一次启动的时候,所有启动参数值都是系统默认的.这些参数在很多生产环境下并不能满足实际的应用需求.在这个系列中涉及到了linux 服务器, ...

  9. mysql第三方工具binlog_mysql 开发进阶篇系列 33 工具篇(mysqlbinlog日志管理工具)

    一.概述 由于服务器生成的二进制日志文件以二进制格式保存,所以如果要想检查这些文件的文本格式,就会用到mysqlbinlog日志管理工具. mysqlbinlog的语法如下: mysqlbinlog ...

最新文章

  1. automapper java 有什么_对象映射工具AutoMapper介绍
  2. 5.4 异步TCP编程(一)
  3. 解决selenium用cookies时候报错selenium.common.exceptions.InvalidArgumentException: Message: invalid argument
  4. 王艳 201771010127《面向对象程序设计(java)》第十七周学习总结
  5. 解决HttpServletResponse输出中文乱码问题
  6. 用fgets替代gets
  7. linux介绍及目录结构(一)
  8. c++:opencv的安装和配置
  9. Math.abs为Integer.Min_VALUE返回错误的值
  10. 小度智能音箱维修点_小度智能音箱APP下载
  11. java try catch陷阱_Java异常处理最佳实践及陷阱防范
  12. python作用域的顺序_“Python”函数的参数和范围,及其,作用域
  13. 编程语言之问:何时该借用,何时该创造?
  14. 在inDesign软件中如何覆盖母版页项目?
  15. 181228每日一句
  16. tracepro杂散光分析例子_第二期青年矿床学家网络论坛(刘琰碳酸岩杂岩体型稀土矿;王小林CO2成矿效应)...
  17. 苹果系统这么没有关闭订阅服务器,iPhone 上没有取消订阅的选项怎么办?
  18. win11 某个任务栏图标显示空白解决方法
  19. bzoj3238 [ AHOI2013 ] --后缀自动机
  20. D2 归来, 特此YC一篇

热门文章

  1. oracle 日期加3个月,三个日期函数(十分有用)!!!!!!!!
  2. 高效进行 Oracle 日常巡检——数据库基本情况检查
  3. nat端口限制_Cisco ASA 防火墙 NAT - 基本概念
  4. wpf创建xml随程序一起打包_Springboot,Java程序员必学
  5. python的lambda函数_Python-Lambda函数的范围及其参数?
  6. android 原始定位,安卓原生定位
  7. 使用Asible连接被控端SHH拒绝解决办法
  8. RDMA技术详解(一):RDMA概述
  9. 学期计算机教学工作反思,信息技术组教学工作反思
  10. jQuery成为微软.NET开发工具的一部分了