数据库系统前映像空间管理方法和装置与流程

文档序号:37594697发布日期:2024-04-18 12:30阅读:6来源:国知局
数据库系统前映像空间管理方法和装置与流程

本技术涉及数据库,尤其涉及一种数据库系统前映像空间管理方法和装置。


背景技术:

1、基于多版本并发控制(multi-version concurrency control,mvcc)技术的关系数据库(例如,oracle、mysql、postgresql等)都是采用保留前映像(before image,bi)的方式实现多版本。数据库在更改数据前,会先保留原始版本再进行修改,被保存下来的原始版本即为前映像。在数据库的并发读操作中,节点会根据时间点判断最新数据版本是否满足可见性,如果当前版本太新,则不断回滚或搜索当前版本的前映像,直到满足读操作可见为止。使用mvcc的主要优势有:1)读写不等待,并发性能高,2)可获得同一时间点一致的数据。

2、当前mvcc类型的数据库通常采用数据库管理员手工配置或者系统按最保险方式设置来管理前映像空间,因此,随着当前业务量急速增长和业务负载不断变化的用户需求下,会产生前映像空间回收不及时、内存空间磁盘空间占用过多、配置方式不合理从而引起执行错误等技术问题。


技术实现思路

1、本技术实施例提供了一种数据库系统前映像空间管理方法和装置,可以由节点基于运行的读操作,自适应扩展或者缩减前映像空间,从而提升内存空间、磁盘空间利用率,以及数据库系统性能。

2、第一方面,本技术提供了一种数据库系统前映像空间管理方法,所述方法包括:获取第一读操作的起始时间;其中,所述第一读操作为第一时刻正在执行的多个读操作中起始时间最早的读操作,所述前映像空间中包含至少一个回滚数据块,所述至少一个回滚数据块在所述第一时刻对应第一有效期;所述至少一个回滚数据块中包括第一回滚数据块,所述第一回滚数据块的第一有效期从第二时刻起算,所述第二时刻为对所述第一回滚数据块执行最后一次写操作的时间,所述第一时刻为第一监控周期中的任一监控时刻;基于第一时长对所述第一有效期进行更新,得到第二有效期;其中,所述第一时长为所述第一读操作的起始时间和所述第一时刻之间的时间间隔;基于所述第二有效期管理所述前映像空间。

3、从技术效果上看,本技术通过在第一监控周期中每个监控时刻,采集该时刻处正在执行的读操作中,已执行时间最长的读操作的执行时间(即第一时长),然后基于第一时长更新前映像空间中回滚数据块的有效期,即在每个监控时刻基于系统执行读操作的运行情况来实时更新回滚数据块的有效期,从而在前映像空间中存在失效的回滚数据块时,便可及时释放磁盘空间,有效提升磁盘空间利用率。

4、在一种可行的实施方式中,当所述第一时长大于或等于所述第一有效期时,所述第二有效期大于所述第一有效期;当所述第一时长小于所述第一有效期时,所述第二有效期小于所述第一有效期。

5、从技术效果上看,在第一监控周期中的任一监控时刻上,若第一时长(起始时间最早的当前读操作)大于等于回滚数据块的第一有效期时(即回滚数据块在此时刻对应的有效期),说明第一读操作的结束时间很可能会晚于回滚数据块的失效时刻(即第二时刻与第一有效期相加后得到的时刻),此时增加有效期的长度(即得到第二有效期),便可确保第一读操作在执行过程中读取到对应历史版本的数据,确保多版本并发时的读一致性;同理,若第一时长小于回滚数据块的第一有效期时,可以对第一有效期进行适当减小,便于后续存在写操作时,释放一定的前映像空间,减少磁盘占用,提升磁盘利用率。

6、在一种可行的实施方式中,所述第二有效期为所述第一时长和预设时长的和,且所述第二有效期大于或等于预设时长。

