暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
(1条消息)针对innodb_flush_method参数的理解和对比测试(mycat+mysql)_smooth的博客-CSDN博客.pdf
203
11页
0次
2021-09-14
5墨值下载
2020/2/13 (1条消息)针对innodb_flush_method参数的理解和对比测试(mycat+mysql_smooth的博客-CSDN博客
https://blog.csdn.net/smooth00/article/details/72725941 1/11
首页 博客 学院 下载 论坛 问答 活动 专题 招聘 APP VIP会员
续费8折
博客之星
Python工程师
针对innodb_flush_method参数的理解和对比测试(mycat+mysql)
原创
smooth-z 阅读数 14245 收藏最后发布于2017-05-25 14:21:15
mysqlinnodb_flush_method这个参数控制着innodb数据文件及redo log的打开、刷写模式,对于这个参数,文档上是这样描述的:
有三个值:fdatasync(默认)O_DSYNCO_DIRECT
默认是fdatasync,调用fsync()去刷数据文件与redo logbuffer
O_DSYNC时,innodb会使用O_SYNC方式打开和刷写redo log,使用fsync()刷写数据文件
O_DIRECT时,innodb使用O_DIRECT打开数据文件,使用fsync()刷写数据文件跟redo log
首先文件的写操作包括三步:open,write,flush
上面最常提到的fsync(int fd)函数,该函数作用是flush时将与fd文件描述符所指文件有关的buffer刷写到磁盘,并且flush完元数据信息(比如修改日期、
才算flush成功。
使用O_DSYNC方式打开redo文件表示当write日志时,数据都write到磁盘,并且元数据也需要更新,才返回成功。
O_DIRECT则表示我们的write操作是从MySQL innodb buffer里直接向磁盘上写。
这三种模式写数据方式具体如下:
fdatasync模式:写数据时,write这一步并不需要真正写到磁盘才算完成(可能写入到操作系统buffer中就会返回完成),真正完成是flush操作,buf
系统去flush,并且文件的元数据信息也都需要更新到磁盘。
O_DSYNC模式:写日志操作是在write这步完成,而数据文件的写入是在flush这步通过fsync完成
O_DIRECT模式:数据文件的写入操作是直接从mysql innodb buffer到磁盘的,并不用通过操作系统的缓冲,而真正的完成也是在flush这步,日志还是
分别对这个三类模式进行对比测试:
一、测试条件
1、1000并发测试单表的增、删、改、查操作,测试表已经设置索引,基础数据量是一千五百多万条(未做分表分库)
2、测试环境:haproxy+2个mycat节点+3台mysql(第一台mysql为主节点,负责写,另外两台负责读)
mysql服务器配置:8G内存,8核1.80Ghz CPU
3、mysql优化后配置参数:
max_connections=2000
innodb_buffer_pool_size=4G
join_buffer_size=1M
举报
2
2020/2/13 (1条消息)针对innodb_flush_method参数的理解和对比测试(mycat+mysql_smooth的博客-CSDN博客
https://blog.csdn.net/smooth00/article/details/72725941 2/11
sort_buffer_size=1M
thread_cache_size=8
innodb_buffer_pool_instances=8
innodb_page_cleaners=4
innodb_purge_threads=1 #使用单独的清除线程定期回收无用数据的操作
innodb_max_dirty_pages_pct=90 #innodb主线程刷新缓存池中的数据,使脏数据比例小于90%
wait_timeout=300
###从节点增加如下配置
innodb_doublewrite=off
innodb_page_cleaners=8
innodb_read_io_threads=64
innodb_write_io_threads=64
read_buffer_size=1M
二、测试结果
1、datasync(默认),O_DSYNC这两种模式的磁盘IO比较高(只截取主节点mysql的监控图,因为两个从节点通过主节点同步数据,IO压力基本一致)
2、O_DIRECT模式的磁盘IO明显低了好多
这说明O_DIRECT模式是将数据直接从MySQL innodb buffer向磁盘写入,其写入磁盘的速度应该是会低于从操作系统buffer往磁盘写。
3、datasync(默认),O_DSYNC这两种模式的free内存下降很快(特别是datasync模式)
of 11
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