处理Bitmap数据的方法以及装置制造方法及图纸

技术编号:25345867 阅读:26 留言:0更新日期:2020-08-21 17:05
本说明书实施例提供处理Bitmap数据的方法以及装置,其中所述处理Bitmap数据的方法包括:预先将磁盘中的Bitmap区域划分为多个分区以及在磁盘中设置更新区域;响应于写回磁盘的条件被满足,获得所述多个分区各自在内存中对应的脏数据量;根据所述多个分区各自对应的脏数据量,从所述多个分区中查找出脏数据量满足合并至所述更新区域的多个第二分区;将所述多个第二分区在内存中对应的脏数据合并后通过一个或多个I/O记录至所述磁盘中的所述更新区域。

【技术实现步骤摘要】
处理Bitmap数据的方法以及装置
本说明书实施例涉及数据库
,特别涉及一种处理Bitmap数据的方法。本说明书一个或者多个实施例同时涉及一种处理Bitmap数据的装置,一种计算设备,以及一种计算机可读存储介质。
技术介绍
Bitmap(位图):是一种磁盘空间管理结构,代表了有限域中的稠集(denseset),每一个元素至少出现一次,在索引,数据压缩等方面有广泛应用。在Bitmap的管理结构中,内存和磁盘上的数据结构保持一致。配合Bitmap的管理结构,通常在日志快要写满、宕机或者其他情况下,认为写回磁盘的条件被满足,通过触发例如检查点事件(Checkpoint)的方式,把日志中的增量,也即上个检查点事件对应的日志编号之后Bitmap在内存对应的区域中全量未持久化的数据,也称为脏数据,下刷至磁盘的Bitmap区域。由于在写回磁盘的条件被满足时如发生Checkpoint事件,直接将Bitmap进行下刷需要多个I/O来完成,当Bitmap管理的磁盘空间非常大或粒度非常小时,做持久化所需的I/O量也会随之变多,增加了系统的负担。
技术实现思路
有鉴于此,本说明书施例提供了一种处理Bitmap数据的方法。本说明书一个或者多个实施例同时涉及一种处理Bitmap数据的装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。根据本说明书实施例的第一方面,提供了处理Bitmap数据的方法,包括:预先将磁盘中的Bitmap区域划分为多个分区以及在磁盘中设置更新区域;响应于写回磁盘的条件被满足,获得所述多个分区各自在内存中对应的脏数据量;根据所述多个分区各自对应的脏数据量,从所述多个分区中查找出脏数据量满足合并至所述更新区域的多个第二分区;将所述多个第二分区在内存中对应的脏数据合并后通过一个或多个I/O记录至所述磁盘中的所述更新区域。可选地,所述将多个第二分区在内存中对应的脏数据合并后通过一个或多个I/O记录至所述磁盘中的所述更新区域包括:将所述多个第二分区在内存中对应的脏数据中的更新操作编码,所述编码用于记录所述更新操作在所述第二分区中对应的位置;将所述多个第二分区分别对应的编码后的更新操作合并到所述更新区域在内存对应的区域中;通过一个或多个I/O将合并的、编码后的更新操作从内存对应的区域记录至所述磁盘中的所述更新区域。可选地,所述更新区域的大小,小于或等于单个I/O的数据块的大小。可选地,所述响应于写回磁盘的条件被满足,获得所述多个分区各自在内存中对应的脏数据量包括:响应于检查点事件被触发,获得所述多个分区各自在内存中对应的脏数据量;或者,响应于任一个或多个分区在内存对应的区域中的脏数据量达到预设脏数据下刷阈值,获得所述多个分区各自在内存中对应的脏数据量。可选地,还包括:在所述写回磁盘的条件被满足的情况下,根据所述多个分区各自对应的脏数据量,从所述多个分区中查找出脏数据量不满足合并至所述更新区域的第一分区;将所述第一分区在内存中对应的脏数据以每个分区为单位地更新至所述磁盘中的所述第一分区。可选地,所述多个分区中单个分区的大小,小于或等于单个I/O的数据块的大小。可选地,还包括:响应于写回内存的条件被满足,从所述磁盘的所述Bitmap区域加载全量数据到内存对应的区域中,以及,从所述磁盘的所述更新区域读取出更新操作并应用到内存中对应的位置,以及,将日志中最近写回磁盘对应的日志编号之后的增量更新应用到所述Bitmap区域在内存对应的区域中。可选地,还包括:预先为所述Bitmap区域的各个分区分别设置对应的分区标头,所述分区标头用于记录对应的分区在被写入数据时日志当前最新的日志编号;预先为所述更新区域设置对应的更新标头,所述更新标头用于记录更新区域在被写入数据时日志当前最新的日志编号。所述从磁盘的所述更新区域读取出更新操作并应用到内存中对应的位置包括:比较所述更新标头中记录的日志标号与所述第二分区的分区标头中记录的日志标号;如果所述更新标头中记录的日志标号大于所述第二分区的分区标头中记录的日志标号,则从磁盘的所述更新区域读取出更新操作并应用到内存中对应的位置。可选地,还包括:预先为所述Bitmap区域的各个分区分别设置对应的分区标头,所述分区标头用于记录对应的分区中的数据的循环冗余校验码;根据所述分区标头记录的循环冗余校验码校验加载到内存对应区域的数据的正确性。可选地,所述从磁盘的所述更新区域读取出更新操作并应用到内存中对应的位置包括:从磁盘的所述更新区域读取出编码后的更新操作;对所述编码后的更新操作进行解码,得到所述更新操作以及所述更新操作在所述第二分区中对应的位置;将所述更新操作应用到内存中的所述位置。根据本说明书实施例的第二方面,提供了一种处理Bitmap数据的装置,包括:设置模块,被配置为预先将磁盘中的Bitmap区域划分为多个分区以及在磁盘中设置更新区域。写回磁盘响应模块,被配置为响应于写回磁盘的条件被满足,获得所述多个分区各自在内存中对应的脏数据量。合并确定模块,被配置为根据所述多个分区各自对应的脏数据量,从所述多个分区中查找出脏数据量满足合并至所述更新区域的多个第二分区。合并记录模块,被配置为将所述多个第二分区在内存中对应的脏数据合并后通过一个或多个I/O记录至所述磁盘中的所述更新区域。根据本说明书实施例的第三方面,提供了一种计算设备,包括:存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:预先将磁盘中的Bitmap区域划分为多个分区以及在磁盘中设置更新区域;响应于写回磁盘的条件被满足,获得所述多个分区各自在内存中对应的脏数据量;根据所述多个分区各自对应的脏数据量,从所述多个分区中查找出脏数据量满足合并至所述更新区域的多个第二分区;将所述多个第二分区在内存中对应的脏数据合并后通过一个或多个I/O记录至所述磁盘中的所述更新区域。根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现本说明书任意一实施例所述处理Bitmap数据的方法的步骤。本说明书一个实施例实现了处理Bitmap数据的方法,由于该方法预先将磁盘中的Bitmap区域划分为多个分区以及在磁盘中设置更新区域,从而可以响应于写回磁盘的条件被满足,获得所述多个分区各自在内存中对应的脏数据量,根据所述多个分区各自对应的脏数据量,从所述多个分区中查找出脏数据量满足合并至所述更新区域的多个第二分区。由于多个第二分区对应的脏数据能够合并至更新区域,也即查找出了Bitmap上脏数据较少的分区,再通过将所述多个第二分区在内存中对应的脏数据合并后通过一个或多个I/O更新至所述磁盘中的所述更新区域,使得Bitmap上脏数据较少的更新聚集转移到磁盘设置的更新区域中。由于聚集的脏数据的持久化所需I/O的数量小于多个脏数据较少的分区的脏数据分别更新至磁盘所需的I/O的数量,避免了Bitmap中的大量脏位在原位更新的代价,减少I/O下发量,提升了系统的效率。...