7、从技术效果上看,由于回滚数据块的有效期的起算时间在第一读操作的起始时间之后,所以将第二有效期的长度设为第一读操作已执行时长(即第一时长)和预设时长的和时,就能确保回滚数据块的失效时刻晚于读操作的结束时刻,即使得多个并发读操作都能读取到对应历史版本的数据(即前映像),从而有效保证读一致性。此外,通过在每个监控时刻对回滚数据块的有效期进行更新,使得有效期和当前正在执行的读操作的时长相匹配:读操作执行时间较长时,自动增加有效期的长度;读操作执行时间较短时,则自动缩减有效期的长度,进而可以基于动态更新的有效期动态扩展或缩减前映像空间的容量,提升数据库系统的性能。

8、在一种可行的实施方式中,所述第一监控周期中包含第三时刻,所述第三时刻为所述第一时刻在所述第一监控周期中的下一监控时刻,在所述第一时刻和所述第三时刻之间包含第四时刻,所述第四时刻对应至少一个写操作;所述基于所述第二有效期管理所述前映像空间,包括:当所述第一回滚数据块的失效时刻早于所述第四时刻,基于所述至少一个写操作向所述第一回滚数据块中写入前映像数据;当所述至少一个回滚数据块中每个回滚数据块的失效时刻都晚于所述第四时刻时,扩展所述前映像空间,并基于所述至少一个写操作向扩展的所述前映像空间中写入前映像数据。

9、其中,第二有效期也是从第二时刻起算。

10、从技术效果上看,本技术通过具体读操作执行情况动态更新回滚数据块的有效期,当数据库中存在并发的写操作时,可以实时更新的有效期来判断回滚数据块是否有效(即写操作是否可以覆盖回滚数据块),进而决定直接覆盖失效的回滚数据块,或者回滚数据块都有效时,扩展前映像空间,增加回滚数据块的数量,以写入新数据。即本技术基于数据库当前读操作的执行情况来确定如何写入前映像数据的过程,可以较好地适应数据库的运行情况,提升数据库的运行性能。

11、在一种可行的实施方式中,所述第一时刻和所述第三时刻之间包含第五时刻,所述至少一个回滚数据块中包括n个回滚数据块,所述n个回滚数据块的失效时刻早于所述第五时刻;所述基于所述第二有效期管理所述前映像空间,还包括:在所述第五时刻缩减所述前映像空间的容量;其中,所述前映像空间缩减的容量等于所述n个回滚数据块的容量,所述第五时刻为第二监控周期在所述第一时刻和所述第三时刻之间的任一监控时刻,n为正整数。

12、从技术效果上看,本技术可以通过实时更新的有效期来监控前映像空间中回滚数据块的有效性,从而在前映像空间中存在失效的回滚数据块时,对前映像空间进行缩减,及时释放磁盘空间,提升磁盘空间利用率和系统性能。

13、第二方面,本技术提供了一种数据库系统前映像空间的管理方法,所述数据库系统包括m个节点,所述m个节点中包括第一节点,所述第一节点为所述m个节点中的任意一个,所述方法包括:所述第一节点获取第一读操作的起始时间;其中,所述第一节点在第一时刻包含正在执行的多个读操作,所述第一读操作为所述多个读操作中起始时间最早的读操作;所述第一节点对应的前映像空间中包含至少一个回滚数据块,所述至少一个回滚数据块在所述第一时刻对应第一有效期;所述至少一个回滚数据块中包括第一回滚数据块,所述第一回滚数据块的第一有效期从第二时刻起算,所述第二时刻为对所述第一回滚数据块执行最后一次写操作的时间,所述第一时刻为第一监控周期中的任一监控时刻;将所述第一节点上的第二有效期和剩余m-1个节点向所述第一节点分别发送的m-1个第二有效期中的最大值,作为所述至少一个回滚数据块的第三有效期;其中,所述第一节点上的第二有效期是基于所述第一时长对所述第一有效期进行更新得到的,所述第一时长为所述第一读操作的起始时间和所述第一时刻之间的时间间隔;所述第一节点基于所述第三有效期管理所述前映像空间。

