数据库共享内存缓冲池的处理方法、存储介质与设备与流程

文档序号:31051784发布日期:2022-08-06 07:42阅读:84来源:国知局
数据库共享内存缓冲池的处理方法、存储介质与设备与流程

1.本发明涉及数据库技术,特别是涉及一种数据库共享内存缓冲池的处理方法、存储介质与设备。


背景技术:

2.数据库中通常会在内存中设置一个共享缓冲池区域,其在所有服务会话间共享,为所有关系表提供缓冲服务,以避免每次读取关系表时需要去磁盘中读取。在缓冲池中读取某页面称为命中缓冲池,而去磁盘中读取页面称为未命中。众所周知,对内存区域的访问远远快于对磁盘的访问,因此有必要尽可能降低未命中的概率。
3.然而,由于缓冲池的容量是有限的,当缓冲池耗尽时,我们不得不将一部分页面移除出缓冲池,该过程称为缓冲区置换。显然,判断哪些页面是最有可能不再被访问的页面是缓冲区置换技术的核心要点。
4.现有技术中存在一些缓冲区置换技术,例如lru(least recently used,最近最少使用)、lfu(least frequently used,最不经常使用)、fifo(first input first output,先入先出)等。这些缓冲区置换技术分别有各自的一些特点,分别具有各自所适应的场景下。其中最常见的置换算法为lru,则能在大多数访问序列下均有不错的表现。但不可避免地,由于访问序列的难以预测性以及缓冲区容量本身所带来的限制,这些置换技术总会存在某些特定的访问序列,出现非最优的置换页面判断,导致非必要的缓冲区换出,进而降低访问的命中率。
5.理论上的最优置换算法,称为opt(optimal replacement,最佳页面替换),这种理论上的最佳算法基于能提前确定所有访问序列的假设,因此通常不适用于实际场景。
6.因此,现有技术的缓冲区置换技术都无法保证所有访问序列下的最优,容易出现后续可能经常访问的页面被自动置换出缓冲区的情况,在该情况下频繁的进行缓冲区置换,造成大量多余的i/o(input/output,输入/输出)开销,影响数据库的整体效率。


技术实现要素:

