Linux的文件系统有点像MySQL的存储引擎,它支持各种各样的文件系统。它最上层是通过 virtual files system虚拟文件系统作为一个抽象接口层来对外提供调用的。然后下层的各种文件系统实现这些调用接口就行了。

1. Linux 中的 日志文件系统和非日志文件系统

文件内容的修改涉及到两部分:实际文件内容的修改 和 文件元(metadata)信息的修改。所以在修改一个成功之后,修改另一个之前,此时系统崩溃,就会导致两者的不一致。所以提出了日志文件系统的概念。

所谓的日志文件系统(Journaling file system),就是在实际修改文件内容和文件元信息之前,将他们的修改先写到一个日志中(journal log)。这样的话,如果发生系统崩溃,就可以使用日志进行恢复。当然,写日志会对文件系统的性能有一定的影响。除了ext2之外,其它文件系统几乎都是日志文件系统。

日志文件系统的处理过程是:1)先写日志;2)然后写实际的文件系统;3)删除日志;

日志文件系统又可以分成三种类型:

1)日志模式(journal): 将所有的元数据和数据改变均写入日志,对性能影响最大;

2)预定模式(ordered): 只记录元数据的变化, 在数据写入磁盘后再修改元数据,对性能影响中等;

3)写回模式(writeback): 只记录元数据的修改变化,对数据修改顺序无要求,对性能影响最小;

我们可以在/etc/fstab 文件中修改文件系统的日志模式。

/dev/sdb1 /testfs ext3 defaults,data=writeback 0 0

Linux 常用文件系统:

ext4, ext4, XFS, ReiserFS, JFS

其中最常用的是 ext4, XFS. 其中redhat7/centos7将XFS作为默认的文件系统。在最新内核的测试中XFS性能也明显超过ext4。所以对于mysql服务器,最好选择使用 XFS 文件系统。

关于 ssd上的ext4和xfs有一个比较:

https://www.percona.com/blog/2012/03/15/ext4-vs-xfs-on-ssd/

在rhel6.4之前ext4性能比xfs好,因为xfs有lock争用的bug。但是6.4开始,xfs的bug被fix了。所以xfs性能比ext4好。

在xfs的锁争用bug没有解决时:

    sync                      async
threads throughput            throughputXFS         ext4        XFS         ext4
1    1.90/124k   1.41/92k     1.72/112k   1.41/92k
2    1.01/64k    1.65/108k    0.97/62k    1.65/108k
4    0.27/17k    1.55/102k    0.21/13k    1.55/102k
8    0.13/8k     1.45/95k     0.15/9k     1.45/95k
16   0.12/7k     1.45/95k     0.12/7k     1.45/95k 

It’s pretty clear from these results that lock contention is killing XFS as the thread count grows. ext4 performance shows that it uses exclusive locking as well, but it is not degrading like XFS is due to different lock types being used.

但是当xfs的锁争用bug解决之后:

    sync                      async
threads throughput            throughputvanilla     patched      vanilla      patched
1    1.90/124k   1.83/120k    1.72/112k   1.69/111k
2    1.01/64k    2.85/185k    0.97/62k    2.57/168k
4    0.27/17k    3.68/241k    0.21/13k    3.41/223k
8    0.13/8k     4.42/290k    0.15/9k     4.16/273k
16   0.12/7k     4.95/325k    0.12/7k     4.86/319k

Throughput scales with thread count – each thread runs at 100% CPU utilsation, and XFS gets up to 3x as much throughput as ext4 does. So, basically, XFS is still the file system you want for direct IO。

挂在文件时的优化(noatime,nodiratime):

mount –t ext4 –o rw,noatime,nodiratime /dev/sda6 /data

noatime 会有0-10%的性能提升,一般平均会有3%的性能提升。

noatime:

Do not update inode access times on this filesystem (e.g, for faster access on the news spool to speed up news servers).

nodiratime:

Do not update directory inode access times on this filesystem.

noatime,nodiratime的配置也可以在/etc/fstab中进行。

转载于:https://www.cnblogs.com/zengkefu/p/5683679.html

