一种大字段数据释放方法、装置、电子设备和存储介质与流程

文档序号:29633493发布日期:2022-04-13 16:33阅读:108来源:国知局
一种大字段数据释放方法、装置、电子设备和存储介质与流程

1.本发明实施例涉及数据库技术领域,尤其涉及一种大字段数据释放方法、装置、电子设备和存储介质。


背景技术:

2.数据库中的大字段是常用的数据类型,其在数据库中需要占用巨大空间,常见的大字段数据类型可以包括blob、clob、text和image等数据类型。大字段数据类型的数据通常采用独立存储方式,在表格中不存储大字段数据的具体数据而是存储其数据存储位置等概要信息。大字段数据一般基于数据页实现,大字段数据顺序写入一系列数据页中,这些数据页通过页头信息中的前页地址和后页地址确保数据的顺序,参见图1,数据页可以包括页头控制信息、数据和行偏移组,页头控制信息包括页类型、页地址等信息,数据页的中部存放数据,数据页尾部保留部分空间用于存放行偏移组,该行偏移组用于标识数据页上的空间占用情况,便于管理数据页自身的空间。数据库中多以段结构组织数据存储,段由一组簇构成,簇由磁盘上连续的多个数据页组成,数据页用于集中存储同一张表的多列大字段数据类型的数据,数据均位于相同表段中。通常要删除表的多个大字段列的若干记录时,需要释放大字段数据占用的空间,也即需要释放表段的数据页。
3.在释放表段数据页时传统做法为逐页释放,参见图2,首先,根据表段的段头信息将需要释放的所有数据页一一加载到缓存,然后对数据页进行逐一释放,每释放一个数据页,每次都有重新抓取表段的段头信息以获取到需要释放的数据页。上述方法导致:1、数据库的输入/输出量较大,数据释放的代价高;2、频繁修改表段首页的页头信息,段头占用时间过长,导致数据库中大字段列的并发冲突增多。


技术实现要素:

