说明:收录90万 73个行业的国家标准 支持批量下载
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202210852201.9 (22)申请日 2022.07.20 (71)申请人 中国烟草总公司职工进修学院 地址 450008 河南省郑州市金 水区鑫苑路7 号 (72)发明人 马晓 周正凯 徐丽娟 贾伟  张亚萍 郝菊芳  (74)专利代理 机构 上海国智知识产权代理事务 所(普通合伙) 31274 专利代理师 潘建玲 (51)Int.Cl. G06F 16/21(2019.01) G06F 16/215(2019.01) G06F 16/22(2019.01) G06F 16/23(2019.01)G06F 16/242(2019.01) G06F 16/28(2019.01) (54)发明名称 一种基于Undo表空间解决PostgreSQL数据 库表膨胀方法及系统 (57)摘要 本发明实施例公开了一种基于Undo表空间 解决PostgreSQL数据库表膨胀方法及系统, 其中 方法包括: 监测到Po stgreSQL数据库发生数据更 新, 将所述原始数据行拷贝到Undo表空间, 数据 更新产生新版本数据行, 于所述新版本数据行的 行头存储U ndo指针; 响应于 所述PostgreSQL数据 库发生事务回滚, 将所述原始数据行从所述U ndo 表空间拷贝回原地; 响应于所有会话不再需要访 问所述Undo表空间的所述原始数据行, 清理所述 原始数据行, 释放所述Undo表空间; 本发明公开 的一个方面可以解决PostgreSQL索引膨胀和表 膨胀问题。 权利要求书2页 说明书7页 附图4页 CN 115221145 A 2022.10.21 CN 115221145 A 1.一种基于Undo表空间解决PostgreSQ L数据库表膨胀方法, 包括如下步骤: 监测到PostgreSQL数据库发生数据更新, 将所述原始数据行拷贝到Undo表空间, 数据 更新产生 新版本数据行, 于所述 新版本数据行的行头存 储Undo指针; 响应于所述PostgreSQL数据库发生事务回滚, 将所述原始数据行从所述Undo表空间拷 贝回原地; 响应于所有会话不再需要访问所述Undo表空间的所述原始数据 行, 清理所述原始数据 行, 释放所述Undo表空间。 2.如权利要求1所述的一种基于Undo表空间解决PostgreSQL数据库表膨胀方法, 其特 征在于, 所述方法还 包括如下步骤: 响应于所述PostgreSQL数据库发生事务提交, 将所述Undo表空间存储的所述原始数据 行根据多版本并发控制用于其 他数据库会话。 3.如权利要求1所述的一种基于Undo表空间解决PostgreSQL数据库表膨胀方法, 其特 征在于, 所述监测到PostgreSQL数据库发生数据更新, 将所述原始数据行拷贝到Undo表空 间, 数据更新产生新版本数据行, 于所述新版本数据行的行头存储Undo指针, 包括如下步 骤: 所述PostgreSQ L数据库运行Undo  Launcher进程监测正在运行的操作是否为写操作; 响应于所述Undo  Launcher进程监测到正在运行写操作, 所述Undo  Launcher进程向 Undo Worker进程发送写操作通知; 所述Undo  Worker进程接收到写操作通知, 将所述原 始数据行拷贝至Undo表空间; 所述PostgreSQ L数据库中的写操作原地执 行, 得到新版本数据行; 于所述新版本数据行的行头存储Undo指针, 所述Undo指针指向Undo表空间中所述原始 数据行。 4.如权利要求2所述的一种基于Undo表空间解决PostgreSQL数据库表膨胀方法, 其特 征在于, 所述方法还 包括如下步骤: 通过Undo  Launcher进程监测到所述PostgreSQL数据库发生事务回滚或事务提交操 作, 向Undo  Worker进程发送事务回滚通知或事务 提交通知; 响应于所述Undo  Worker进程接收到事务回滚通知, 将所述原始数据行从所述Undo表 空间拷贝回原地; 响应于所述Undo  Worker进程接收到事务提交通知, 将所述Undo表空间存储的所述原 始数据行根据多版本并发控制用于其 他数据库会话。 5.如权利要求1所述的一种基于Undo表空间解决PostgreSQL数据库表膨胀方法, 其特 征在于, 所述响应于所有会话不再需要访问所述Undo表空间的所述原始数据行, 清理所述 原始数据行, 释放所述Undo表空间, 包括如下步骤: 通过Undo  Launcher进程监控到所有会话不再需要访问所述原始数据行, 通知Undo   Clean Worker进程进行 数据清理; 所述Undo  Clean Worker进程接收到数据清理通知, 对所述原始数据行进行清理, 释放 所述Undo表空间。 6.如权利要求2所述的一种基于Undo表空间解决PostgreSQL数据库表膨胀方法, 其特 征在于, 所述方法还 包括如下步骤:权 利 要 求 书 1/2 页 2 CN 115221145 A 2响应于其他数据库访问所述PostgreSQL数据库内的数据, 其他数据库会话读取 PostgreSQ L数据库内不同版本的数据; 若所述其他数据库会话需要读取旧版本数据, 所述其他数据库会话根据Undo指针从所 述Undo表空间获取原 始数据行。 7.如权利要求1所述的一种基于Undo表空间解决PostgreSQL数据库表膨胀方法, 其特 征在于, 所述方法还 包括如下步骤: 响应于更新所述原始数据行中存在索引的列, 将所述列的旧值对应的索引条目标设为 删除标记, 并将所述列更新后的新 值按照顺序在 索引树中插 入新的索引条目。 8.如权利要求1所述的一种基于Undo表空间解决PostgreSQL数据库表膨胀方法, 其特 征在于, 所述方法还 包括如下步骤: 将所述PostgreSQ L数据库发生的所有数据变更操作写入WAL日志, 并同步到磁 盘上; 所述数据变更操作包括但不限于创建对象、 修改对象、 删除对象、 UPDATE操作、 DELETE 操作、 INSERT操作、 索引变更操作、 事务回滚操作和事务 提交操作。 9.一种基于Undo表空间解决PostgreSQ L数据库表膨胀系统, 包括: 数据更新模块, 用以监测到PostgreSQL数据库发生数据更新, 将所述原始数据行拷贝 到Undo表空间, 数据更新产生 新版本数据行, 于所述 新版本数据行的行头存 储Undo指针; 事务回滚模块, 用以响应于所述PostgreSQL数据库发生事务回滚, 将所述原始数据行 从所述Undo表空间拷贝回原地; 数据清理模块, 响应于所有会话不再需要访问所述所述Undo表空间的所述原始数据 行, 清理所述原 始数据行, 释放所述Undo表空间。 10.如权利 要求9所述的一种基于Undo表空间解决PostgreSQL数据库表膨胀系统, 其特 征在于, 所述系统还 包括: 事务提交模块, 用以响应于所述PostgreSQL数据库发生事务提交, 将所述Undo表空间 存储的所述原 始数据行根据多版本并发控制用于其 他数据库会话; 索引列更新模块, 用以响应于更新所述原始数据行中存在索引的列, 将所述列的旧值 对应的索引条目标设为删除标记, 并将所述列更新后的新值按照顺序在索引树中插入新的 索引条目。权 利 要 求 书 2/2 页 3 CN 115221145 A 3

PDF文档 专利 一种基于Undo表空间解决PostgreSQL数据库表膨胀方法及系统

文档预览
中文文档 14 页 50 下载 1000 浏览 0 评论 0 收藏 3.0分
温馨提示:本文档共14页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种基于Undo表空间解决PostgreSQL数据库表膨胀方法及系统 第 1 页 专利 一种基于Undo表空间解决PostgreSQL数据库表膨胀方法及系统 第 2 页 专利 一种基于Undo表空间解决PostgreSQL数据库表膨胀方法及系统 第 3 页
下载文档到电脑,方便使用
本文档由 SC 于 2024-02-07 12:43:13上传分享
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。