无效索引的无锁标记方法、存储介质和计算机设备与流程
未命名
07-27
阅读:124
评论:0
1.本发明涉及数据库技术,特别是涉及一种无效索引的无锁标记方法、存储介质和计算机设备。
背景技术:
2.目前,关系数据库中的数据组织方式可以为:表数据以堆表形式存储;索引数据单独存储,在索引叶子节点的索引项中存储表数据行的物理位置来关联索引与对应数据。为了提高查询等效率,当通过索引项获取到的表数据无效时,可以记录无效的索引项并对索引项做标记,这样后续的扫描就会跳过标记的索引项避免再去通过无效的索引项获取表数据。但是,上述过程中如果有其他操作影响到索引页面的物理组织,会导致标记的无效索引项的位置发生改变,导致无效索引项的标记不够准确,若使上述整个过程禁止对索引页面的访问和物理修改,又会阻塞了需要改变索引页面物理组织的操作,降低了并发度,影响了数据库系统的吞吐量。
技术实现要素:
3.本发明的一个目的是对无效索引进行标记的过程中的部分步骤禁止对索引页面的访问和物理修改,从而在保证无效索引项标记准确性的情况下,避免过多的降低并发度。
4.特别地,本发明提供了一种无效索引的无锁标记方法,包括:
5.禁止对索引页面的访问和物理修改,其中所述索引页面上有多个索引项;
6.查找所述索引页面上的无效索引项,并记录所述索引页面的第一修改序号;
7.当完成对所述索引页面上无效索引项的查找时,允许对所述索引页面的访问和物理修改;
8.记录所述索引页面上查找到的无效索引项;
9.记录所述索引页面的第二修改序号;
10.根据所述第一修改序号和所述第二修改序号确定记录的所述索引页面的无效索引项是否为最终无效索引项;
11.若是,将所述最终无效索引项标记为无效。
12.可选地,所述根据所述第一修改序号和所述第二修改序号确定记录的所述索引页面的无效索引项是否为最终无效索引项包括:
13.判断所述第一修改序号与所述第二修改序号是否相同。
14.可选地,在所述将所述最终无效索引项标记为无效之后,还包括:
15.清理标记为无效的最终无效索引项。
16.可选地,在所述将所述最终无效索引项标记为无效之后,还包括:
17.对所述索引页面的第二修改序号进行修改。
18.可选地,所述查找所述索引页面上的无效索引项包括:
19.通过扫描遍历所述索引页面的方式查找所述索引页面上的无效索引项。
20.可选地,所述通过扫描遍历所述索引页面的方式查找所述索引页面上的无效索引项包括:
21.扫描遍历所述索引页面的索引项,并获取所述索引项的表数据,将表数据中的无效表数据对应的索引项记录为无效索引项。
22.可选地,所述将所述最终无效索引项标记为无效包括:
23.将所述最终无效索引项批量标记为无效。
24.可选地,若所述第一修改序号与所述第二修改序号不同,放弃所述将所述最终无效索引项标记为无效的步骤。
25.根据本发明的另一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现上述任一种的无效索引的无锁标记方法。
26.根据本发明的又一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行机器可执行程序时实现上述任一种的无效索引的无锁标记方法。
27.本发明的无效索引的无锁标记方法,禁止对索引页面的访问和物理修改,查找索引页面上的无效索引项,并记录索引页面的第一修改序号,当完成对索引页面上无效索引项的查找时,允许对索引页面的访问和物理修改,在此期间避免对索引页面的访问和物理修改,避免或减少无效索引项的位置发生改变,从而可以保证无效索引项的标记的准确性。当完成对索引页面上无效索引项的查找时,考虑到后续有些步骤可能耗时较长,例如记录索引页面上查找到的无效索引项,因此,允许对索引页面的访问和物理修改,可以避免降低数据库的并发度,避免影响数据库系统的吞吐量,相对于整个过程禁止对索引页面的访问和物理修改的方案,本实施例相对提高了数据库的并发度,保证了数据库系统的吞吐量。并且,在记录索引页面上查找到的无效索引项之后,再次禁止对索引页面的访问和物理修改,可以进一步保证无效索引判断的准确性。本实施例在保证无效索引项的标记的准确性和保证数据库的并发度之间做了很好的平衡,具有突出的实质性特点和显著的进步。
28.根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
29.后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
30.图1是根据本发明一个实施例的无效索引的无锁标记方法的示意流程图;
31.图2是根据本发明另一个实施例的标记无效索引项的示意图;
32.图3是根据本发明另一个实施例的无效索引的无锁标记方法的示意流程图;
33.图4是根据本发明一个实施例的机器可读存储介质的示意图;
34.图5是根据本发明一个实施例的计算机设备的示意图。
具体实施方式
35.图1是根据本发明一个实施例的无效索引的无锁标记方法的示意流程图。无效索
引的无锁标记方法一般性地可包括:
36.步骤s102:禁止对索引页面的访问和物理修改,其中索引页面上有多个索引项。本步骤也可以理解为控制索引页面的物理修改。
37.步骤s104:查找索引页面上的无效索引项,并记录索引页面的第一修改序号。涉及索引页面物理组织变化的修改会产生全数据库系统唯一的标识,一般通过修改在日志中的位置或修改所属的数据库系统变更序号标识,这个标识会在索引页面发生修改时同时记录在索引页面上,这里的标识也就是序号。第一修改序号也就是禁止对索引页面的访问和物理修改后,索引页面未发生物理组织变化的序号。
38.步骤s106:当完成对索引页面上无效索引项的查找时,允许对索引页面的访问和物理修改。
39.步骤s108:记录索引页面上查找到的无效索引项。本步骤可能涉及随机i/o,因此耗时很久。
40.步骤s110:禁止对索引页面的访问和物理修改。
41.步骤s112:记录索引页面的第二修改序号。
42.步骤s114:根据第一修改序号和第二修改序号确定记录的索引页面的无效索引项是否为最终无效索引项。
43.若是,执行步骤s116:将最终无效索引项标记为无效。
44.步骤s118:允许对索引页面的访问和物理修改。
45.在本实施例中,禁止对索引页面的访问和物理修改,查找索引页面上的无效索引项,并记录索引页面的第一修改序号,当完成对索引页面上无效索引项的查找时,允许对索引页面的访问和物理修改,在此期间避免对索引页面的访问和物理修改,避免或减少无效索引项的位置发生改变,从而可以保证无效索引项的标记的准确性。当完成对索引页面上无效索引项的查找时,考虑到后续有些步骤可能耗时较长,例如步骤s108记录索引页面上查找到的无效索引项,因此,允许对索引页面的访问和物理修改,可以避免降低数据库的并发度,避免影响数据库系统的吞吐量,相对于整个过程禁止对索引页面的访问和物理修改的方案,本实施例相对提高了数据库的并发度,保证了数据库系统的吞吐量。并且,在步骤s108记录索引页面上查找到的无效索引项之后,再次禁止对索引页面的访问和物理修改,可以进一步保证无效索引判断的准确性。本实施例在保证无效索引项的标记的准确性和保证数据库的并发度之间做了很好的平衡,具有突出的实质性特点和显著的进步。
46.在本发明一个实施例中,根据第一修改序号和第二修改序号确定记录的索引页面的无效索引项是否为最终无效索引项可包括:
47.判断第一修改序号与第二修改序号是否相同。
48.在本实施例中,在步骤s104和步骤s112之间,如果有其他操作影响到索引页面的物理组织,会导致标记的无效索引项的位置发生改变,即第一修改序号发生改变,得到一个不同的第二修改序号,导致无效索引项的标记不够准确,因此,判断第一修改序号与第二修改序号是否相同,可以准确的判断记录的索引页面的无效索引项是否为最终无效索引项。具体地,例如,图2是根据本发明另一个实施例的标记无效索引项的示意图;假设索引页面中包括了索引项1,第一修改序号为1(也就是值1);索引项2,第一修改序号为1(也就是值1)。索引项2,第一修改序号为1(也就是值1)对应的表数据为行2,第一修改序号为1(也就是
a值1),第二修改序号为3(也就是b值3),第一修改序号与第二修改序号不同,所以索引项2为有效。索引项1,第一修改序号为1(也就是值1)对应的表数据为行1,第一修改序号为1(也就是a值1),第二修改序号为1(也就是b值1),第一修改序号与第二修改序号相同,所以索引项1为无效。
49.在本发明一个实施例中,在将最终无效索引项标记为无效之后,还可包括:
50.清理标记为无效的最终无效索引项。
51.在本实施例中,在将最终无效索引项标记为无效之后,清理标记为无效的最终无效索引项,可以减少无效的最终无效索引项占用的空间,有利于提升数据库的性能。
52.在本发明一个实施例中,在将最终无效索引项标记为无效之后,还可包括:
53.对索引页面的第二修改序号进行修改。
54.在本实施例中,在将最终无效索引项标记为无效之后,对索引页面的第二修改序号进行修改,以表示该索引页面已经完成了最终无效索引项的标记,避免重复对该索引页面再次进行标记,从而可以避免重复性的工作。
55.在本发明一个实施例中,查找索引页面上的无效索引项可包括:
56.通过扫描遍历索引页面的方式查找索引页面上的无效索引项。
57.在本实施例中,通过扫描遍历索引页面的方式查找索引页面上的无效索引项,可以比较高效地查找索引页面上的无效索引项,节约时间。
58.在本发明一个实施例中,通过扫描遍历索引页面的方式查找索引页面上的无效索引项可包括:
59.扫描遍历索引页面的索引项,并获取索引项的表数据,将表数据中的无效表数据对应的索引项记录为无效索引项。
60.在本实施例中,当表数据使用多版本并发控制且多个版本数据混合存储时可能出现一些表数据失效的问题,例如,同一行的多个版本数据,对应也存在多个索引项,当表数据的旧版本失效时,对应的索引项逻辑上也无效,因此,将表数据中的无效表数据对应的索引项记录为无效索引项,可以保证得到的无效索引项的准确性。
61.在本发明一个实施例中,将最终无效索引项标记为无效可包括:
62.将最终无效索引项批量标记为无效。
63.在本实施例中,将最终无效索引项批量标记为无效,实现了批量标记,具有很高的标记效率,也非常的简单方便。
64.在本发明一个实施例中,若第一修改序号与第二修改序号不同,放弃将最终无效索引项标记为无效的步骤。
65.在本实施例中,若第一修改序号与第二修改序号不同,无效索引项发生了改变,若仍标记,可能导致标记的结果不够准确,因此,放弃将最终无效索引项标记为无效的步骤。
66.图3是根据本发明另一个实施例的无效索引的无锁标记方法的示意流程图,可以包括:
67.步骤s202:禁止对索引页面的访问和物理修改,其中索引页面上有多个索引项。
68.步骤s204:扫描遍历索引页面的索引项,并获取索引项的表数据,将表数据中的无效表数据对应的索引项记录为无效索引项,并记录索引页面的第一修改序号。
69.步骤s206:当完成对索引页面上无效索引项的查找时,允许对索引页面的访问和
物理修改。
70.步骤s208:记录索引页面上查找到的无效索引项。
71.步骤s210:禁止对索引页面的访问和物理修改。
72.步骤s212:记录索引页面的第二修改序号。
73.步骤s214:判断第一修改序号与第二修改序号是否相同。
74.若是,执行步骤s216,执行步骤s220。
75.步骤s216:将最终无效索引项标记为无效。
76.步骤s218:对索引页面的第二修改序号进行修改。
77.步骤s220:允许对索引页面的访问和物理修改。
78.步骤s222:放弃将最终无效索引项标记为无效。
79.上述各个实施例可以任意组合,根据上述任意一个优选实施例或多个优选实施例的组合,本发明实施例能够达到如下有益效果:
80.本发明的无效索引的无锁标记方法,禁止对索引页面的访问和物理修改,查找索引页面上的无效索引项,并记录索引页面的第一修改序号,当完成对索引页面上无效索引项的查找时,允许对索引页面的访问和物理修改,在此期间避免对索引页面的访问和物理修改,避免或减少无效索引项的位置发生改变,从而可以保证无效索引项的标记的准确性。当完成对索引页面上无效索引项的查找时,考虑到后续有些步骤可能耗时较长,例如步骤记录索引页面上查找到的无效索引项,因此,允许对索引页面的访问和物理修改,可以避免降低数据库的并发度,避免影响数据库系统的吞吐量,相对于整个过程禁止对索引页面的访问和物理修改的方案,本实施例相对提高了数据库的并发度,保证了数据库系统的吞吐量。本实施例在保证无效索引项的标记的准确性和保证数据库的并发度之间做了很好的平衡,具有突出的实质性特点和显著的进步。
81.本实施例还提供了一种机器可读存储介质和计算机设备。图4是根据本发明一个实施例的机器可读存储介质830的示意图;图5是根据本发明一个实施例的计算机设备900的示意图。机器可读存储介质830其上存储有机器可执行程序840,机器可执行程序840被处理器执行时实现上述任一实施例的无效索引的无锁标记方法。
82.计算机设备900可以包括存储器920、处理器910及存储在存储器920上并在处理器910上运行的机器可执行程序840,并且处理器910执行机器可执行程序840时实现上述任一实施例的无效索引的无锁标记方法。
83.需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何机器可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
84.就本实施例的描述而言,机器可读存储介质830可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只
读存储器(cdrom)。另外,计算机可读介质40甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
85.应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。
86.计算机设备900可以是例如服务器、台式计算机、笔记本式计算机、平板计算机或智能手机。在一些示例中,计算机设备900可以是云计算节点。计算机设备900可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机设备900可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
87.计算机设备900可以包括适于执行存储的指令的处理器910、在操作期间为所述指令的操作提供临时存储空间的存储器920。处理器910可以是单核处理器、多核处理器、计算集群或任何数量的其他配置。存储器920可以包括随机存取存储器(ram)、只读存储器、闪存或任何其他合适的存储系统。
88.处理器910可以通过系统互连(例如pci、pci-express等)连接到适于将计算机设备900连接到一个或多个i/o设备(输入/输出设备)的i/o接口(输入/输出接口)。i/o设备可以包括例如键盘和指示设备,其中指示设备可以包括触摸板或触摸屏等等。i/o设备可以是计算机设备900的内置组件,或者可以是外部连接到计算设备的设备。
89.处理器910也可以通过系统互连链接到适于将计算机设备900连接到显示设备的显示接口。显示设备可以包括作为计算机设备900的内置组件的显示屏。显示设备还可以包括外部连接到计算机设备900的计算机监视器、电视机或投影仪等。此外,网络接口控制器(network interface controller,nic)可以适于通过系统互连将计算机设备900连接到网络。在一些实施例中,nic可以使用任何合适的接口或协议(诸如因特网小型计算机系统接口等)来传输数据。网络可以是蜂窝网络、无线电网络、广域网(wan))、局域网(lan)或因特网等等。远程设备可以通过网络连接到计算设备。
90.本实施例提供的流程图并不旨在指示方法的操作将以任何特定的顺序执行,或者方法的所有操作都包括在所有的每种情况下。此外,方法可以包括附加操作。在本实施例方法提供的技术思路的范围内,可以对上述方法进行附加的变化。
91.至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
技术特征:
1.一种无效索引的无锁标记方法,包括:禁止对索引页面的访问和物理修改,其中所述索引页面上有多个索引项;查找所述索引页面上的无效索引项,并记录所述索引页面的第一修改序号;当完成对所述索引页面上无效索引项的查找时,允许对所述索引页面的访问和物理修改;记录所述索引页面上查找到的无效索引项;禁止对索引页面的访问和物理修改;记录所述索引页面的第二修改序号;根据所述第一修改序号和所述第二修改序号确定记录的所述索引页面的无效索引项是否为最终无效索引项;若是,将所述最终无效索引项标记为无效;允许对所述索引页面的访问和物理修改。2.根据权利要求1所述的无效索引的无锁标记方法,其中,所述根据所述第一修改序号和所述第二修改序号确定记录的所述索引页面的无效索引项是否为最终无效索引项包括:判断所述第一修改序号与所述第二修改序号是否相同。3.根据权利要求1所述的无效索引的无锁标记方法,其中,在所述将所述最终无效索引项标记为无效之后,还包括:清理标记为无效的最终无效索引项。4.根据权利要求1所述的无效索引的无锁标记方法,其中,在所述将所述最终无效索引项标记为无效之后,还包括:对所述索引页面的第二修改序号进行修改。5.根据权利要求1所述的无效索引的无锁标记方法,其中,所述查找所述索引页面上的无效索引项包括:通过扫描遍历所述索引页面的方式查找所述索引页面上的无效索引项。6.根据权利要求5所述的无效索引的无锁标记方法,其中,所述通过扫描遍历所述索引页面的方式查找所述索引页面上的无效索引项包括:扫描遍历所述索引页面的索引项,并获取所述索引项的表数据,将表数据中的无效表数据对应的索引项记录为无效索引项。7.根据权利要求1所述的无效索引的无锁标记方法,其中,所述将所述最终无效索引项标记为无效包括:将所述最终无效索引项批量标记为无效。8.根据权利要求1所述的无效索引的无锁标记方法,其中,若所述第一修改序号与所述第二修改序号不同,放弃所述将所述最终无效索引项标记为无效的步骤。9.一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现根据权利要求1至8任一项所述的无效索引的无锁标记方法。10.一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现根据权利要求1至8
任一项所述的无效索引的无锁标记方法。
技术总结
本发明提供了一种无效索引的无锁标记方法、存储介质和计算机设备。方法包括禁止对索引页面的访问和物理修改;查找索引页面上的无效索引项,并记录索引页面的第一修改序号;当完成对索引页面上无效索引项的查找时,允许对索引页面的访问和物理修改;记录索引页面上查找到的无效索引项;禁止对索引页面的访问和物理修改;记录索引页面的第二修改序号;根据第一修改序号和第二修改序号确定记录的索引页面的无效索引项是否为最终无效索引项;若是,将最终无效索引项标记为无效;允许对所述索引页面的访问和物理修改。在禁止对索引页面的访问和物理修改和允许对索引页面的访问和物理修改期间,从而可以保证无效索引项的标记的准确性。确性。确性。
技术研发人员:冷建全 杨尚
受保护的技术使用者:北京人大金仓信息技术股份有限公司
技术研发日:2023.04.11
技术公布日:2023/7/25
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
