- 浏览: 182651 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
grzrt:
zkf55915 写道哥们怎么用啊
好久不用了,就是看帮助资 ...
淘宝MetaQ开源消息队列安装 -
zkf55915:
哥们怎么用啊
淘宝MetaQ开源消息队列安装 -
grzrt:
jinnianshilongnian 写道整这个了?
没有 看 ...
linux内核中链表的实现 -
jinnianshilongnian:
整这个了?
linux内核中链表的实现
对于提供事务支持的数据库,在事务提交时,都要确保事务日志(包含该事务所有的修改操作以及一个提交记录)完全写到硬盘上,才认定事务提交成功并返回给应用层。
一个简单的问题:在*nix操作系统上,怎样保证对文件的更新内容成功持久化到硬盘?
1. write不够,需要fsync
1 #include <unistd.h>
2 int fsync(int fd);
1 #incude <sys/mman.h>
2 int msync(void *addr, size_t length, int flags)
msync需要指定同步的地址区间,如此细粒度的控制似乎比fsync更加高效(因为应用程序通常知道自己的脏页位置),但实际上(Linux)kernel中有着十分高效的数据结构,能够很快地找出文件的脏页,使得fsync只会同步文件的修改内容。
2. fsync的性能问题,与fdatasync
"Unfortunately fsync() will always initialize two write operations : one for the newly written data and another one in order to update the modification time stored in the inode. If the modification time is not a part of the transaction concept fdatasync() can be used to avoid unnecessary inode disk write operations."
多余的一次IO操作,有多么昂贵呢?根据Wikipedia的数据,当前硬盘驱动的平均寻道时间(Average seek time)大约是3~15ms,7200RPM硬盘的平均旋转延迟(Average rotational latency)大约为4ms,因此一次IO操作的耗时大约为10ms左右。这个数字意味着什么?下文还会提到。
Posix同样定义了fdatasync,放宽了同步的语义以提高性能:
1 #include <unistd.h>
2 int fdatasync(int fd);
"fdatasync does not flush modified metadata unless that metadata is needed in order to allow a subsequent data retrieval to be corretly handled."
3. 使用fdatasync优化日志同步
在Berkeley DB下,如果开启了AUTO_COMMIT(所有独立的写操作自动具有事务语义)并使用默认的同步级别(日志完全同步到硬盘才返回),写一条记录的耗时大约为5~10ms级别,基本和一次IO操作(10ms)的耗时相同。
1.每个log文件固定为10MB大小,从1开始编号,名称格式为“log.%010d"2.每次log文件创建时,先写文件的最后1个page,将log文件扩展为10MB大小3.向log文件中追加记录时,由于文件的尺寸不发生变化,使用fdatasync可以大大优化写log的效率4.如果一个log文件写满了,则新建一个log文件,也只有一次同步metadata的开销
发表评论
-
使用pidstat查看进程资源使用情况
2013-03-12 11:06 4509在查看系统资源使用情况时,很多工具为我们提供了从设备角度查 ... -
MySQL中关于查询条件中的字符串空格问题
2013-02-20 19:17 7609假设当前mysql数据库中有个表:sysuser 有个字段 ... -
动态添加MYSQL从库,导出主库
2013-01-15 17:57 972http://dev.mysql.com/doc/refman ... -
MySQL主从失败 错误Got fatal error 1236解决方法
2013-01-09 16:45 1017由于主服务器异外重启, ... -
mysql 语句的调度优先级及改变
2012-12-07 16:47 1222MySQL的默认的调度策略可用总结如下: · 写入操作优 ... -
redis主从的配置和使用
2012-11-23 14:24 999redis主从的配置和使 ... -
MySQL水平分区表初体验总结
2012-09-21 15:22 1136本文总结个这段时间研究MySQL水平分区表总结,列举分区 ... -
Linux修改MySql默认存储引擎为InnoDB
2012-09-13 18:25 1533一、关闭相关应用 二、停止mysql bin/m ... -
MySQL数据库的初始化mysql_install_db
2012-09-13 14:13 4648一、mysql_install_db说明 当MySQL的 ... -
四层和七层负载均衡的区别介绍
2012-09-12 11:46 804简单理解四层和七层负载均衡:①所谓四层就是基于IP+端口 ... -
Linux下高并发Tcp需要突破的限制
2012-09-06 13:47 7171、修改用户进程可打开文件数限制 在Linux平台上, ... -
Linux tcpdump命令详解
2012-09-06 10:00 1026简介 用简单的话来定义tcpdump,就是:dum ... -
socket中accept()函数的理解
2012-09-01 22:41 6754如果客户端有连接请 ... -
Linux sar 分析网卡流量
2012-08-23 11:39 1298yum install sysstatsar -n { DEV ... -
[mysql]不要再执着于thread_concurrency
2012-08-20 10:51 3326结论: thread_concurrency 在GNU ... -
【转】对mysql日志进行操作的总结包括 启用,过期自动删除 等
2012-08-19 17:25 8221. 以前我错误的认为mysql的日志可以恢复到任何时 ... -
mysql 主从复制1201错误
2012-08-19 15:59 897工作日志之-MySQL slave Replication E ... -
Redis学习手册(主从复制)
2012-08-19 11:39 771一、Redis的Replication: 这里首先需要说 ... -
Redis学习手册(持久化)
2012-08-19 11:39 742一、Redis提供了哪些持久化机制: 1). RDB持久 ... -
Redis学习手册(虚拟内存)
2012-08-19 11:38 697一、简介: 和大多NoS ...
相关推荐
嵌入式linux小议:ELF 文件格式分析嵌入式linux小议:ELF 文件格式分析
小议EC加IO联合模型及应用.doc
消费调查论文:小议河南居民消费调查与提议.doc
高职药学论文:小议高职药学创新与实践.doc
小议网络工程的设计与建设.pdf
小议传统插花的历史与特征.doc
小议法语教学法改革与实践.docx
小议疾控中心的管控与构建.docx
小议广州城市形象感知与改进.doc
小议公司章程的功能与形势.doc
小议电视新闻的开拓与优化.doc
小议大学生网络道德与网络偏差.docx
小议车辆GPS应用现状与发展趋势.pdf
小议计算机电子信息技术与工程管理.pdf
小议中华文化之精髓与糟粕——读《三字经》有感.docx
小议中华文化之精髓与糟粕——读《三字经》有感_1.docx
小议量化宽松策略与影响.doc
小议我国品牌并购与风险规避.doc
小议全面收益观与传统收益综述.doc
小议计算机教学与机房管理.docx