14、从技术效果上看,在多节点架构中,对回滚数据块有效期的更新过程中,会同时考虑本节点和其余节点上的第二有效期,将其中的最大值作为回滚数据块的有效期(即第三有效期),这样便可在基于本节点读操作执行情况动态调整有效期的同时还能兼顾其余节点从本节点读取数据时的一致性,即在基于动态更新的有效期管理前映像空间的过程中还会兼顾多节点之间数据读取的一致性。

15、在一种可行的实施方式中,当所述第一时长大于或等于所述第一有效期时,所述第一节点上的第二有效期大于所述第一有效期;当所述第一时长小于所述第一有效期时,所述第一节点上的第二有效期小于所述第一有效期。

16、在一种可行的实施方式中,所述第一节点上的第二有效期为所述第一时长和预设时长的和,且所述第一节点上的第二有效期大于或等于预设时长。

17、在一种可行的实施方式中,所述第一监控周期中包含第三时刻,所述第三时刻为所述第一时刻在所述第一监控周期中的下一监控时刻,在所述第一时刻和所述第三时刻之间包含第四时刻,所述第四时刻对应至少一个写操作;所述第一节点基于所述第三有效期管理所述前映像空间,包括:当所述第一回滚数据块的失效时刻早于所述第四时刻,基于所述至少一个写操作向所述第一回滚数据块中写入前映像数据;当所述至少一个回滚数据块中每个回滚数据块的失效时刻都晚于所述第四时刻时,扩展所述前映像空间,并基于所述至少一个写操作向扩展的所述前映像空间中写入前映像数据。

18、在一种可行的实施方式中,所述第一时刻和所述第三时刻之间包含第五时刻,所述至少一个回滚数据块中包括n个回滚数据块,所述n个回滚数据块的失效时刻早于所述第五时刻;所述第一节点基于所述第三有效期管理所述前映像空间,还包括:在所述第五时刻缩减所述前映像空间的容量;其中,所述前映像空间缩减的容量等于所述n个回滚数据块的容量,所述第五时刻为第三监控周期在所述第一时刻和所述第三时刻之间的任一监控时刻,n为正整数。

19、应当理解,上述多节点架构下实施例所带来的技术效果可以参照前述单节点下相应实施例中的描述,此处不再赘述。

20、第三方面,本技术提供了一种数据库系统前映像空间的管理装置,所述装置包括:获取单元,用于获取第一读操作的起始时间;其中,所述第一读操作为第一时刻正在执行的多个读操作中起始时间最早的读操作,所述前映像空间中包含至少一个回滚数据块,所述至少一个回滚数据块在所述第一时刻对应第一有效期;所述至少一个回滚数据块中包括第一回滚数据块,所述第一回滚数据块的第一有效期从第二时刻起算,所述第二时刻为对所述第一回滚数据块执行最后一次写操作的时间,所述第一时刻为第一监控周期中的任一监控时刻;处理单元,用于基于第一时长对所述第一有效期进行更新,得到第二有效期;其中,所述第一时长为所述第一读操作的起始时间和所述第一时刻之间的时间间隔;所述处理单元,还用于基于所述第二有效期管理所述前映像空间。

21、在一种可行的实施方式中,当所述第一时长大于或等于所述第一有效期时,所述第二有效期大于所述第一有效期;当所述第一时长小于所述第一有效期时,所述第二有效期小于所述第一有效期。

22、在一种可行的实施方式中,所述第二有效期为所述第一时长和预设时长的和,且所述第二有效期大于或等于预设时长。