MySQL 调优基础(三) Linux文件系统相关推荐

  1. MySQL 调优基础:Linux内存管理 Linux文件系统 Linux 磁盘IO Linux网络

    http://www.cnblogs.com/digdeep/category/739915.html

  2. linux mysql io压力大_MySQL 调优基础(四) Linux 磁盘IO_MySQL

    1. IO处理过程 磁盘IO经常会成为系统的一个瓶颈,特别是对于运行数据库的系统而言.数据从磁盘读取到内存,在到CPU缓存和寄存器,然后进行处理,最后写回磁盘,中间要经过很多的过程,下图是一个以wri ...

  3. MySQL调优(三):索引基本实现原理及索引优化,哈希索引 / 组合索引 / 簇族索引等

    索引基本知识 索引匹配方式 哈希索引 当需要存储大量的URL,并且根据URL进行搜索查找,如果使用B+树,存储的内容就会很大 select id from url where url="&q ...

  4. MySQL调优系列基础篇

    前言 有一段时间没有写博客了,整天都在忙,上班,录制课程,恰巧最近一段时间比较清闲,打算弄弄MYSQL数据库. 关于MySQL数据库,这里就不做过多的介绍,开源.免费等特性深受各个互联网行业喜爱,尤其 ...

  5. mysql监控、性能调优及三范式理解

    @酷勤网-程序员的那点事 <mysql监控.性能调优及三范式理解>下文介绍了关于mysql监控.性能调优及三范式理解的内容.mysql监控.性能调优及三范式理解(来自: 博客园 ) @酷勤 ...

  6. 性能优化专题 - MySql 性能优化 - 04 - MySql调优

    目录导航 前言 Undo-log与Redo-log 案例 当前读.快照读 Redo Log的落盘配置 MySQL配置优化 MySQL服务器参数类型 快速定位MySql配置文件 MySQL内存参数配置 ...

  7. Mysql调优你不知道这几点,就太可惜了

    转载自  Mysql调优你不知道这几点,就太可惜了 一.Mysql的逻辑分层 Mysql分为:连接层.服务层.引擎层.存储层. 当客户端向服务端发起操作请求的时候,执行过程是这样的: 1.客户端端与M ...

  8. MySQL 调优/优化的 101 个建议!

    转载自 MySQL 调优/优化的 101 个建议! MySQL是一个强大的开源数据库.随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈.这里提供 101 条优化 MySQL 的建议.有些技巧适 ...

  9. MySQL调优篇:单机数据库如何在高并发场景下健步如飞?

    在当前的IT开发行业中,系统访问量日涨.并发暴增.线上瓶颈等各种性能问题纷涌而至,性能优化成为了现时代中一个炙手可热的名词,无论是在开发.面试过程中,性能优化都是一个常谈常新的话题.而MySQL作为整 ...

最新文章

  1. 20个天才般的走心设计,真是太牛了!
  2. 自动化的OSGi测试运行器
  3. 全网最细之static关键字讲解
  4. setdata改数组里的值 微信小程序_今日艰难笔记redux小程序随记
  5. tar解压出错tar: Child returned status 1
  6. git获得当前分支url_笔记本拿出来!软件工程师必须要知道的Git命令语句大汇总...
  7. 【Head First 设计模式】-简单工厂模式读后总结
  8. 技术人生:立志、勤学、改过、责善
  9. 条码控件商IDAutomation极大改善了Barcode Image Generator性能
  10. JSP内置对象之application
  11. Linux设备驱动程序 之 中断和锁
  12. html 字体立体效果,如何利用CSS3制作3D效果文字具体实现样式
  13. linux检测主机网络配置和状况的命令是,Linux常用网络状态测试命令
  14. adpcb 添加差分对_在AD中PCB设计常用规则——差分规则设置?
  15. C/C++程序员工作面试的秘密
  16. 根轨迹分析 matlab,MATLAB的根轨迹分析
  17. AutoJs学习-QQ\微信自定义小尾巴
  18. Access和VBA
  19. python爬取智联招聘网_Python-爬取智联招聘
  20. 管理员权限功能和开机自启功能

热门文章

  1. 【CodeForces - 298D】Fish Weight (OAE思想,思维)
  2. 【FZU - 2140 】Forever 0.5 (计算几何,构造)
  3. java list详解_Java 中 list 用法案例详解
  4. github 上传代码_leetcode爬虫:爬取代码;生成readme;上传github
  5. wx轮播图接口学习用json格式_零基础学小程序008----列表和轮播图的实现,小程序解析json数据...
  6. 日期时间格式之间的相互转换
  7. ca开头的车是什么牌子_微电调研 | 把高速车摘了牌子当低速车卖还很普遍
  8. Tomcat6.0.37,tomcat6.0.37,下访问Web项目,jsp项目不需要输入项目名称和端口号的配置方法...
  9. 类的6个默认成员函数:构造函数、析构函数、拷贝构造函数、重载运算符、三/五法则
  10. 腾讯面试Android必问11题,我说的,不信就来看看