暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【GBase 8s】事务运行过程

原创 遇见数据库 2023-06-21
403

事务运行过程

数据落盘分为三个步骤:

1、物理日志落盘;

2、逻辑日志落盘;

3、数据落盘。

物理日志和逻辑日志的落盘没有前后顺序,但是数据落盘的前提是逻辑日志必须落盘!

下图为事务Transaction的完整过程解析,这里假设事务 T1 需要删除1行记录:Delete from customer where cust_id=10;我们在前面讲解了存储结构的 Page 概念,Page是 I/O 的最小单位,在一个 Page 中存储多行记录,所以即使这里我们只删除了某一行记录,磁盘读写都需要操作一个 Page。其中磁盘的一个 Page 对应内存的一个内存页,这里删除一行记录,物理日志也需要将该 Page 的前影存储到物理日志中,同时需要记录逻辑日志信息。

 

对 5 个具体过程解释如下。

(1)需要将 delete 操作的记录从磁盘读取到 buffer pool 中,读取该记录所在的 Page 到内存,内存中一个内存页存储对应的数据页。

(2)将该数据页写入物理日志文件中,物理日志有一个对应的数据页存储 delete 操作之前的前影数据页。

(3)将 delete 操作的逻辑信息写入逻辑日志文件中。

(4)修改 buffer pool 中的内存页,将数据页中该行记录的槽位标记中的长度设置为 0 ,标识记录被删除,同时更新数据页时间戳信息,并将内存数据页从 LRU 的 F 队列移动到M 队列。

(5)当发生Checkpoint(或者其他磁盘写操作)时,将该数据页从内存同步到磁盘,写磁盘需要将整个 Page 更新到磁盘。同时将内存数据页从 LRU 的 M 队列移动到 F 队列。

注意,以上过程中I/O操作的单位都是Page,无论是不是只修改一个Page中的某一行记录,都需要读写整个page。

最后修改时间:2023-07-13 14:39:56
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论