23、在一种可行的实施方式中,所述第一监控周期中包含第三时刻,所述第三时刻为所述第一时刻在所述第一监控周期中的下一监控时刻,在所述第一时刻和所述第三时刻之间包含第四时刻,所述第四时刻对应至少一个写操作;在所述处理单元基于所述第二有效期管理所述前映像空间的方面,所述处理单元具体用于:当所述第一回滚数据块的失效时刻早于所述第四时刻,基于所述至少一个写操作向所述第一回滚数据块中写入前映像数据;当所述至少一个回滚数据块中每个回滚数据块的失效时刻都晚于所述第四时刻时,扩展所述前映像空间,并基于所述至少一个写操作向扩展的所述前映像空间中写入前映像数据。

24、在一种可行的实施方式中,所述第一时刻和所述第三时刻之间包含第五时刻,所述至少一个回滚数据块中包括n个回滚数据块,所述n个回滚数据块的失效时刻早于所述第五时刻;在所述处理单元基于所述第二有效期管理所述前映像空间的方面,所述处理单元还用于:在所述第五时刻缩减所述前映像空间的容量;其中,所述前映像空间缩减的容量等于所述n个回滚数据块的容量,所述第五时刻为第二监控周期在所述第一时刻和所述第三时刻之间的任一监控时刻,n为正整数。

25、第四方面,本技术提供了一种计算机设备,所述计算机设备包括处理器和存储器;其中,所述处理器,用于获取第一读操作的起始时间;其中,所述第一读操作为第一时刻正在执行的多个读操作中起始时间最早的读操作,所述前映像空间中包含至少一个回滚数据块,所述至少一个回滚数据块在所述第一时刻对应第一有效期;所述至少一个回滚数据块中包括第一回滚数据块,所述第一回滚数据块的第一有效期从第二时刻起算,所述第二时刻为对所述第一回滚数据块执行最后一次写操作的时间,所述第一时刻为第一监控周期中的任一监控时刻;所述存储器,用于缓存所述至少一个回滚数据块;所述处理器,还用于基于第一时长对所述第一有效期进行更新,得到第二有效期,以及基于所述第二有效期管理所述前映像空间;其中,所述第一时长为所述第一读操作的起始时间和所述第一时刻之间的时间间隔。

26、第五方面,本技术提供了一种数据库系统,所述数据库系统包括m个节点和至少一个存储服务器,所述m个节点中包括第一节点,所述第一节点为所述m个节点中的任意一个;其中,所述第一节点,用于获取第一读操作的起始时间;其中,所述第一节点在第一时刻包含正在执行的多个读操作,所述第一读操作为所述多个读操作中起始时间最早的读操作;所述第一节点对应的前映像空间中包含至少一个回滚数据块,所述至少一个回滚数据块在所述第一时刻对应第一有效期;所述至少一个回滚数据块中包括第一回滚数据块,所述第一回滚数据块的第一有效期从第二时刻起算,所述第二时刻为对所述第一回滚数据块执行最后一次写操作的时间,所述第一时刻为第一监控周期中的任一监控时刻;所述第一节点,还用于将所述第一节点上的第二有效期和剩余m-1个节点向所述第一节点分别发送的m-1个第二有效期中的最大值,作为所述至少一个回滚数据块的第三有效期,并基于所述第三有效期管理所述前映像空间;其中,所述第一节点上的第二有效期是基于所述第一时长对所述第一有效期进行更新得到的,所述第一时长为所述第一读操作的起始时间和所述第一时刻之间的时间间隔;所述至少一个存储服务器,用于存储所述至少一个回滚数据块。

27、第六方面,本技术实施例提供了一种芯片系统,所述芯片系统包括至少一个处理器,存储器和接口电路,所述存储器、所述接口电路和所述至少一个处理器通过线路互联,所述至少一个存储器中存储有指令;所述指令被所述处理器执行时,上述第一方面或第二方面中任一所述的方法得以实现。

28、第七方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,该计算机程序被执行时,上述第一方面或第二方面中任意一项所述的方法得以实现。

29、第八方面,本技术实施例提供了一种计算机程序,该计算机程序包括指令,当该计算机程序被执行时,上述第一方面或第二方面中任意一项所述的方法得以实现。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1