[发明专利]数据库引擎文件处理方法及装置有效
申请号: | 202110346153.1 | 申请日: | 2021-03-31 |
公开(公告)号: | CN112732702B | 公开(公告)日: | 2021-06-25 |
发明(设计)人: | 刘鑫伟;张世维;杨绍鹏 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F16/215 | 分类号: | G06F16/215;G06F16/21 |
代理公司: | 广州三环专利商标代理有限公司 44202 | 代理人: | 熊永强;贾允 |
地址: | 518057 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据库 引擎 文件 处理 方法 装置 | ||
1.一种数据库引擎文件处理方法,其特征在于,所述方法包括:
响应于用于消除待处理数据表的引擎文件中空洞的文件处理指令,将所述待处理数据表的引擎文件确定为待处理引擎文件,生成与所述待处理引擎文件对应的第一引擎文件和第二引擎文件;
使用所述第一引擎文件处理对所述待处理数据表的读写操作;
遍历所述待处理引擎文件中的每条第一数据记录,确定所述第一数据记录是否为有效记录;在所述第一数据记录为有效记录的情况下,将所述第一数据记录写入至所述第二引擎文件中;
将所述第一引擎文件中的各条第二数据记录合并至所述第二引擎文件中;所述将所述第一引擎文件中的各条第二数据记录合并至所述第二引擎文件中,包括:对于所述第一引擎文件中的每条所述第二数据记录,获取所述第二数据记录的标记和第一关键值,所述标记是在所述第二数据记录存储时设置的,所述第一关键值用于对所述第二数据记录进行唯一标识;若所述标记指示所述第二数据记录是新插入的数据记录,则将所述第二数据记录写入至所述第二引擎文件中;若所述标记指示所述第二数据记录是已修改的数据记录,则从所述第二引擎文件中将第二关键值与所述第一关键值相同的第一数据记录替换为所述第二数据记录,所述第二关键值用于对所述第一数据记录进行唯一标识;若所述标记指示所述第二数据记录是待删除的数据记录,则从所述第二引擎文件中将所述第二关键值与所述第一关键值相同的所述第一数据记录删除;
将合并后的所述第二引擎文件设置为所述待处理数据表的引擎文件。
2.根据权利要求1所述的方法,其特征在于,在所述遍历所述待处理引擎文件中的每条第一数据记录,确定所述第一数据记录是否为有效记录之前,所述方法还包括:
获取所述待处理引擎文件的初始哈希桶配置;
根据所述初始哈希桶配置中各个初始哈希桶对应数据链表的长度,确定目标哈希桶数量;
根据所述目标哈希桶数量创建目标哈希桶配置;
将所述目标哈希桶配置确定为所述第二引擎文件的哈希桶配置。
3.根据权利要求2所述的方法,其特征在于,所述根据所述初始哈希桶配置中各个初始哈希桶对应数据链表的长度,确定目标哈希桶数量,包括:
基于所述初始哈希桶配置中各个初始哈希桶对应数据链表的长度,从所有所述长度中选取最大值,以作为最大链表长度;
获取所述初始哈希桶配置中所述初始哈希桶的数量;
若所述最大链表长度超过预设长度阈值,则将预设倍数与所述初始哈希桶的数量之间的乘积,确定为所述目标哈希桶数量;
若所述最大链表长度未超过所述预设长度阈值,则将所述初始哈希桶的数量,确定为所述目标哈希桶数量。
4.根据权利要求1所述的方法,其特征在于,所述遍历所述待处理引擎文件中的每条第一数据记录,确定所述第一数据记录是否为有效记录,包括:
遍历所述待处理引擎文件中的每条所述第一数据记录,获取所述第一数据记录中的头部数据;
根据所述头部数据中的校验标识符确定所述第一数据记录是否为有效记录,所述校验标识符是所述第一数据记录在存储时设置的。
5.根据权利要求4所述的方法,其特征在于,所述校验标识符包括初始魔数值和初始循环冗余校验值;
所述根据所述头部数据中的校验标识符确定所述第一数据记录是否为有效记录,包括:
确定所述初始魔数值与预设魔数值是否一致;
若不一致,则判定所述第一数据记录不是所述有效记录;
若一致,则计算所述第一数据记录对应的新循环冗余校验值;
检测所述新循环冗余校验值与所述初始循环冗余校验值是否一致;
若一致,则判定所述第一数据记录是所述有效记录;
若不一致,则判定所述第一数据记录不是所述有效记录。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110346153.1/1.html,转载请声明来源钻瓜专利网。