当前位置:首页 > 科技  > 软件

一分钟了解,预写日志 WAL 的核心思路...

来源: 责编: 时间:2024-07-03 17:25:28 253观看
导读上一篇《刷盘,还是不刷盘,是一个问题》中我们遇到了哪些问题?(1) 已提交事务+未提交事务的ACID特性怎么保证?画外音:上一篇中遇到的问题,主要是原子性与持久性。(2) 数据库崩溃,怎么实施故障恢复?(3) 每次都刷盘随机写,性能低,

上一篇《刷盘,还是不刷盘,是一个问题》中我们遇到了哪些问题?IWj28资讯网——每日最新资讯28at.com

(1) 已提交事务+未提交事务的ACID特性怎么保证?IWj28资讯网——每日最新资讯28at.com

画外音:上一篇中遇到的问题,主要是原子性与持久性。IWj28资讯网——每日最新资讯28at.com

(2) 数据库崩溃,怎么实施故障恢复?IWj28资讯网——每日最新资讯28at.com

(3) 每次都刷盘随机写,性能低,怎么提高数据库性能?IWj28资讯网——每日最新资讯28at.com

画外音:正常情况下,不需要每个事务提交,都进行刷盘。IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

要提升随机写性能,最容易想到的,就是利用高性能的顺序写日志,记录事务中的一些信息,来实现已提交事务的数据“要刷盘”,未提交事务的数据“不刷盘”,以及实现故障恢复。IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

这个顺序写的日志,记录什么内容呢?

事务中,对数据库的写操作。IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

如何来标识写操作的时序呢?

每条日志记录会有一个递增的日志序列号(log sequence number,LSN),唯一标识一条日志记录。IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

还有一种特殊的日志记录,叫检查点(checkpoint)。IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

检查点记录了某一个时刻,缓冲池(buffer pool)中所有数据页(page)的状态信息。IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

有了检查点和顺序写日志,我们就可以通过:IWj28资讯网——每日最新资讯28at.com

  • 重放(redo)已提交事务的操作;
  • 取消(undo)未提交事务的操作;
  • 顺序写替代随机写;

来解决,上面提到的三大难题。IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

这,就是我们今天要聊的核心技术,预写日志(write-ahead logging,WAL)。IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

预写日志不仅仅是一种日志,更像是一种模式,一种协议,它要求在进行数据写入操作时,必须先写入操作日志。IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

预写日志的分层结构是怎么样的?

如同数据的内存-磁盘两层结构一样,为了提升性能,预写日志也分为内存-磁盘两层结构:IWj28资讯网——每日最新资讯28at.com

  • 内存层:WAL buffer
  • 磁盘层:WAL log file

IWj28资讯网——每日最新资讯28at.com

预写日志会记录哪些信息呢?

还是之前那个事务T1:IWj28资讯网——每日最新资讯28at.com

  • IWj28资讯网——每日最新资讯28at.com

    IWj28资讯网——每日最新资讯28at.com

    开始事务
  • 读取记录A的值(假设A=1)
  • 修改记录A的值(假设修改为2)
  • 提交事务

IWj28资讯网——每日最新资讯28at.com

预写日志首先会记录,T1事务开始:IWj28资讯网——每日最新资讯28at.com

LSN=0:<T1, BEGIN>IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

读取A的值是一个读操作,不需要进行记录。IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

修改记录A的值是一个写操作,需要进行记录,而且要记录修改前的值,与修改后的值,类似于:IWj28资讯网——每日最新资讯28at.com

LSN=1:<T1, A, 1, 2>IWj28资讯网——每日最新资讯28at.com

以方便未来进行redo与undo(如上图中的屎黄色1)。IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

接下来,事务会对缓冲池中的数据进行修改(如上图中的屎黄色2)。IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

到目前为止,预写日志都还是写在buffer中,并没有刷到磁盘上。IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

事务提交时,预写日志,以及缓冲池会发生什么?

首先,T1事务提交,也会记录到buffer中:IWj28资讯网——每日最新资讯28at.com

LSN=2:<T1, COMMIT>IWj28资讯网——每日最新资讯28at.com

但这样,还远远不够。IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

预写日志,必须全部从buffer里刷到磁盘上,也就是日志文件中,事务才能标记上“已提交”,并返回给应用程序。IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

没错,只要预写日志从buffer刷到磁盘,而不需要数据从buffer刷到磁盘,就能返回应用程序,事务提交成功。IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