4.本发明提供一种大字段数据释放方法、装置、电子设备和存储介质,以实现数据释放的效率,降低段头占用时间,减少数据库中的大字段类型数据操作的并发冲突。
5.第一方面,本发明实施例提供了一种大字段数据释放方法,该方法包括:
6.根据字段释放信息收集待释放大字段数据的数据页信息;
7.按照所述数据页信息整体释放对应的数据页。
8.第二方面,本发明实施例还提供了一种大字段数据释放装置,该装置包括:
9.信息收集模块,用于根据字段释放信息收集待释放大字段数据的数据页信息;
10.数据释放模块,用于按照所述数据页信息整体释放对应的数据页。
11.第三方面,本发明实施例还提供了一种计算机设备,该计算机设备包括:
12.一个或多个处理器;
13.存储器,用于存储一个或多个程序,
14.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明实施例中任一所述方法。
15.第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如本发明实施例中任一所述方法
16.本发明实施例,通过按照接收到的字段释放信息收集待释放大字段数据的数据页信息,按照数据页信息将对应待释放待字段的数据页整体释放,实现了大字段数据快速释放,降低了输入输出量,减少释放的代价,还降低了段头占用时间,可减少数据库中大字段类型数据操作的并发冲突。
附图说明
17.图1是现有技术中的数据页的结构示意图;
18.图2是现有技术中的大字段数据释放的示例图;
19.图3是本发明实施例一提供的一种大字段数据释放的流程图;
20.图4是本发明实施例二提供的另一种大字段数据释放的流程图;
21.图5是本发明实施例二提供的一种控制页的示例图;
22.图6是本发明实施例三提供的另一种大字段数据释放的流程图;
23.图7是本发明实施例三提供的一种控制页的组织格式示例图;
24.图8是本发明实施例三提供的一种总控制项的组织格式示例图;
25.图9是本发明实施例三提供的一种控制单元的组织格式示例图;
26.图10是本发明实施例三提供的一种大字段数据释放的示例图;
27.图11a是本发明实施例三提供的一种fpo的结构示意图;
28.图11b是本发明实施例三提供的另一种fpo的结构示意图;
29.图11c是本发明实施例三提供的另一种fpo的结构示意图;
30.图11d是本发明实施例三提供的另一种fpo的结构示意图;
31.图12是本发明实施例四提供的一种大字段数据释放装置的结构示意图;
32.图13是本发明实施例五提供的一种点电子设备的结构示意图。
具体实施方式
33.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构,此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
34.在本发明实施例中,数据库中的大字段数据可以是采用独立存储方式的数据类型,独立存储方式也可以被称为行外存储,存储方式具体为在表格使用存储地址替代存储大字段列值。数据库中常见的大字段数据类型可以包括blob、clob、text、image等,大字段数据一般基于数据页来实现,将大字段数据顺序写入连续的数据页中,这些数据页通过页头信息中的前页地址和后页地址确保数据的顺序,可以在行记录中存储数据页首页的地址信息,本发明实施例中数据库中的数据页包括页头控制信息、数据、空闲空间和行偏移数组,其中,行偏移数据位于数据页尾部用于标识当前数据页的空间占用情况。数据库中可以表段的形式组织数据页,表段可以由一组簇构成,簇由一组连续的数据页组成。存储同一张表的多列大字段数据的记录的数据可以均位于同一表段中。例如,参见下表,表t1存储的时
候,c1、c2和c3列的所有数据共同存储于一个表段中。整个表只有一个段首页,段首页不存储数据,为管理页。其中c1列和c3列均为大字段列,每一个大字段数据的首个数据页的前一页为该大字段的控制页。大字段数据“abcd1”、“abcd2”、“cdef1”和“cdef2”前均有一个控制页。
35.表 表t1的数据
36.c1c2c3abcd110cdef1abcd220cdef2
37.实施例一
38.图3是本发明实施例一提供的一种大字段数据释放的流程图,本实施例可适用于大字段数据释放的情况,该方法可以由大字段数据释放装置来执行,该装置可以采用硬件和/或软件的方式来实现,参见图3,本发明实施例提供的方法具体包括如下步骤:
39.步骤110,根据字段释放信息收集待释放大字段数据的数据页信息。
40.其中,字段释放信息可以是触发释放大字段数据内存占用空间的信息,字段释放信息可以包括大字段数据的标识信息或者地址信息,字段释放信息可以在大字段数据删除或者事务回滚时触发。待释放大字段数据可以是对应于字段释放信息的大字段数据,例如,可以是字段释放信息中标识信息或者地址信息对应的大字段数据。数据页信息可以是标记大字段占用的数据页的信息,可以包括数据页的首页地址、尾页地址和页数等。
41.步骤120,按照数据页信息整体释放对应的数据页。
42.在本发明实施例中,可以按照数据页信息将待释放大字段数据占用的多个数据页作为一个整体进行释放,可提高数据页释放效率,降低对数据页锁定时的资源开销。
43.本发明实施例,通过按照接收到的字段释放信息收集待释放大字段数据的数据页信息,按照数据页信息将对应待释放待字段的数据页整体释放,实现了大字段数据快速释放,降低了段头占用时间,可减少数据库中大字段类型数据操作的并发冲突。
44.实施例二
45.图4是本发明实施例二提供的另一种大字段数据释放的流程图,本发明实施例是在上述发明实施例基础上的具体化,参见图4,本发明实施例提供的方法具体包括如下步骤:
46.步骤210,按照字段释放信息获取待释放大字段数据的段首页和待释放大字段数据的数据页首页,并确定数据页首页的类型信息为大字段类型。
47.其中,先后对段首页和大字段数据的数据首页分别上锁,防止其他操作在该时段对段首页和数据首页进行修改。类型信息可以用于判断数据页是否为大字段类型。
48.在本发明实施例中,可以按照字段释放信息读取到待释放大字段数据的数据首页,可以通过数据首页中存储的大字段类型判断待释放大字段数据是否为大字段类型,若是,则继续执行步骤220,若不是则可以按照现有技术中的处理方式对非大字段类型的数据页进行处理。
49.步骤220,在待释放大字段数据的数据首页的控制页提取数据页信息,其中,数据页信息至少包括首页地址、尾页地址和页数。
50.其中,控制页可以是在大字段数据占用的数据页的数量大于m页时设置的管理页,
该管理页可以存储各数据页的信息便于对各数据页进行管理,参见图5,控制页可以是一个大字段数据占据的数据页的前一页数据页,该数据页用于对大字段数据占据的数据页进行管理,不存储数据,因此称管理页。首页地址可以是待释放大字段数据占据的数据页中的第一个数据页的地址信息,尾页地址可以是待释放大字段数据占据的数据页中的最后一个数据页的地址信息,页数可以是待释放大字段数据占据的数据页的数量。
51.在本发明实施例中,可以确定待释放大字段数据的数据首页对应的控制页,可以在控制页中提取到待释放大字段的数据页的首页地址、尾页地址和页数等信息作为数据页信息。
52.步骤230,将数据页信息临时存储在信息收集地址空间。
53.其中,信息收集地址空间可以是用于暂时存储数据页信息的空间,可以针对各待释放大字段数据存在各自的信息收集地址空间。
54.具体的,可以针对待释放大字段数据将其对应的数据页信息存储到对应的信息收集地址空间中,该信息收集地址空间可以位于待释放大字段数据的数据首页上或者其它指定位置上。
55.步骤240,合并至少两个待释放大字段数据的数据页信息,并将合并后的数据页信息存储在段首页的待释放地址空间。
56.其中,待释放地址空间可以是存储所有待释放大字段数据的地址空间,可以存储合并后的数据页信息,待释放地址空间内合并的数据页信息可以以队列、序列等形式存储,合并的数据页信息可以降低大字段释放对对段首页的锁定时间。
57.在本发明实施例中,可以将获取到的两个或多个待释放大字段数据的数据页信息进行合并,以便在释放过程中使用合并的数据页信息整体释放各待释放大字段。可以理解的是,该合并可以包括将数据页信息存储在相同地址空间或者将数据页信息的首页地址和尾页地址依次相连等。
58.步骤250,在段首页的待释放地址空间提取存储的数据页信息。
59.具体的,可以提取段首页中待释放地址空间中提取存储的数据页信息,该数据页信息可以包括待释放字段的首页地址、尾页地址以及页数,可以理解的是,该数据页信息可以是多个待释放大字段数据合并后的数据页信息,首页地址可以是第一个待释放大字段数据的首页地址,尾页地址可以是最后一个待释放大字段数据的尾页地址,页数可以是多个待释放大字段数据的占据的数据页总页数。
60.步骤260,按照数据页信息的首页地址和页数依次释放数据页。
61.在本发明实施例中,可以按照数据页信息中的首页地址获取到待释放大字段数据的第一页数据页,并按照数据页的地址顺序从第一页数据开始依次释放对应页数数量的数据页,可以实现大字段数据占用的数据页的整体释放,由于仅在获取首页地址和页数时对段首页进行一次锁定,无需因释放多个数据页而进行多次锁定,降低了对段首页的锁定时间,可降低不同大字段数据操作的冲突。
62.本发明实施例,通过字段释放信息获取段首页和待释放大字段数据的数据首页,先后对段首页和大字段数据的数据首页分别上锁,基于待释放大字段数据的数据首页的控制页提取待释放字段数据的数据页信息,将提取到的数据页信息存储在信息收集地址空间,将至少一个待释放大字段数据的数据页信息存储或合并后存储在段首页的待释放地址
空间,获取待释放地址空间的数据页信息,按照数据页信息的首页地址和页数依次释放数据页,实现大字段数据的数据页整体释放,提高数据释放效率,可降低段首页锁定时间,降低大字段数据操作的冲突。
63.实施例三
64.图6是本发明实施例三提供的另一种大字段数据释放的流程图,本发明实施例是在上述发明实施例基础上的具体化,参见图6,本发明实施例提供的方法具体包括如下步骤:
65.步骤310、按照字段释放信息获取待释放大字段数据的段首页和待释放大字段数据的数据页首页,并确定数据页首页的类型信息为大字段类型。
66.步骤320、在控制页的控制页指针无效的情况下依次扫描待释放大字段数据占用的至少一个数据页以获取数据页信息。
67.其中,控制页指针可以是待释放大字段数据的数据首页指向控制页的指针,控制页指针可以用于判断数据页是否存在控制页,由于大字段数据不是全部具有控制页,只有在大字段数据占据的数据页大于或等于一定数量时,才会采用大字段控制页。控制页可以是指大字段数据占据的第一页数据页的前一页的页地址不为null且前一页的页地址对应的数据页的类型为控制页。
68.在本发明实施例中,可以获取待释放大字段数据的数据首页对应控制页指针,判断控制页指针是否为空,若是,则表明待释放大字段数据占据的数据页不满足启用控制页的要求,无法直接使用控制页获取到待释放大字段所有数据页的数据页信息,需要对待释放大字段占用的所有数据页进行扫描以获取到各数据页的地址和数据页的总页数作为数据页信息。此种情况,为无控制页的情况。
69.步骤330、在控制页的控制页指针有效且控制页标识有效的情况下读取控制页指针对应的控制页,提取控制页中的总控制项和尾部控制项中的统计信息以获取数据页信息。
70.其中,控制页可以是存储大字段数据的统计信息以及分片单元等的信息页,其中分片单元可以是存放行外大字段分配信息的,参见图7,控制页可以包括分片数、是否有尾页信息、尾页的文件号、尾页的页号以及控制信息是否有效标识组成,其中,分片数可以表明大字段被分为多少个分片,尾页信息用于判断大字段是否拥有尾页,尾页页号和尾页文件号可以用于定位尾页数据页。参见图8和图9,控制页可以由总控制项和多个控制项(或控制单元)组成,其中,最后一个控制项可以为尾部控制项。
71.具体的,在待释放大字段数据的数据首页的控制页指针指向不为空的情况下,待释放大字段数据为使用控制页管理的数据页,可以对控制页中的控制页标识进行判断,确定待释放大字段数据的控制页是否有效。
72.可以理解的是,在待释放大字段数据的数据首页的控制页指针有效且控制页标识有效的情况下可以提取控制页中的总控制项和尾部控制项信息来获取数据页信息。获取的数据页信息为待释放的起始页地址、尾页地址和待释放总数据页数。控制页地址是数据页的前一页地址,在总控制项中可直接获取到尾页的地址。控制页地址作为待释放的起始页地址。在计算待释放总数据页数之前,因为尾页控制项可能无效,需要根据实际情况进行判定,获取到有效的尾部控制项页数之后,才能对待释放的总页数进行计算。待释放总数据页
数=控制页个数(1页)+所有控制项中的页数累计值。也即将待释放的起始页地址、尾页地址和待释放的总数据页数作为数据页信息。
73.尾部控制项中的页数为尾部控制单元的页数。在尾部控制项有效的情况下,可直接使用尾部控制项中的页数作为最后一个控制项的页数参与计算。在尾部控制项无效的情况下,说明当前尾页已经被其它会话释放,此时需要重新获取有效的尾部控制项信息。获取有效的尾部控制项具体做法为采用依次扫描最后一个控制单元的大字段数据页的方式来获取有效的尾部控制项。即先从尾部控制项的首页定位开始,再依次扫描数据页,通过页头找到下一页地址,最终得到有效的尾部控制项中的页数和尾页地址。此时的页数、尾页地址才能作为最后一个控制项的页数参与计算。
74.步骤340、在控制页的控制页指针有效且控制页标识无效的情况下依次扫描待释放大字段数据的数据页以获取数据页信息。
75.在本发明实施例中,在待释放大字段数据的数据首页的控制页指针有效且控制页标识无效时,表明待释放大字段数据的数据页虽然具有控制页但是由于其它原因导致控制页无效,无法直接使用控制页获取到待释放大字段所有数据页的数据页信息,需要对待释放大字段占用的所有数据页进行扫描以获取到尾页的地址和数据页的总页数作为数据页信息。
76.步骤350、提取待释放大字段数据的数据页首页的信息收集地址空间存储的各待释放大字段数据的数据页信息。
77.具体的,可以在大字段数据的数据首页的信息收集地址空间中提取存储的各待释放大字段数据的数据页信息,其中,信息收集地址空间中存储的数据页可以是每次释放时收集到的待释放大字段数据的数据页信息。
78.步骤360、按照地址顺序将各数据页信息的首页地址和尾页地址首尾相连存储在段首页的待释放地址空间。
79.在本发明实施例中,可以将各待释放大字段数据的数据页信息中的首页地址和尾页地址按照地址顺序依次首尾相连,将多个待释放大字段数据的数据页信息进行合并,可以将合并后的数据页信息存储在待释放地址空间。
80.步骤370、在段首页内将对应的待释放大字段数据的标识号标记为无效标识号。
81.具体的,在收集到待释放大字段数据的数据页信息后,可以在段首页中将该待释放大字段数据的标识号标记为无效标识号,防止待释放大字段数据被重复释放。
82.步骤380、按照数据页信息整体释放对应的数据页。
83.本发明实施例,通过字段释放信息获取段首页和待释放大字段数据的数据,先后对段首页和数据首页分别上锁,在数据首页的控制页的控制页指针无效的情况扫描待释放大字段数据的数据页以获取数据页信息,在数据首页的控制页的控制页指针有效且控制页标识有效的情况下,读取控制页中总控制项和尾部控制项的统计信息以获取数据页信息,根据总控制项和尾部控制项的信息,进而获取待释放的起始页地址、尾页地址和待释放总数据页数作为所述数据页信息。当在待释放大字段数据的数据首页的控制页指针有效且控制页标识无效的情况下,通过依次扫描待释放大字段数据的数据页以获取数据页信息。将数据页信息中首页地址和尾页地址依次首尾相连存储在待释放地址空间,并将各待释放大字段的数据标识号标记为无效标识号,按照数据页信息整体释放对应的数据页,实现了大
字段数据快速释放,降低了段头占用时间,可减少数据库中大字段类型数据操作的并发冲突。
84.进一步的,在上述发明实施例的基础上,提取所述控制页中的总控制项和尾部控制项中的统计信息以获取所述数据页信息,包括:根据总控制项和尾部控制项的信息,进而获取待释放的起始页地址、尾页地址和待释放总数据页数作为所述数据页信息。
85.在一个示例性的实施方式中,参见图10,由于大字段数据页中同一列的同一行的大字段数据页往往是由连续的多个页组成,故释放空间时可以将该大字段相关的连续的若干页一起释放。因此,在第一次创建大字段时,可以新增一个地址空间fpo(seg_fpo),用于后续登记大字段数据的(首页地址单元,尾页地址单元,大字段的页数n)。seg_fpo已存在就不需要再创建了。当删除某个大字段数据后,释放空间时,直接将从待释放地址空间seg_fpo中记录的首页地址开始,到尾页地址结束这部分连续的n个数据页作为一个整体,一次性释放。从而把大字段释放时的对以页为单位的操作变为作为对应一个整体单元的操作,将临时的lob_fpo登记到段首页的seg_fpo上,也就是在段首页待释放地址空间区域记录首页、末页地址单元和大字段的页数n。在删除大字段记录释放空间或插入回滚时,待处理的记录地址可以是大字段数据页的首页地址,在外边数据库处理中可以只传输首页地址。在创建大字段时,在段首页中新增一个结构体fpo,用于存储待释放大字段的首、尾地址信息和数据页个数,其中,页地址可以由文件号、页号组成。该处理过程可以包括如下步骤:
86.1、开始一个大字段删除或回滚事务。
87.2、根据待释放的大字段内存对象获取表段的段首页,对段首页进行上锁。其中,待释放的大字段对象的内存结构是根据表获取。
88.3、读取大字段数据的数据首页并在加载时上锁。
89.4、根据大字段数据首页判断有无控制页,已知大字段数据的数据首页,当大字段数据的数据首页中指向前一页的指针地址不为null,且根据大字段数据的数据首页中的控制页标识(标识为控制页)来判断前一页是否控制页。控制页标识有效则说明有控制页,说明大字段数据页大于m页,进入第(1)步;控制页标识无效,说明大字段数据页已经被其他会话释放,此处通过扫描获取首、尾页地址即可,进入第(2)步;如果大字段数据的数据首页中指向前一页的指针地址为null,说明大字段数据页小于等于m页,未启用控制页,没有控制页进入第(3)步。
90.(1)如果有控制页标识且有效,则采用控制页定位。读取大字段对象的控制页到内存中,在控制页校验成功后,通过总控制项获取尾页地址和最后一个控制项的数据页的个数。控制信息中的尾部控制项(即控制块的最后一个单元的file_id,page_no)也记录了尾页地址信息,可以定位到尾部控制项,从而获取到最后一个控制项的数据页的页数。调整fpo的待释放大字段的第一页从控制页开始。控制页也要释放。
91.如果控制页中的尾页控制项的valid flag为true,则说明有尾页且最后一个单元信息可靠,直接使用最后一个单元的页数统计信息total bytes。如果尾部控制项的valid flag为false,则要在最后一个控制单元扫描得到页数。即先设置当前页地址为尾部控制项的首页,再一一扫描数据页,通过页头找到下一页地址,逐渐得到最后一个控制单元的页数,并且也获取到有效的末尾尾页地址。总的数据页的个数=控制页个数(1页)+所有控制项中的页数累计值。调整fpo的待释放大字段的第一页从控制页开始。控制页也要释放。
92.(2)如果有控制页标识且无效,说明控制页(lob_ctl页)无效则通过扫描大字段数据页获取fpo所需的首、尾页地址信息(即常规方式定位)。控制页标识无效表明待释放大字段数据的数据页虽然具有控制页但是由于其它原因导致控制页无效,无法直接使用控制页获取到待释放大字段所有数据页的数据页信息,需要对待释放大字段占用的所有数据页进行扫描以获取到尾页的地址和数据页的总页数作为数据页信息。
93.(3)如果大字段数据页的首页的前一页地址无效(为null),即没有控制页,此时说明数据页总页数不会超过m页(例如4页),所以这种io量很少的情况下,也采用常规方式定位。因为只能从表段的上一页才有可能知道下一页地址,前面已封锁数据首页,再从大字段的数据页的首页逐个定位下一个数据页直到获取尾页地址,数据页的个数=查找的所有大字段数据页的总个数。
94.5、搜集fpo之后,因为fpo记录的都是要删除的数据页信息,可以将待删除的数据页信息合并到段首页的fpo中,设置段首页中大字段数据标识blobid为无效id避免重复释放。参见下表,一个段首页的页头控制信息中可以包含blobid:
95.1blobid2n_bytes3n_chars
96.6、释放大字段数据,并更新段首页中的fpo信息。下表中示出了一种段首页的控制信息:
[0097][0098]
fpo起始偏移:为了在段首页中快速定位待释放的大字段数据页单元的信息,页头存储待释放的大字段数据页的首尾地址信息时,直接跳过前5个偏移量,直接定位到fpo起始偏移。越过段头将第6个偏移处的fpo起始偏移作为起始地址写入。这是把待释放fpo写入到段首页中,说明fpo的数据页不再使用。
[0099]
确认位置之后,只需占用一次段头锁,即对段首页封锁,把待释放的大字段数据页信息存储到这个地址空间中。释放锁时,就是完成了大字段的释放之时。
[0100]
地址空间:段首页中位置6由于要记录多个待释放大字段的地址单元和页数,之后好统一物理释放。所以称为地址空间。
[0101]
段首页中的fpo地址空间记录了段首页上次待释放页的个数、首页地址单元和尾页地址单元。
[0102]
在本发明实施例中,fpo可以存在两种形式,lob_fpo和seg_fpo。lob_fpo是一个临时空间,seg_fpo为段首页的信息收集地址空间。lob_fpo是单个待释放的大字段的fpo,用
于释放之前搜集。seg_fpo为段首页中已经搜集的fpo总和。所有待释放的lob_fpo首尾相接,全部加入到seg_fpo中。然后在物理释放待释放字段数据页时,可以通过seg_fpo一次性定位所有待释放的大数据页。待物理释放完毕后,再删除seg_fpo。
[0103]
第一次释放之前,需先构造段首页中段头的地址空间seg_fpo信息。第二次释放时,seg_fpo已经存在。seg_fpo可以重复使用,每次释放完毕,立刻设置seg_fpo为null。seg_fpo存在fpo(第二次释放才会存在,第一次释放不会存在)则有效(非null),否则为null。当再次使用seg_fpo时,如果seg_fpo地址空间为null,说明seg_fpo中的大字段已经释放完毕,这种情况则将当前待释放大字段数据的lob_fpo信息设置到地址空间seg_fpo。有效地址空间记作seg_fpo,则把lob_fpo与seg_fpo进行合并;
[0104]
1.lob_fpo的地址和段首页地址空间seg_fpo采用首尾相接的方式进行合并,保证数据页地址之间无缝衔接。把当前待释放的首页地址、尾页地址和页数登记到地址空间中。首先,把段首页中的地址空间的seg_fpo的已有尾页页号,和当前待释放的首页页号连接起来;下次在seg_fpo中加入新的待释放lob_fpo时,只需要连接到地址空间中的新尾页后面,这样能快速登记。
[0105]
合并的方法:把待释放的大字段数据页信息存储或合并到这个地址空间中。如果有效地址空间seg_fpo中的首页地址无效(已物理释放),此时seg_fpo为null,则直接将当前大字段的lob_fpo设置给地址空间,并结束返回。如果地址空间seg_fpo非null,则将地址空间seg_fpo中的尾页数据页的下一页地址修改为的当前大字段lob_fpo的首页地址。将地址空间seg_fpo中的尾页地址设置为当前大字段lob_fpo的尾页地址。
[0106]
2.段首页fpo更新完成,结束事务,释放大字段数据的数据首页和段首页的锁。可见,采用本发明实施例释放1个或多个大字段记录时,即使数据页庞大,也没有频繁修改段首页,没有对表段的控制信息进行频繁修改。
[0107]
第一次合并段数据页:
[0108]
搜集fpo-》确定地址空间位置,将地址空间中的首、尾页地址,页数设置为lob_fpo的首、尾页地址、页数;lob_fpo赋值给seg_fpo。合并结束成为seg_fpo。参见图11a,是一个fpo的结构。
[0109]
第二次合并段数据页:
[0110]
搜集fpo-》确定地址空间seg_fpo位置,seg_fpo也是首页、尾页、页数组成,参见图11b,经过首次合并后fpo中的地址仍然有序。经过再次合并,参见图11c,fpo中的地址仍然有序。最后,参见图11d,待释放的大字段数据页统一物理释放时,只需选在(首页,lob_fpo2尾页,总页数)进行一次性批量物理释放即可。物理释放之后,将seq_fpo置为null,具体为对seq_fpo的内容进行删除处理,清理段首页的fpo信息,页数=0,首尾页的文件号、页号都置成null。
[0111]
实施例四
[0112]
图12是本发明实施例四提供的一种大字段数据释放装置的结构示意图,可执行本发明任意实施例所提供的大字段数据释放方法,具备执行方法相应的功能模块和有益效果。该装置可以由软件和/或硬件实现,具体包括:信息收集模块401和数据释放模块402。
[0113]
信息收集模块401,用于根据字段释放信息收集待释放大字段数据的数据页信息。
[0114]
数据释放模块402,用于按照所述数据页信息整体释放对应的数据页。
[0115]
本发明实施例,通过信息收集模块按照接收到的字段释放信息收集待释放大字段数据的数据页信息,数据释放模块按照数据页信息将对应待释放待字段的数据页整体释放,实现了大字段数据快速释放,降低了段头占用时间,可减少数据库中大字段类型数据操作的并发冲突。
[0116]
进一步的,在上述发明实施例的基础上,所述装置中信息收集模块401包括:
[0117]
数据首页单元,用于按照所述字段释放信息获取待释放大字段数据的段首页和待释放大字段数据的数据首页,并在大字段数据的数据首页确定所述数据页首页待释放大字段数据的类型信息为大字段类型。
[0118]
信息提取单元,用于在所述待释放大字段数据的数据首页的控制页提取所述数据页信息,其中,所述数据页信息至少包括首页地址、尾页地址和页数。
[0119]
进一步的,在上述发明实施例的基础上,所述数据首页单元具体用于:
[0120]
在所述控制页的控制页指针无效的情况下依次扫描所述待释放大字段数据占用的至少一个数据页以获取所述数据页信息;在所述控制页的控制页指针有效且控制页标识有效的情况下读取所述控制页指针对应的控制页,提取所述控制页中的总控制项和尾部控制项中的统计信息以获取所述数据页信息;在所述控制页的控制页指针有效且控制页标识无效的情况下依次扫描所述待释放大字段数据的数据页以获取数据页信息。
[0121]
进一步的,在上述发明实施例的基础上,信息提取单元具体用于:根据总控制项和尾部控制项的信息,进而获取待释放的起始页地址、尾页地址和待释放总数据页数作为所述数据页信息。
[0122]
进一步的,在上述发明实施例的基础上,所述装置还包括:
[0123]
信息合并模块,用于合并至少两个所述待释放大字段数据的数据页信息,并将合并后的所述数据页信息存储在段首页的待释放地址空间。
[0124]
进一步的,在上述发明实施例的基础上,所述信息合并模块包括:
[0125]
信息提取单元,用于提取信息收集地址空间临时存储的各所述待释放大字段数据的数据页信息。
[0126]
合并存储单元,用于按照地址顺序将各所述数据页信息的首页地址和尾页地址首尾相连存储在段首页的待释放地址空间。
[0127]
无效标记单元,用于在所述段首页内将对应的待释放大字段数据的标识号标记为无效标识号。
[0128]
进一步的,在上述发明实施例的基础上,所述数据释放模块402包括:
[0129]
地址获取单元,用于在所述段首页的待释放地址空间提取存储的所述数据页信息。
[0130]
空间释放单元,用于按照所述数据页信息的首页地址和页数依次释放所述数据页。
[0131]
进一步的,在上述发明实施例的基础上,还包括:信息存储单元,用于将所述数据页信息临时存储在信息收集地址空间。
[0132]
实施例五
[0133]
图13是本发明实施例五提供的一种点电子设备的结构示意图,如图13所示,该电子设备包括处理器70、存储器71、输入装置72和输出装置73;电子设备中处理器70的数量可
以是一个或多个,图13中以一个处理器70为例;电子设备中的处理器70、存储器71、输入装置72和输出装置73可以通过总线或其他方式连接,图13中以通过总线连接为例。
[0134]
存储器71作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的大字段数据释放方法对应的程序指令/模块(例如,大字段数据释放装置中的信息收集模块401和数据释放模块402)。处理器70通过运行存储在存储器71中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述的大字段数据释放方法。
[0135]
存储器71可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器71可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器71可进一步包括相对于处理器70远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0136]
输入装置72可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。输出装置73可包括显示屏等显示设备。
[0137]
实施例六
[0138]
本发明实施例六还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种大字段数据释放方法,该方法包括:
[0139]
根据字段释放信息收集待释放大字段数据的数据页信息;
[0140]
按照所述数据页信息整体释放对应的数据页。
[0141]
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的大字段数据释放方法中的相关操作。
[0142]
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0143]
值得注意的是,上述大字段数据释放装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
[0144]
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1