7.本发明的一个目的是要提供一种减少因缓冲池置换导致的多余i/o开销。
8.本发明一个进一步的目的是要使得提高数据库的整体性能。
9.特别地,本发明提供了一种数据库共享内存缓冲池的处理方法,其包括:
10.获取用于使数据库的固定缓冲关系解除固定的指令;
11.判断固定缓冲关系的全部页面是否已经缓存在固定缓冲池中;
12.若是,将固定缓冲关系的页面从固定缓冲池移动至普通缓冲池,其中数据库的共享内存预先开辟有固定缓冲池以及普通缓冲池,并且固定缓冲池和普通缓冲池相互独立;
13.将固定缓冲关系的固定标记设置为非固定状态。
14.可选地,在获取用于使数据库的固定缓冲关系解除固定的指令的步骤之后还包括:解析指令,确定指令对应的固定缓冲关系;打开固定缓冲关系,并确定固定缓冲关系的
固定缓冲池标记是否为固定状态;若是,则将固定缓冲池标记置为非固定状态。
15.可选地,在固定缓冲关系的固定缓冲池标记为非固定状态的情况下,还包括:输出报错信息,以报告指令对应的关系并非固定缓冲关系。
16.可选地,将固定缓冲关系的页面从固定缓冲池移动至普通缓冲池的步骤之后还包括:解除对固定缓冲关系的引用计数器的限制,使得固定缓冲关系参与普通缓冲池的缓冲置换。
17.可选地,在将固定缓冲关系的页面从固定缓冲池移动至普通缓冲池的步骤之后还包括:清理固定缓冲池的空间,并确定固定缓冲池的剩余空间,以供存储其他固定缓冲关系。
18.可选地,在获取用于使数据库的固定缓冲关系解除固定的指令的步骤之前还包括:获取缓冲池设置指令;解析缓冲池设置指令,确定出需要指定的固定缓冲关系;将固定缓冲关系的固定缓冲池标记修改为固定状态;在获取到对固定缓冲关系的访问后,启动将固定缓冲关系移入固定缓冲池的流程。
19.可选地,在将固定缓冲关系移入固定缓冲池的步骤之后还包括:将固定缓冲关系的引用计数器置为大于等于1,并在共享内存的缓存空间进行缓冲置换的过程中,维持固定缓冲关系的引用计数器大于等于1。
20.可选地,固定缓冲池的容量大小通过配置文件进行预先配置。
21.根据本发明的另一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现上述任一种的数据库共享内存缓冲池的处理方法。
22.根据本发明的又一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行机器可执行程序时实现上述任一种的数据库共享内存缓冲池的处理方法。
23.本发明的数据库共享内存缓冲池的处理方法,在数据库的共享内存的缓存空间预先开辟固定缓冲池以及普通缓冲池,其中普通缓冲池使用传统的缓冲置换算法,进行页面的普通置换。固定缓冲池用于供数据库用户指定的关系进行缓冲。在需要将关系移出固定缓冲池,实现对固定缓冲池内页面的置换时,首先确定用于解除固定的指令所对应的固定缓冲关系的全部页面是否已经缓存在固定缓冲池中,然后将固定缓冲关系的页面从固定缓冲池移动至普通缓冲池,使固定缓冲关系退出固定缓存,参与普通缓冲池的普通置换。从而为固定缓冲池腾出空闲空间,使得数据库可以灵活高效地利用缓存机制,减少了因页面置换导致的多余i/o开销。
24.进一步地,本发明的数据库共享内存缓冲池的处理方法,固定缓冲关系根据解除固定的指令退出固定缓冲池,在数据库用户正确进行设置的情况下,可以有效提升数据库的整体性能。
25.更进一步地,本发明的数据库共享内存缓冲池的处理方法,为关系增加了固定缓冲池标记和固定标记,以标识标识固定缓冲关系的设置状态和缓冲状态,为固定缓冲关系移入固定缓冲池、移出固定缓冲池、在普通缓冲池内的等待等操作提供了支持。
26.根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
27.后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
28.图1是根据本发明一个实施例的数据库共享内存缓冲池的处理方法的示意流程图;
29.图2根据本发明一个实施例的数据库共享内存缓冲池的处理方法中数据库共享内存的示意图;
30.图3是根据本发明一个实施例的数据库共享内存缓冲池的处理方法取消关系固定的流程示意图;
31.图4是根据本发明一个实施例的数据库共享内存缓冲池的处理方法进行关系固定的流程示意图;
32.图5是根据本发明一个实施例的机器可读存储介质的示意图;以及
33.图6是根据本发明一个实施例的计算机设备的示意图。
具体实施方式
34.图1是根据本发明一个实施例的数据库共享内存缓冲池的处理方法的示意流程图,图2根据本发明一个实施例的数据库共享内存缓冲池的处理方法中数据库共享内存的示意图。数据库共享内存缓冲池的处理方法一般性地可包括:
35.步骤s102,获取用于使数据库的固定缓冲关系解除固定的指令;
36.步骤s104,判断固定缓冲关系的全部页面是否已经缓存在固定缓冲池中;
37.步骤s106,若是,将固定缓冲关系的页面从固定缓冲池移动至普通缓冲池,其中数据库的共享内存预先开辟有固定缓冲池以及普通缓冲池,并且固定缓冲池和普通缓冲池相互独立;
38.步骤s108,将固定缓冲关系的固定标记设置为非固定状态。
39.在本实施例的数据库中,共享内存的缓冲空间预先开辟有普通缓冲池以及固定缓冲池。普通缓冲池使用传统的缓冲置换算法,进行页面的普通置换,例如采用lru、lfu等置换算法。固定缓冲池用于供数据库用户指定的关系进行缓冲。固定缓冲池与普通缓冲池互相独立,在关系移入固定缓冲池后,该固定缓冲关系不再参与普通页面置换,避免了因页面置换导致的多余i/o开销。
40.在需要将关系移出固定缓冲池,实现对固定缓冲池内页面的置换时,首先确定用于解除固定的指令所对应的固定缓冲关系的全部页面是否已经缓存在固定缓冲池中,然后将固定缓冲关系的页面从固定缓冲池移动至普通缓冲池,使固定缓冲关系退出固定缓存,参与普通缓冲池的普通置换。从而为固定缓冲池腾出空闲空间,使得数据库可以灵活高效地利用缓存机制。
41.固定缓冲池的大小可以通过配置文件配置,且与普通缓冲池独立存在。一个数据库页面的缓存要么存在于固定缓冲池中,要么存在于普通缓冲池中。数据库可以通过一个哈希表建立从磁盘页面号到缓冲池具体位置的映射,缓冲池具体位置则包含了所在缓冲池以及相对于缓冲池基地址的偏移,则通过缓冲池基地址与上述偏移量就可以确定页面在缓
冲池具体位置。
42.布置数据库的磁盘上可以存储数据文件21、日志文件22、配置文件23,数据库的共享内存10中可以开辟有普通缓冲池11、固定缓冲池12、其他共享内存。如本领域技术人员所习知的,磁盘的读取速度明显慢于内存的读取速度。本实施例的数据库,在共享内存10内开辟出普通缓冲池11、固定缓冲池12。普通缓冲池11可以用于页面的正常缓存,固定缓冲池12可以按照数据库用户的设置使指定的关系被固定缓存。
43.缓冲池内关系页面的页面头上可以设置记录该页面的相关状态的存储位,记录的信息可以包括页面是否存在于固定缓冲池中、引用计数器、是否可以被置换和清理等。例如关系页面的页面头上可以设置固定标记以及固定缓冲池标记,其中固定标记用于标记该关系已经移入固定缓冲池,固定缓冲池标记用于标记该关系已经被指定为固定缓冲关系。
44.如果步骤s104的判断结果为固定缓冲关系的全部页面并未缓存在固定缓冲池中,则表明固定缓冲关系并未存入固定缓冲池,在该情况下,不需要进行取消固定的操作。
45.步骤s102的指令可以使用sql(structured query language,结构化查询语言),并包含需要取消固定的固定缓冲关系的信息,例如关系标识、名称等。在步骤s102之后,还可以解析指令,确定指令对应的固定缓冲关系;打开固定缓冲关系,并确定固定缓冲关系的固定缓冲池标记是否为固定状态;若是,则将固定缓冲池标记置为非固定状态。通过修改固定缓冲池标记,将关系标识为取消固定的状态。在固定缓冲关系的固定缓冲池标记为非固定状态的情况下,还可以包括输出报错信息,以报告指令对应的关系并非固定缓冲关系。也即在取消固定的指令所指示的关系,自身并未指示为固定缓冲关系的情况下,指令可能存在错误,此时利用报错信息,向数据库用户报告指令对应的关系并非固定缓冲关系,以便进行查证。
46.步骤s106将固定缓冲关系的页面从固定缓冲池移动至普通缓冲池的步骤之后还包括:解除对固定缓冲关系的引用计数器的限制,使得固定缓冲关系参与普通缓冲池的缓冲置换。另外在步骤s106之后还可以清理固定缓冲池的空间,并确定固定缓冲池的剩余空间,以供存储其他固定缓冲关系。
47.图3是根据本发明一个实施例的数据库共享内存缓冲池的处理方法取消关系固定的流程示意图,对一个数据库关系取消固定缓存的过程包括:
48.步骤s302,获取用于使数据库的固定缓冲关系解除固定的指令;
49.步骤s304,解析指令,确定并打开指令对应的固定缓冲关系;
50.步骤s306,确定固定缓冲关系的固定缓冲池标记是否为固定状态;
51.步骤s308,在固定缓冲关系的固定缓冲池标记为非固定状态的情况下,还包括:输出报错信息,以报告指令对应的关系并非固定缓冲关系;
52.步骤s310,判断固定缓冲关系的全部页面是否已经缓存在固定缓冲池中;
53.步骤s312,将固定缓冲关系的页面从固定缓冲池移动至普通缓冲池;
54.步骤s314,将固定缓冲关系的固定标记设置为非固定状态;
55.步骤s316,解除对固定缓冲关系的引用计数器的限制,使得固定缓冲关系参与普通缓冲池的缓冲置换;
56.步骤s318,清理固定缓冲池的空间,并确定固定缓冲池的剩余空间,以供存储其他固定缓冲关系;
57.本实施例的数据库共享内存缓冲池的处理方法还提供了对固定缓冲关系进行固定的过程。也即在在获取用于使数据库的固定缓冲关系解除固定的指令的步骤之前还包括:获取缓冲池设置指令;解析缓冲池设置指令,确定出需要指定的固定缓冲关系;将固定缓冲关系的固定缓冲池标记修改为固定状态;在获取到对固定缓冲关系的访问后,启动将固定缓冲关系移入固定缓冲池的流程。
58.在将固定缓冲关系移入固定缓冲池的步骤之后还可以包括:将固定缓冲关系的引用计数器置为大于等于1,并在共享内存的缓存空间进行缓冲置换的过程中,维持固定缓冲关系的引用计数器大于等于1。
59.当一个关系指定使用固定缓冲池时,该关系的当前所有页面以及后续扩展的所有页面均会被加入固定缓冲池中,除非固定缓冲池的容量已经耗尽。在固定缓冲池的容量耗尽的情况下,则页面仍然被存储在普通缓冲池中,直到固定缓冲池出现额外空间后,该关系的下一次被访问时,才会重新固定缓存这部分页面。
60.图4是根据本发明一个实施例的数据库共享内存缓冲池的处理方法进行关系固定的流程示意图,对一个数据库关系执行固定缓存的过程包括:
61.步骤s402,获取数据库用户输入的缓冲池设置指令,该缓冲池设置指令用于指定数据库的一个关系使用固定缓冲池;
62.步骤s404,数据库解析缓冲池设置指令,确定需要指定的固定缓冲关系;
63.步骤s406,打开指定的固定缓冲关系,将其固定缓冲池标记置为固定状态;
64.步骤s408,获取对数据库的访问,确定该访问是上述固定缓冲关系被指定后的首次访问;
65.步骤s410,将该固定缓冲关系的所有页面读取到共享内存的普通缓冲池中;通过执行步骤s412至步骤s418,尝试将固定缓冲关系固定到固定缓冲池中;
66.步骤s412,判断固定缓冲池是否存在剩余空间;
67.步骤s414,若存在剩余空间,则将上述读取到共享内存的普通缓冲池中的页面移动至固定缓冲池中,并将固定标记设置为固定状态,将引用计数器设置为1;
68.步骤s416,若不存在剩余空间,放弃固定缓冲池的操作;
69.步骤s418,后续缓冲池置换流程中,对于固定标记为固定状态的页面,其引用计数器限制为不会被减少到1以下,避免该页面被置换。普通缓冲池模中的页面正常参与页面置换。
70.通过上述步骤,数据库用户可以基于已知的访问频率信息设置数据库的置换算法,尤其是可以针对数据库大小较小且访问频率较高的表或索引,为其赋予较高的内存缓冲区粘性。如果指定了合适的高频访问表或索引,则可以有效降低由缓冲区置换带来的多余i/o开销,并提高数据库整体性能。
71.本实施例还提供了一种机器可读存储介质和计算机设备。图5是根据本发明一个实施例的机器可读存储介质40的示意图,图6是根据本发明一个实施例的计算机设备50的示意图。
72.机器可读存储介质40其上存储有机器可执行程序41,机器可执行程序41被处理器执行时实现上述任一实施例的数据库共享内存缓冲池的处理方法。
73.计算机设备50可以包括存储器520、处理器510及存储在存储器520上并在处理器
510上运行的机器可执行程序41,并且处理器510执行机器可执行程序41时实现上述任一实施例的数据库共享内存缓冲池的处理方法。
74.需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何机器可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
75.就本实施例的描述而言,机器可读存储介质40可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质40甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
76.应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。
77.计算机设备50可以是例如服务器、台式计算机、笔记本式计算机、平板计算机或智能手机。在一些示例中,计算机设备50可以是云计算节点。计算机设备50可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机设备50可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
78.计算机设备50可以包括适于执行存储的指令的处理器510、在操作期间为所述指令的操作提供临时存储空间的存储器520。处理器510可以是单核处理器、多核处理器、计算集群或任何数量的其他配置。存储器520可以包括随机存取存储器(ram)、只读存储器、闪存或任何其他合适的存储系统。
79.处理器510可以通过系统互连(例如pci、pci-express等)连接到适于将计算机设备50连接到一个或多个i/o设备(输入/输出设备)的i/o接口(输入/输出接口)。i/o设备可以包括例如键盘和指示设备,其中指示设备可以包括触摸板或触摸屏等等。i/o设备可以是计算机设备50的内置组件,或者可以是外部连接到计算设备的设备。
80.处理器510也可以通过系统互连链接到适于将计算机设备50连接到显示设备的显示接口。显示设备可以包括作为计算机设备50的内置组件的显示屏。显示设备还可以包括外部连接到计算机设备50的计算机监视器、电视机或投影仪等。此外,网络接口控制器(network interface controller,nic)可以适于通过系统互连将计算机设备50连接到网络。在一些实施例中,nic可以使用任何合适的接口或协议(诸如因特网小型计算机系统接
口等)来传输数据。网络可以是蜂窝网络、无线电网络、广域网(wan))、局域网(lan)或因特网等等。远程设备可以通过网络连接到计算设备。
81.本实施例提供的流程图并不旨在指示方法的操作将以任何特定的顺序执行,或者方法的所有操作都包括在所有的每种情况下。此外,方法可以包括附加操作。在本实施例方法提供的技术思路的范围内,可以对上述方法进行附加的变化。
82.至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1