至于数据什么时候从buffer刷回磁盘,这取决于缓冲池刷盘策略,例如:隔一段时间异步刷盘(如上图中的屎黄色便签)。IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

这,就是预写日志的核心思路。IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

总结与思考:

(1) 日志序列号(log sequence number,LSN),唯一标识一条日志记录,递增;IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

(2) 检查点(checkpoint),记录了某一个时刻,缓冲池(buffer pool)中所有数据页(page)的状态信息。IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

(3) 预写日志记录什么核心信息?IWj28资讯网——每日最新资讯28at.com

  • 事务开始
  • 事务结束(提交/回滚)
  • 事务的写操作,修改前/修改后的值

IWj28资讯网——每日最新资讯28at.com

(4) 数据库何时能向应用程序返回“事务成功”?IWj28资讯网——每日最新资讯28at.com

预写日志刷盘成功之后。IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

(5) 上一篇《刷盘,还是不刷盘,是一个问题》结尾的问题:在数据库返回应用程序事务成功之前,要不要将数据刷回磁盘?IWj28资讯网——每日最新资讯28at.com

只要有预写日志机制,只需要预写日志刷盘,不需要数据刷盘。IWj28资讯网——每日最新资讯28at.com

IWj28资讯网——每日最新资讯28at.com

新的场景出现了:如果数据库崩了,怎么利用检查点(checkpoint)以及预写日志,来进行刷盘和数据恢复呢?让你来设计,你会怎么做?IWj28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-98559-0.html一分钟了解,预写日志 WAL 的核心思路...

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 掌握 Python:15 个关于字符串操作的神级单行代码

下一篇: len() 函数妙用:十个增强 Python 程序可读性的实践

标签:
  • 热门焦点
  • Mate60手机壳曝光 致敬自己的经典设计

    8月3日消息,今天下午博主数码闲聊站带来了华为Mate60的第三方手机壳图,可以让我们在真机发布之前看看这款华为全新旗舰的大致轮廓。从曝光的图片看,Mate 60背后摄像头面积依然
  • 红魔电竞平板评测:大屏幕硬实力

    前言:三年的疫情因为要上网课的原因激活了平板市场,如今网课的时代已经过去,大家的生活都恢复到了正轨,这也就意味着,真正考验平板电脑生存的环境来了。也就是面对着这种残酷的
  • Redmi Pad评测:红米充满野心的一次尝试

    从Note系列到K系列,从蓝牙耳机到笔记本电脑,红米不知不觉之间也已经形成了自己颇有竞争力的产品体系,在中端和次旗舰市场上甚至要比小米新机的表现来得更好,正所谓“大丈夫生居
  • 6月iOS设备性能榜:M2稳居榜首 A系列只能等一手3nm来救

    没有新品发布,自然iOS设备性能榜的上榜设备就没有什么更替,仅仅只有跑分变化而产生的排名变动,毕竟苹果新品的发布节奏就是这样的,一年下来也就几个移动端新品,不会像安卓厂商,一
  • 8月总票房已突破10亿!《封神》第一:口碑已经成了

    8月5日消息,据灯塔专业版数据,截至8月5日9时35分,8月总票房(含预售)已突破10亿。其中,《封神》以大比分的优势领先。根据官方消息,目前该片总票房已经超过14.
  • 微信语音大揭秘:为什么禁止转发?

    大家好,我是你们的小米。今天,我要和大家聊一个有趣的话题:为什么微信语音不可以转发?这是一个我们经常在日常使用中遇到的问题,也是一个让很多人好奇的问题。让我们一起来揭开这
  • 慕岩炮轰抖音,百合网今何在?

    来源:价值研究所 作者:Hernanderz&ldquo;难道就因为自己的一个产品牛逼了,从客服到总裁,都不愿意正视自己产品和运营上的问题,选择逃避了吗?&rdquo;这一番话,出自百合网联合创
  • 冯提莫签约抖音公会 前“斗鱼一姐”消失在直播间

    来源:直播观察提起&ldquo;冯提莫&rdquo;这个名字,很多网友或许听过,但应该不记得她是哪位主播了。其实,作为曾经的&ldquo;斗鱼一姐&rdquo;,冯提莫在游戏直播的年代影响力不输于现
  • 重估百度丨大模型,能撑起百度的“今天”吗?

    自象限原创 作者|程心 罗辑2023年之前,对于自己的&ldquo;今天&rdquo;,百度也很迷茫。&ldquo;新业务到 2022 年底还是 0,希望 2023 年出来一个 1。&rdquo;这是2022年底,李彦宏
Top