关键字:
KingbaseES、MVCC、数据快照、快照过期、人大金仓
1、数据快照
1.1 什么是数据快照
简单的说,数据快照就是MVCC中的数据版本。
每一个更新数据的事务启动时,在DB中的数据都有与之对应的状态记录拷贝(事务的操作也是针对这个记录,而不是针对原始数据),以便确定数据拷贝对该事务是否可见,从而实现事务间的数据隔离;
2、快照过期
2.1 数据快照的缺陷
当一个数据版本被一个长事务占用时,将导致相关存储资源和内存资源无法回收。此种情况在数据库server大量发生的话,将会导致数据库内数据严重膨胀,进而影响数据库的性能和稳定性。
数据膨胀产生的简化逻辑流程见下图:
2.2 快照过期业务逻辑
为解决数据膨胀的问题,引入了一个新的特性:snapshot too old(快照过旧),在数据库server增加了一个参数old_snapshot_threshold。通过这个参数,数据库server可以为数据快照设定一个过期时间,对于过期的数据快照,数据库server可以直接清理,此时占用此数据快照的长事务结束并报错提示:snapshot too old。
增加快照过旧特性的数据版本管理流程简化逻辑,见下图
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




