一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于值日志的数据库闪回查询方法、系统、存储介质及设备与流程

2022-02-22 04:44:12 来源:中国专利 TAG:


1.本发明属于数据库技术领域,具体涉及一种基于值日志的数据库闪回查询方法、系统、存储介质及设备。


背景技术:

2.闪回查询可以使数据库回退到指定时间点的状态。传统数据库如oracle,闪回查询是基于回滚段来实现的。回滚段是磁盘上的一段空间,用于存储数据修改前的值。如oracle要支持闪回查询,需要先设置回滚段为自动管理状态,然后设置回滚段的最大保留时间。oracle默认回滚段的最大保留时间为15分钟,意味着设置回滚段为自动管理状态后,默认状态下,oracle可以支持距离系统当前系统时间直到之前15分钟之内的闪回查询。由于回滚段的空间有限,只支持有限时间段内的闪回查询。如果需要修改回滚段的设置,还需要重启数据库服务器。


技术实现要素:

3.发明目的:本发明提供了一种基于值日志的数据库闪回查询方法、系统、存储介质和设备,旨在能够使数据库实现自初始化到当前时刻的任意有效闪回点的闪回查询。
4.技术方案:本发明一方面提供了基于值日志的数据库闪回查询方法,包括:
5.s1、在将内存中的物理记录写入值日志文件中时,值日志主键索引保存所述物理记录在值日志文件中的偏移地址;
6.s2、接收并解析闪回查询请求,确定闪回点;
7.s3、从闪回点中确定闪回查询截止偏移地址,并通过索引检索值日志,查找偏移地址小于等于闪回查询截止偏移地址的数据。
8.作为优选,当闪回查询请求中包含的闪回点为截止lsn时,查询所述截止lsn对应的值日志文件数据块,在所述数据块内顺序扫描物理记录,得到截止lsn对应的物理记录的偏移地址,即为闪回查询截止偏移地址。
9.作为优选,值日志系统在值日志文件数据块的头部写入该数据块第一条物理记录写入的时间,和/或在值日志文件数块的尾部写入该数据块最后一条物理记录写入的时间;
10.当闪回查询请求中包含的闪回点为截止时间时,查找与所述截止时间对应的值日志文件数据块,查找到的数据块的偏移地址即为闪回查询截止偏移地址。
11.作为另一种优选,值日志系统建立与值日志文件相对应的时间表,定时在所述时间表中插入时间记录,所述时间记录包括当前时间以及与当前时间最接近的物理记录;
12.当闪回查询请求中包含的闪回点为截止时间时,查找时间表中与所述截止时间最接近的时间记录,所述时间记录中包含的物理记录的偏移地址即为闪回查询截止偏移地址。
13.作为另一种优选,值日志系统先将当前系统时间作为数据插入时间保存到物理记录中,再将物理记录写入值日志文件;
14.当闪回查询请求中包含的闪回点为截止时间时,查找数据插入时间与所述截止时间对应的物理记录,查找到的物理记录的偏移地址即为闪回查询截止偏移地址。
15.另一方面,本发明还公开了实现上述查询方法的基于值日志的数据库闪回查询系统,包括:
16.偏移地址保存模块,用于在将内存中的物理记录写入值日志文件中时,保存所述物理记录在值日志文件中的偏移地址;
17.闪回点确定模块,用于根据闪回查询请求确定闪回点;
18.闪回查询截止偏移地址确定模块,用于从闪回点中确定闪回查询截止偏移地址;
19.闪回查询操作模块,用于通过索引检索值日志,查找偏移地址小于等于闪回查询截止偏移地址的数据。
20.作为优选,当闪回查询请求中包含的闪回点为截止lsn时,所述闪回查询截止偏移地址确定模块确定闪回查询截止偏移地址的步骤为:
21.查询所述截止lsn对应的值日志文件数据块,在所述数据块内顺序扫描物理记录,得到截止lsn对应的物理记录的偏移地址,即为闪回查询截止偏移地址。
22.作为优选,值日志系统先将当前系统时间作为数据插入时间保存到物理记录中,再将物理记录写入值日志文件;
23.所述闪回查询截止偏移地址确定模块确定闪回查询截止偏移地址的步骤为:当闪回查询请求中包含的闪回点为截止时间时,查找数据插入时间与所述截止时间对应的物理记录,查找到的物理记录的偏移地址即为闪回查询截止偏移地址。
24.另一方面,本发明还公开了一种计算机可读取存储介质,其上存储有计算机指令,所述计算机指令运行时执行上述数据库闪回查询方法。
25.另一方面,本发明还公开了一种数据库闪回查询设备,包括处理器及存储介质,所述存储介质为上述计算机可读取存储介质;所述处理器加载并执行所述存储介质中的指令及数据用于实现上述数据库闪回查询方法。
26.有益效果:本发明公开的基于值日志的数据库闪回查询方法根据值日志文件中物理记录的偏移地址进行闪回查询,可以闪回到自初始化数据库到当前适可而止的任意有效截止偏移地址所对应的时间,同时无需对系统做任何特殊设置,不受回滚段空间限制。
附图说明
27.图1为本发明公开基于值日志的数据库闪回查询方法的流程图;
28.图2为本发明公开基于值日志的数据库闪回查询系统的组成示意图;
29.图3为本发明公开基于值日志的数据库闪回查询设备的组成示意图。
具体实施方式
30.下面结合附图和具体实施方式,进一步阐明本发明。
31.实施例一:
32.申请号为2021107280253的中国发明专利申请中公开了一种数据和日志一体化的值日志实现方法,其中通过值日志实现了数据库和数据处理系统持久化过程中只有顺序写、避免写多份数据的优点。本发明基于前述发明专利申请,提出了一种基于值日志的数据
库闪回查询方法,如图1所示,包括:
33.s1、在将内存中的物理记录写入值日志文件中时,值日志主键索引保存所述物理记录在值日志文件中的偏移地址;
34.申请号为2021107280253的中国发明专利申请中,值日志的实现过程为:(1)数据处理系统中的工作线程或进程解析接收到的操作请求,确定操作类型;(2)当操作类型是数据更新操作时,工作线程或进程将删除、修改操作都转化为插入操作;(3)工作线程或进程在内存中执行插入操作并在内存中生成和最终写入到磁盘存储设备的相同格式的物理记录,随后将内存中的物理记录直接写入到值日志文件,或先写入到值日志缓冲区,等待写盘线程或进程刷盘,待刷盘完成后,把操作结果发送给客户端;(4)启用值日志缓冲区时,写盘线程或进程不断将值日志缓冲区的物理记录顺序写入到值日志文件末尾,并通知工作线程或进程完成刷盘任务。上述1-4步骤执行完毕后内存中修改的数据完成了写入磁盘的持久化操作。本发明实施例中,在步骤(3)中内存中的物理记录写入值日志文件中时,值日志主键索引保存所述物理记录在值日志文件中的偏移地址。由于物理记录是追加写入值日志文件尾部,因此物理记录的偏移地址随着不断地写入数据而增大。
35.s2、接收并解析闪回查询请求,确定闪回点;
36.工作线程/进程接收用户发送的闪回查询请求,该闪回查询请求中包含了闪回点;本实施例中闪回点为偏移地址。
37.s3、从闪回点中确定闪回查询截止偏移地址,并通过索引检索值日志,查找偏移地址小于等于闪回查询截止偏移地址的数据。
38.工作线程/进程将闪回点对应的偏移地址确定为闪回查询截止偏移地址;由于主键索引保存了物理记录的偏移地址,通过索引检索值日志,查找到偏移地址小于等于闪回查询截止偏移地址的数据并返回;物理记录偏移地址大于闪回查询截止偏移地址的数据被认定为对当前查询不可见。索引检索数据的详细内容见申请号为2021109183737的中国专利申请。为了快速检索到结果,本实施例中主键索引通过二分查找进行数据检索。
39.也可以只针对部分表指定截止偏移地址。在主键索引中,键值是由实际键值和表名构成,当需要只针对部分表进行查询时候,输入实际主键值和需要查询的表直接在主键索引中进行二分查找即可定位对应表的最大偏移量,系统只对这部分表的索引进行访问时会对偏移地址进行检查。最后返回符合用户限定的截止偏移地址内的最新版本可见数据。
40.实现本实施例中查询方法的数据库闪回查询系统如图2所示,包括:
41.偏移地址保存模块,用于在将内存中的物理记录写入值日志文件中时,保存所述物理记录在值日志文件中的偏移地址;
42.闪回点确定模块,用于根据闪回查询请求确定闪回点;
43.闪回查询截止偏移地址确定模块,用于从闪回点中确定闪回查询截止偏移地址;
44.闪回查询操作模块,用于通过索引检索值日志,查找偏移地址小于等于闪回查询截止偏移地址的数据。
45.实施例二:
46.本实施例与实施例一的区别在于:闪回查询请求中包含的闪回点为截止lsn,而不是截止偏移地址。
47.整个值日志是由数据块和物理块构成,其中物理块由一定数量数据块构成,数据
块中记录有lsn信息。在值日志系统中,值日志文件可以简单理解为是由至少一个以lsn升序的数据块构成,数据块内的物理记录以lsn升序保存。因此,采用二分法根据lsn在物理块内确定对应的数据块,然后在该数据块内顺序扫描物理记录,得到截止lsn对应的物理记录的偏移地址,该偏移地址即为闪回查询截止偏移地址。之后按照实施例一中的步骤通过索引检索值日志,查找偏移地址小于等于闪回查询截止偏移地址的数据。
48.实施例三:
49.本实施例与实施例一的区别在于:值日志系统在值日志文件数据块的头部写入该数据块第一条物理记录写入的时间,也可以在值日志文件数块的尾部写入该数据块最后一条物理记录写入的时间;即每个数据块中记录了该数据块第一次写或最后一次写的时间,也可以同时记录第一次写和最后一次写的时间。
50.当闪回查询请求中包含的闪回点为截止时间时,查找与所述截止时间对应的值日志文件数据块。此处可以根据数据块第一次写的时间或最后一次写的时间来查找,即第一次写的时间或最后一次写的时间小于等于所述截止时间,且与所述截止时间最接近的数据块;查找到的数据块的偏移地址即为闪回查询截止偏移地址,之后按照实施例一中的步骤通过索引检索值日志,查找偏移地址小于等于闪回查询截止偏移地址的数据。本实施例方法适用于对时间精度要求不高的情况。
51.实施例四:
52.本实施例与实施例三类似,均是已截止时间作为闪回点。
53.本实施例与实施例一的区别在于:值日志系统建立与值日志文件相对应的时间表,定时在所述时间表中插入时间记录,所述时间记录包括当前时间以及与当前时间最接近的物理记录;
54.当闪回查询请求中包含的闪回点为截止时间时,查找时间表中与所述截止时间最接近的时间记录,所述时间记录中包含的物理记录的偏移地址即为闪回查询截止偏移地址,之后按照实施例一中的步骤通过索引检索值日志,查找偏移地址小于等于闪回查询截止偏移地址的数据。
55.实施例五:
56.本实施例与实施例一的区别在于:值日志系统先将当前系统时间作为数据插入时间保存到物理记录中,再将物理记录写入值日志文件;由此,值日志文件中的每条物理记录中均包含了该物理记录的数据插入时间;
57.当闪回查询请求中包含的闪回点为截止时间时,查找数据插入时间与截止时间对应的物理记录,查找到的物理记录的偏移地址即为闪回查询截止偏移地址。
58.本实施例中的方法可以精确找到与闪回点截止时间最接近,且小于等于所述截止时间的物理记录,适用于对时间精度要求不高的情况。
59.实施例六:
60.本实施例假定闪回查询的关键字为flashback(表示含有闪回查询),后面接闪回点,闪回点可以是offset(表示闪回截止偏移地址),或lsn(表示闪回截止lsn),或timestamp(表示闪回时间点)。
61.在值日志系统中存在一张表account的列信息如表1所示,系统的页大小假定为10000字节:
62.表1 account表的列信息
63.列名列类型列含义idvarchar(20)账户id,主键,索引中含有记录插入时的系统时间信息namevarchar(20)账户姓名balanceint账户余额
64.表account中插入3条记录,如表2所示:
65.表2 account表的数据操作历史
66.操作时间操作类型对应sql2021-07-01 13:00:00插入insert into account values('a001','张三',110);2021-07-15 14:00:00插入insert into account values('a002','李四',120);2021-07-16 17:30:00插入insert into account values('a003','王五',130);
67.插入后,用户通过如下语句查询到表account中所有的数据信息、数据偏移地址、lsn信息和插入时的时间戳(物理记录中包含了插入时间):
68.select offset,lsn,inserting_time,id,name,balance from account;
69.查询结果如表3所示:
70.表3 account表的数据信息
71.offsetlsninserting_timeidnamebalance6401001012021-07-01 13:00:00a001张三1106402001022021-07-15 14:00:00a002李四1206403001032021-07-16 17:30:00a003王五130
72.根据表3中的offset,可以得知account表的数据都在第65页上,该方法执行闪回查询的具体步骤为:
73.s101:用户在客户端执行下面的查询语句:
74.select*from account flashback timesamp'2021-07-01 13:00:00.000';
75.数据库/kv等数据处理系统接收到查询请求。
76.s102:工作线程/进程对用户的数据查询语句进行解析。
77.s103:工作线程/进程根据s102中数据查询语句解析的结果,确定闪回点。查询语句有闪回查询关键字flashback,表示要做闪回查询,且带有timestamp关键字,表示是根据截止时间来限定闪回时间点,要查询的是截止时间点'2021-07-01 13:00:00.000',该语句可以查询到的account表可见的最新数据。
78.s104:工作线程/进程先采用二分法找到截止时间点2021-07-01 13:00:00.000对应的数据块为第65页,顺序扫描该页记录,可以得知对应的截止偏移地址为640100,也就是account表的查询结果的偏移地址必须小于等于640100,闪回查询时间是2021-07-01 13:00:00.000,偏移地址为640200和640300的记录在此时间点不可见。
79.然后工作线程/进程对account表基于主键进行检索,索引记录中的偏移地址需要小于等于640100,遍历索引后,可以发现只有主键值为'a001'的记录符合条件,查询结果如表4所示:
80.表4 account表闪回查询结果
81.idnamebalance'a001''张三'110
82.s105:工作线程/进程将上面步骤中检索到的数据返回给客户。
83.从数据库闪回查询系统角度进行闪回查询的步骤下:
84.值日志系统在将内存中的物理记录写入值日志文件中时,偏移地址保存模块在值日志主键索引中保存所述物理记录在值日志文件中的偏移地址;
85.用户在客户端执行下面的查询语句:
86.select*from account flashback offset 640250;
87.闪回点确定模块根据上述查询语句确定闪回点;
88.闪回查询截止偏移地址确定模块从闪回点中确定闪回查询截止偏移地址的值为640250;
89.闪回查询操作模块对account表基于主键进行检索,索引记录中的偏移地址需要小于等于640250,遍历索引后,可以发现只有主键值为'a001'和'a002'的记录符合条件,查询结果如表5所示:
90.表5 account表闪回查询结果
91.idnamebalance'a001''张三'110'a002''李四'120
92.将上述查询结果返回给客户端,实现了闪回查询。
93.本发明公开的检查点实现设备如图3所示,包括处理器31及存储介质32,所述存储介质32为计算机可读取存储介质,其上存储有计算机指令,该计算机指令运行时执行本发明所公开的数据库闪回查询方法的步骤;处理器31加载并执行存储介质32中的指令及数据用于实现上述数据库闪回查询方法。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献