[发明专利]数据库中历史数据的处理方法、装置及系统在审
申请号: | 202011426584.0 | 申请日: | 2020-12-09 |
公开(公告)号: | CN112380193A | 公开(公告)日: | 2021-02-19 |
发明(设计)人: | 李年 | 申请(专利权)人: | 北京海量数据技术股份有限公司 |
主分类号: | G06F16/21 | 分类号: | G06F16/21;G06F16/215;G06F16/22 |
代理公司: | 北京尚钺知识产权代理事务所(普通合伙) 11723 | 代理人: | 王海荣 |
地址: | 100083 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据库 历史数据 处理 方法 装置 系统 | ||
本发明提供数据库中历史数据的处理方法、装置及系统,该方法包括:在创建新的数据库时,同时创建独立的历史表空间,所述历史表空间用于存储历史版本数据和事务信息;执行Vacuum进程时,直接访问所述历史表空间来清除过期数据。本发明能提高过期数据的清理效率。
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据库中历史数据的处理方法、装置及系统。
背景技术
在openGauss和PostgreSQL中,删除只是标记数据为删除标志,所以需要vacuum来定期清理过期数据。但由于数据库只保留了事务标记信息,vacuum必须扫描所有的数据文件的数据块来处理这个问题。因此vacuum对数据量大的表非常慢,而且vacuum冻结结束前不允许执行新事务,导致极端情况下在vacuum冻结时全库不可用。在openGauss和PostgreSQL中vacuum进程经常造成数据库负载过大甚至不可用的问题。
发明内容
有鉴于此,本发明提供一种数据库中历史数据的处理方法、装置及系统,能提高过期数据的清理效率。
一方面,本发明提供一种数据库中历史数据的处理方法,包括:在创建新的数据库时,同时创建独立的历史表空间,所述历史表空间用于存储历史版本数据和事务信息;
执行Vacuum进程时,直接访问所述历史表空间来清除过期数据。
进一步地,在同时创建独立的历史表空间的步骤之后包括:
接收用户的历史表空间管理信息,并根据所述历史表空间管理信息调整所述历史表空间的大小。
进一步地,在同时创建独立的历史表空间的步骤之后包括:
在收到用户的SQL处理信息时,记录SQL处理之前的历史版本数据和事务信息至所述历史表空间。
进一步地,在同时创建独立的历史表空间的步骤之后包括:
接收事务回滚信息,根据所述事实回滚信息中的事务在所述历史表空间的数据信息,回滚所述事务的数据改变;
数据库在事务中断后重启恢复时,读取所述中断的事务在所述历史表空间中的数据信息,并回滚所述中断的事务的数据改变;
在第一事务在改变目标位置的数据,并且第二事务开始读取所述目标位置的数据时,数据库根据历史表空间的事务信息,仅允许所述第二事务获取开始读取所述目标位置的数据时间之前的所述目标位置的数据。
进一步地,在同时创建独立的历史表空间的步骤之后包括:
在收到包括改变目标数据请求的事务信息后,若收到用于查询所述目标数据改变之前的数据值的请求,且确认所述历史表空间存有目标数据改变之前的数据值,则通过SQL语句从所述历史表空间获取所述目标数据改变之前的数据值。
再一方面,本发明还提供一种数据库中历史数据的处理装置,包括:
历史表空间创建模块,用于在创建新的数据库时,同时创建独立的历史表空间,所述历史表空间用于存储历史版本数据和事务信息;
Vacuum模块,用于执行时,直接访问所述历史表空间来清除过期数据。
进一步地,所述的数据库中历史数据的处理装置,其特征在于,还包括:
历史表空间管理模块,用于接收用户的历史表空间管理信息,并根据所述历史表空间管理信息调整所述历史表空间的大小;
SQL模块,用于在收到用户的SQL处理信息时,记录SQL处理之前的历史版本数据和事务信息至所述历史表空间。
进一步地,所述的数据库中历史数据的处理装置,其特征在于,还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京海量数据技术股份有限公司,未经北京海量数据技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011426584.0/2.html,转载请声明来源钻瓜专利网。