【技术保护点】
1.一种处理Bitmap数据的方法,包括:/n预先将磁盘中的Bitmap区域划分为多个分区以及在磁盘中设置更新区域;/n响应于写回磁盘的条件被满足,获得所述多个分区各自在内存中对应的脏数据量;/n根据所述多个分区各自对应的脏数据量,从所述多个分区中查找出脏数据量满足合并至所述更新区域的多个第二分区;/n将所述多个第二分区在内存中对应的脏数据合并后通过一个或多个I/O记录至所述磁盘中的所述更新区域。/n

【技术特征摘要】
1.一种处理Bitmap数据的方法,包括:
预先将磁盘中的Bitmap区域划分为多个分区以及在磁盘中设置更新区域;
响应于写回磁盘的条件被满足,获得所述多个分区各自在内存中对应的脏数据量;
根据所述多个分区各自对应的脏数据量,从所述多个分区中查找出脏数据量满足合并至所述更新区域的多个第二分区;
将所述多个第二分区在内存中对应的脏数据合并后通过一个或多个I/O记录至所述磁盘中的所述更新区域。


2.根据权利要求1所述的方法,所述将多个第二分区在内存中对应的脏数据合并后通过一个或多个I/O记录至所述磁盘中的所述更新区域包括:
将所述多个第二分区在内存中对应的脏数据中的更新操作编码,所述编码用于记录所述更新操作在所述第二分区中对应的位置;
将所述多个第二分区分别对应的编码后的更新操作合并到所述更新区域在内存对应的区域中;
通过一个或多个I/O将合并的、编码后的更新操作从内存对应的区域记录至所述磁盘中的所述更新区域。


3.根据权利要求1所述的方法,所述更新区域的大小,小于或等于单个I/O的数据块的大小。


4.根据权利要求1所述的方法,所述响应于写回磁盘的条件被满足,获得所述多个分区各自在内存中对应的脏数据量包括:
响应于检查点事件被触发,获得所述多个分区各自在内存中对应的脏数据量;
响应于任一个或多个分区在内存对应的区域中的脏数据量达到预设脏数据下刷阈值,获得所述多个分区各自在内存中对应的脏数据量。


5.根据权利要求1所述的方法,还包括:
在所述写回磁盘的条件被满足的情况下,根据所述多个分区各自对应的脏数据量,从所述多个分区中查找出脏数据量不满足合并至所述更新区域的第一分区;
将所述第一分区在内存中对应的脏数据以每个分区为单位地更新至所述磁盘中的所述第一分区。


6.根据权利要求5所述的方法,所述多个分区中单个分区的大小,小于或等于单个I/O的数据块的大小。


7.根据权利要求5所述的方法,还包括:
响应于写回内存的条件被满足,从所述磁盘的所述Bitmap区域加载全量数据到内存对应的区域中,以及,从所述磁盘的所述更新区域读取出更新操作并应用到内存中对应的位置,以及,将日志中最近写回磁盘对应的日志编号之后的增量更新应用到所述Bitmap区域在内存对应的区域中。


8.根据权利要求7所述的方法,还包括:
预先为所述Bitmap区域的各个分区分别设置对应的分区标头,所述分区标头用于记录对应的分区在被写入数据...

【专利技术属性】
技术研发人员:林亚李飞飞王彭成柱石吴飞
申请(专利权)人:阿里云计算有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1