欢迎来到 梧州市某某电子打标设备运营部
全国咨询热线:020-123456789
联系我们

地址:联系地址联系地址联系地址

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
Write-Ahead Log (预写日志)
  来源:梧州市某某电子打标设备运营部  更新时间:2024-05-09 05:53:40

Write-Ahead Log (预写日志)

WAL 概述

WAL 是写日 write-ahead log 系统 ,其核心思想是写日将用户的所有修改操作(插入 、删除)写入日志 ,写日然后再应用到系统状态。写日一旦日志写入成功,写日就可以通知用户操作成功。写日由于日志采用尾部追加方式写入 ,写日耗时较短 ,写日因此不会长时间阻塞用户线程。写日另外,写日为防止意外退出导致数据丢失 ,写日系统重启时会根据日志重做用户操作 ,写日保证数据可靠性。写日

Write-Ahead Log (预写日志)

WAL - 预写日志

WAL 一直是传统 RDBMS 系统中的一个共识  ,用于帮助保证原子性和持久性(ACID 的写日 A 和 D)。对表的所有更新首先写入 WA),然后异步的方式使用 。

示例 WAL 和 WALEntry 结构:

type WAL struct { n dir string // 存放 WAL 文件的目录 。nn file *os.File // 引用文件nn metadata []byte // 每个 WALn 解码器头部记录的元数据 *decoder // 解码器解码记录n 编码器 *encoder // 编码器编码记录n n mutex sync.Mutex // To确保每个写入器一次更新n lastIndex uint64 // 保存到 WAL 的最后一个条目的索引n} nntype WALEntry struct { n lsn uint64 // 每个日志条目的唯一标识符n data []byte // 实际 WAL 条目(以字节为单位) n crc uint32 // crc for数据完整性验证n type uint32 // wal 记录的类型 n}n

为什么需要 WAL

为什么不将更改直接刷新到实际数据文件  ?

它有2个方面——

  1. 对磁盘的写入永远不会真正直接刷新 ,数据经过各种缓冲区(RAM/缓冲区缓存/磁盘缓存) ,然后才真正刷新到磁盘扇区 。这些缓存有助于减少磁盘写入次数 ,有助于提高性能 ,但是  ,它们的缺点是,如果出现重启/崩溃,这些中间缓存中的数据会丢失,从而影响我们数据的持久性 。如果我们开始避免缓存,每次写后进行磁盘刷新 ,这样的动作会影响系统的性能和吞吐量 。
  2. 如上面提到的 ,磁盘写入很慢,在磁盘写入中 ,与随机磁盘写入相比 ,顺序磁盘写入要快得多(也适用于 SSD)。
Write-Ahead Log (预写日志)

WAL设计

WAL 是一个仅附加日志,它将数据存储中的每个状态更改存储为日志 。

一个单独的异步进程可以从 WAL 读取操作,然后按照正常流程通过不同的缓存将数据更新应用于磁盘上的实际数据文件 ,有助于提高数据存储的写入吞吐量。

此外,如果发生故障 ,可能会有未应用的更新 ,由于我们在 WAL 文件中存在操作,我们可以从 WAL 重放操作并应用它们以使数据存储恢复到一致状态。因此 ,WAL 帮助我们确保数据的完整性和可靠性 ,同时仍然允许我们的数据存储具有高写入吞吐量。

注意事项

1. 将 WAL 操作刷新到磁盘

如前所述,对磁盘的写入可能不会直接刷新  ,考虑到写入系统中导致性能的问题,需要进行权衡刷新频率或微批处理或两者来将更改刷新到磁盘,以帮助提高性能。请注意 ,此处存在数据丢失的风险。

2. 损坏检测

需要确保任何刷新到磁盘的操作都不会损坏 , WAL 记录还包含一个 CRC 值,该值可用于验证何时从 WAL 读取记录并确保没有损坏 。

3. 重复操作

由于 WAL 是一个附加追尾的文件 ,因此如果客户端由于通信故障而重试,可能会遇到在 WAL 上写入重复操作的情况 。因此 ,每当读取 WAL 时  ,要确保忽略重复项,或者对应用数据的动作具有幂等性的 。

现状

1)所有数据库 ,包括像Cassandra这样的NoSQL数据库都使用WAL来保证持久性 。

2) Kafka 使用了与 WAL(Commit Log) 类似的结构 。

3) 像 Rocks DB 、Level DB 这样的 KV 存储和像 Apache Ignite 这样的分布式缓存也使用 WAL。

概括

总而言之,WAL 提供一下价值

1) 更快的性能和吞吐量,避免了所有更改的数据刷新/磁盘写入。

2) 重启时的可恢复性 ,操作可以从 WAL 应用到实际的数据存储。

3)能够恢复到时间点快照,我们在 WAL 中存在所有操作 。


友情链接造梦西游3法宝(造梦西游3合成表大全)魔兽世界灰熊丘陵竞技场任务奖励?魔兽世界灰熊丘陵竞技场任务指南横版街机格斗手游-街机格斗手游大全-格斗街机游戏大全去雷神岛的任务在哪接 怎么去雷神岛怎么去LOLs11乌迪尔打野出装玩法讲解《光遇》隐藏雨林粉红海进入方法攻略藏宝图详解攻略|诛仙手游马来西亚版重温经典,闪耀的修仙之旅:探索宇宙无限可能请叫我海盗:加勒比传奇 Pirates Journey v2.0.3英雄联盟稻草人什么时候,请问英雄联盟SKT皮肤每年什么时候开始买斩魂魔道技能加点,斩魂魔道时装属性梦幻西游玩家21天收99个神兜兜,网友:终于买到一个大唐口袋妖怪快龙配招绿宝石(口袋妖怪究极绿宝石快龙什么性格)联动神宠与皮肤齐上线!热辣暑假福利中心重磅开启!dnf如何净化装备 dnf净化装备方法英雄联盟手游惩戒之箭技能 LOL手游韦鲁斯技能小技巧分享DNF2023男气功加点金铲铲之战s6艾克阵容搭配站位出装2021王者荣耀:S22新赛季何时开启?段位继承图曝光,排位赛增加至六ban位外贸热销饰品 镶石皇冠女王戒指 ***宴会戒指 厂家直销 FR256价格dnf2021周年庆代币券什么时候过期最新十大无限制gm游戏排行榜2022 gm手游权限排行完爆所有近战英雄 S6上单霸主石头人lol在游戏中怎么截图,lol怎么截图斗战神什么职业适合平民 职业优势解析详解【共建WIKI,得炉石绝版周边】博德之门3内容创作者招募!英雄联盟战争女神符文怎么点 LOL战争女神玩法攻略斗战神什么职业适合平民 职业优势解析详解魔兽世界恶魔之击哪里出流行的手机十大耐玩生存单机游戏 生存题材的手机游戏top10地下城游戏dnf风云崛起任务在哪怎么接DNF第四季80级男气功刷图型加点与各大技能分析魔兽世界怀盗贼武器怎么选择-wlk海盗最强武器推荐新手升级推荐加点 DNF80级多种流派力法加点分享商城系统以拼团、砍价、分销为场景的用户增长,裂变和转化才是关键《魔兽世界》“巫妖王之怒”声望介绍新开传奇发布网999兽人术士幻化,兽人术士幻化古尔丹出处魔兽世界怀旧服月亮井在哪里跑跑卡丁车游戏币 跑跑卡丁车怎么刷游戏币dnf2021周年庆代币券什么时候过期
联系我们

地址:联系地址联系地址联系地址

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.1911

Copyright © 2024 Powered by 梧州市某某电子打标设备运营部   sitemap