一种缓存预热的方法、装置及数据库系统与流程

文档序号:11627725阅读:202来源:国知局
一种缓存预热的方法、装置及数据库系统与流程

本发明涉及计算机技术领域,尤其涉及一种缓存预热的方法、装置及数据库系统。



背景技术:

缓存预热是指在数据库系统启动后,将硬盘中存储的与该业务相关的数据读入缓存,并根据这些数据的热度将这些数据的元信息组织成一种特定信息集合的过程。

目前,一种典型的数据库系统中使用缓存的应用场景如图1所示。在图1中,当数据库系统执行业务时,协调节点接收到查询语句后,协调节点可从相应数据节点的缓存中读取查询语句所需读取的数据。如果数据节点的缓存中没有该数据,则数据节点需要先从与其连接的硬盘中将该数据读到数据节点的缓存中,然后协调节点再从数据节点的缓存中读取该数据。例如,如图1所示,假设数据节点a的缓存中缓存有该数据,则协调节点可直接从数据节点a的缓存中读取该数据;假设数据节点b的缓存中没有缓存该数据,则数据节点b需要先从与其连接的硬盘中将该数据读到数据节点b的缓存中,然后协调节点再从数据节点b的缓存中读取该数据。当数据库系统中的某个数据节点发生故障时,该数据节点缓存的数据全部丢失,当该数据节点重启后,该数据节点的缓存都是空的,因此数据库系统需要在执行业务的过程中同时对该数据节点进行缓存预热。

然而,由于数据节点缓存的数据量通常都比较大,因此需要经过数小时或者数天才能完成对数据节点的缓存预热,如此若数据节点重启后数据库系统开始执行业务,则由于数据节点并没有完成缓存预热,因此数据节点可能需要先从与其连接的硬盘中将数据读到其缓存中,然后协调节点再从数据节点的缓存中读取该数据,从而使得数据库系统执行业务的效率比较低,进而导致数据库系统的性能下降。



技术实现要素:

本发明的实施例提供一种缓存预热的方法、装置及数据库系统,能够提高数据库系统执行业务的效率,从而提升数据库系统的性能。

为达到上述目的,本发明的实施例采用如下技术方案:

第一方面,本发明实施例提供一种缓存预热的方法,应用于数据库系统的数据节点中,所述方法包括:

第一数据节点获取第一元信息文件,所述第一元信息文件为第二数据节点发生故障前最后一次创建的元信息文件,所述第一元信息文件用于保存所述第二数据节点发生故障前所述第二数据节点的缓存中缓存的第一热数据的元信息;

所述第一数据节点根据所述第一元信息文件,将所述第一热数据从与所述第二数据节点连接的硬盘中读取到所述第一数据节点的缓存中。

本发明实施例提供的缓存预热的方法,由于数据库系统中的第一数据节点可以获取第二数据节点发生故障前最后一次创建的用于保存第二数据节点的缓存中缓存的第一热数据的元信息的第一元信息文件,且第一数据节点可以根据该第一元信息文件直接将第二数据节点发生故障前第二数据节点的缓存中缓存的第一热数据从与第二数据节点连接的硬盘中读取到第一数据节点的缓存中,因此可以缩短第一数据节点启动(包括正常启动和重启)后第一数据节点缓存预热的时间,如此当第一数据节点启动后数据库系统执行业务时,可以直接从第一数据节点的缓存中读取相应的数据,从而提高了数据库系统执行业务的效率,进而提升了数据库系统的性能。

热数据是指数据库系统中被频繁读取的数据。

上述第一热数据是指在第二数据节点发生故障前缓存在第二数据节点的缓存中的热数据,例如可以为数据页或者数据块等。

其中,可以通过一个预设的频率阈值来判断某个数据是否是热数据。例如,如果某个数据被读取的频率大于或者等于该频率阈值,则可确定该数据是热数据,反之,该数据不是热数据(通常也可以称为冷数据)。

上述第一元信息文件可以采用lru链表或者哈希表等形式实现。

可选的,本发明实施例提供的缓存预热的方法还包括:

所述第一数据节点创建第二元信息文件,所述第二元信息文件用于保存所述第一数据节点的缓存中当前缓存的第二热数据的元信息;

所述第一数据节点根据所述第一元信息文件和所述第二热数据,将所述第二热数据的元信息保存至所述第二元信息文件中,所述第一热数据包括所述第二热数据。

上述第二热数据为第一数据节点的缓存中当前缓存的热数据,例如可以为数据页或者数据块等。

第二元信息文件也可以采用lru链表或者哈希表等形式实现。

本发明实施例提供的缓存预热的方法中,第一数据节点通过创建第二元信息文件,并将第二数据节点的缓存中当前缓存的第二热数据的元信息保存到第二元信息文件中,可以保证当第一数据节点发生故障后,通过根据第二元信息文件将第一数据节点的缓存中缓存的第二热数据读取到其他数据节点的缓存中,如此即使第一数据节点发生故障,仍然能够保证数据库系统执行业务的效率,进而提升数据库系统的性能。

可选的,本发明实施例提供的缓存预热的方法中,所述第一数据节点根据所述第一元信息文件,将所述第一热数据从与所述第二数据节点连接的硬盘中读取到所述第一数据节点的缓存中之前,所述方法还包括:

所述第一数据节点根据所述硬盘的属性,确定所述第一数据节点从所述硬盘读取所述第一热数据的读取速率;

所述第一数据节点根据所述第一元信息文件,将所述第一热数据从与所述第二数据节点连接的硬盘中读取到所述第一数据节点的缓存中,包括:

所述第一数据节点根据所述第一元信息文件,按照所述读取速率,将所述第一热数据从所述硬盘中读取到所述第一数据节点的缓存中。

本发明实施例中,第一数据节点从与第二数据节点连接的硬盘读取第一热数据时,第一数据节点可以按照对该硬盘的读取速率读取,如此可以防止读取速率过大导致硬盘无法正常响应或者读取速率过小影响读取效率。

可选的,所述第一元信息文件中包括多个元信息项,所述第一热数据包括多个子第一热数据,所述多个元信息项与所述多个子第一热数据一一 对应,每个元信息项用于表示与该元信息项对应的子第一热数据的元信息,所述多个元信息项按照所述多个子第一热数据的热度顺序排列,

所述第一数据节点根据所述第一元信息文件,将所述第一热数据从与所述第二数据节点连接的硬盘中读取到所述第一数据节点的缓存中,包括:

所述第一数据节点根据所述多个元信息项,按照所述多个元信息项的排列顺序,依次将所述多个子第一热数据从所述硬盘中读取到所述第一数据节点的缓存中,直至所述第一数据节点的缓存已满或者所述多个子第一热数据均被读取到所述第一数据节点的缓存中为止。

如此可以高效、快速的将第一热数据中热度最大的一些热数据缓存到第一数据节点的缓存中,从而能够提高数据库系统执行业务的效率,提升数据库系统的性能。

可选的,所述每个元信息项中至少包括与该元信息项对应的子第一热数据的热度。

每个元信息项中的子第一热数据的热度可以用于表示该子第一热数据被读取的频率。

可选的,所述第一数据节点与所述第二数据节点为同一个数据节点;或者,所述第一数据节点为所述第二数据节点的备用数据节点。

本发明实施例中,当第二数据节点发生故障后,如果重启该第二数据节点,则重启后的数据节点称为第一数据节点,此时第一数据节点和第二数据节点为同一个数据节点;如果启动第二数据节点的备用数据节点代替第二数据节点,则启动后的该备用数据节点称为第一数据节点,此时第一数据节点和第二数据节点为两个不同的数据节点。

第二方面,本发明实施例提供一种缓存预热的装置,所述装置为第一数据节点,所述装置包括:

获取单元,用于获取第一元信息文件,所述第一元信息文件为第二数据节点发生故障前最后一次创建的元信息文件,所述第一元信息文件用于保存所述第二数据节点发生故障前所述第二数据节点的缓存中缓存的第一热数据的元信息;

读取单元,用于根据所述获取单元获取的所述第一元信息文件,将所 述第一热数据从与所述第二数据节点连接的硬盘中读取到所述装置的缓存中。

本发明实施例提供一种缓存预热的装置,该装置为数据库系统中的数据节点,例如第一数据节点,由于该装置可以获取第二数据节点发生故障前最后一次创建的用于保存第二数据节点的缓存中缓存的第一热数据的元信息的第一元信息文件,且该装置可以根据该第一元信息文件直接将第二数据节点发生故障前第二数据节点的缓存中缓存的第一热数据从与第二数据节点连接的硬盘中读取到该装置的缓存中,因此可以缩短该装置启动(包括正常启动和重启)后该装置缓存预热的时间,如此当该装置启动后数据库系统执行业务时,可以直接从该装置的缓存中读取相应的数据,从而提高了数据库系统执行业务的效率,进而提升了数据库系统的性能。

可选的,所述装置还包括创建单元和保存单元,

所述创建单元,用于创建第二元信息文件,所述第二元信息文件用于保存所述装置的缓存中当前缓存的第二热数据的元信息;

所述保存单元,用于根据所述获取单元获取的所述第一元信息文件和所述第二热数据,将所述第二热数据的元信息保存至所述创建单元创建的所述第二元信息文件中,所述第一热数据包括所述第二热数据。

可选的,所述获取单元,还用于在所述读取单元根据所述第一元信息文件,将所述第一热数据从与所述第二数据节点连接的硬盘中读取到所述装置的缓存中之前,根据所述硬盘的属性,确定所述读取单元从所述硬盘读取所述第一热数据的读取速率;

所述读取单元,具体用于根据所述获取单元获取的所述第一元信息文件,按照所述获取单元确定的所述读取速率,将所述第一热数据从所述硬盘中读取到所述装置的缓存中。

可选的,所述获取单元获取的第一元信息文件中包括多个元信息项,所述第一热数据包括多个子第一热数据,所述多个元信息项与所述多个子第一热数据一一对应,每个元信息项用于表示与该元信息项对应的子第一热数据的元信息,所述多个元信息项按照所述多个子第一热数据的热度顺序排列,

所述读取单元,具体用于根据所述获取单元获取的所述多个元信息 项,按照所述多个元信息项的排列顺序,依次将所述多个子第一热数据从所述硬盘中读取到所述装置的缓存中,直至所述装置的缓存已满或者所述多个子第一热数据均被读取到所述装置的缓存中为止。

可选的,所述每个元信息项中至少包括与该元信息项对应的子第一热数据的热度。

可选的,所述装置与所述第二数据节点为同一个数据节点;或者,

所述装置为所述第二数据节点的备用数据节点。

上述第二方面中各个可选方式带来的技术效果的描述具体可参见上述第一方面中对第一方面的各个相应的可选方式带来的技术效果的相关描述,此处不再赘述。

第三方面,本发明实施例提供一种缓存预热的装置,所述装置为第一数据节点,所述第一数据节点包括处理器、接口电路、存储器和系统总线;

所述存储器用于存储计算机执行指令,所述处理器、所述接口电路和所述存储器通过所述系统总线相互连接,当所述第一数据节点运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述第一数据节点执行上述第一方面及第一方面的各个可选方式任意之一所述的缓存预热的方法。

本发明实施例提供一种缓存预热的装置,该装置为数据库系统中的数据节点,例如第一数据节点,由于第一数据节点可以获取第二数据节点发生故障前最后一次创建的用于保存第二数据节点的缓存中缓存的第一热数据的元信息的第一元信息文件,且第一数据节点可以根据该第一元信息文件直接将第二数据节点发生故障前第二数据节点的缓存中缓存的第一热数据从与第二数据节点连接的硬盘中读取到第一数据节点的缓存中,因此可以缩短第一数据节点启动(包括正常启动和重启)后第一数据节点缓存预热的时间,如此当第一数据节点启动后数据库系统执行业务时,可以直接从第一数据节点的缓存中读取相应的数据,从而提高了数据库系统执行业务的效率,进而提升了数据库系统的性能。

第四方面,本发明实施例提供一种数据库系统,所述数据库系统包括:

上述第二方面、第二方面的各个可选方式,以及第三方面任意之一所述的缓存预热的装置。

本发明实施例提供一种数据库系统,该数据库系统中至少包括第一数据节点(即上述的缓存预热的装置)和第二数据节点,第一数据节点为新启动的数据节点,第二数据节点为发生故障的数据节点。在该数据库系统中,由于第一数据节点可以获取第二数据节点发生故障前最后一次创建的用于保存第二数据节点的缓存中缓存的第一热数据的元信息的第一元信息文件,且第一数据节点可以根据该第一元信息文件直接将第二数据节点发生故障前第二数据节点的缓存中缓存的第一热数据从与第二数据节点连接的硬盘中读取到第一数据节点的缓存中,因此可以缩短第一数据节点启动(包括正常启动和重启)后第一数据节点缓存预热的时间,如此当第一数据节点启动后数据库系统执行业务时,可以直接从第一数据节点的缓存中读取相应的数据,从而提高了数据库系统执行业务的效率,进而提升了数据库系统的性能。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。

图1为现有技术提供的数据库系统执行业务的流程示意图;

图2为本发明实施例提供的缓存预热的方法示意图一;

图3为本发明实施例提供的缓存预热的方法示意图二;

图4为本发明实施例提供的缓存预热的方法示意图三;

图5为本发明实施例提供的缓存预热的方法示意图四;

图6为本发明实施例提供的缓存预热的装置的结构示意图一;

图7为本发明实施例提供的缓存预热的装置的结构示意图二;

图8为本发明实施例提供的第一数据节点的硬件示意图;

图9为本发明实施例提供的数据库系统的架构示意图。

具体实施方式

本文中字符“/”,一般表示前后关联对象是一种“或者”的关系。例如,a/b可以理解为a或者b。

本发明的说明书和权利要求书中的术语“第一”和第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一数据节点和第二数据节点等是用于区别不同的数据节点,而不是用于描述数据节点的特征顺序。

在本发明的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个元信息项是指两个或两个以上的元信息项;多个子第一热数据是指两个或两个以上的子第一热数据。

此外,本发明的描述中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透切理解本发明。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。

另外,在本发明实施例中,“示例的”、“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例的”、“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例的”、“示例性的”或者“例如”等词旨在以具体方式呈现概念。

下面将结合本发明实施例中的各个附图,对本发明实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。

本发明实施例提供一种缓存预热的方法、装置及数据库系统。该缓存预热的方法和装置可以应用于数据库系统中。具体的,该数据库系统中可以包括多个数据节点,每个数据节点均可以独立执行本发明实施例提供的缓存预热的方法。在数据库系统中,当一个数据节点发生故障后,为了数据库系统继续执行相应的业务,即保证该业务的连续性,可能会重启该数 据节点,或者也可能会由数据库系统中的其他备用数据节点代替该数据节点。无论是重启该数据节点,还是由数据库系统中的其他备用数据节点代替该数据节点,当某个数据节点启动后,该数据节点均可以采用本发明实施例提供的缓存预热的方法对其缓存进行预热。

本发明的下述实施例中,为了描述方便,将启动的数据节点称为第一数据节点,将发生故障的数据节点称为第二数据节点。本领域技术人员可以理解,第一数据节点和第二数据节点可以为同一个数据节点;或者第一数据节点可以为第二数据节点的备用数据节点,即第一数据节点和第二数据节点为两个不同的数据节点。

具体的,当第二数据节点发生故障后,如果重启该第二数据节点,则重启后的数据节点称为第一数据节点,此时第一数据节点和第二数据节点为同一个数据节点;如果启动第二数据节点的备用数据节点代替第二数据节点,则启动后的该备用数据节点称为第一数据节点,此时第一数据节点和第二数据节点为两个不同的数据节点。

如图2所示,本发明实施例提供一种缓存预热的方法,该方法可以包括:

s101、第一数据节点获取第一元信息文件。

其中,第一元信息文件为第二数据节点发生故障前最后一次创建的元信息文件,第一元信息文件用于保存第二数据节点发生故障前第二数据节点的缓存中缓存的第一热数据的元信息。

本发明实施例中,第一数据节点获取第二数据节点发生故障前最后一次创建的元信息文件的方法具体可以为:

第一数据节点在数据库系统中确定与第二数据节点的实例名称相同的元信息文件(该元信息文件可能会有多个),然后再从这些元信息文件中确定出最后一次创建的元信息文件,该最后一次创建的元信息文件即为上述的第一元信息文件。

其中,第一数据节点确定最后一次创建的元信息文件的方法可以为下述的一种:

(1)第一数据节点根据这些元信息文件的创建时间确定出创建时间 最晚的一个元信息文件,即为上述的第一元信息文件。

(2)第一数据节点分别计算第一数据节点启动的时间与这些元信息文件的创建时间之间的时间差值,并确定出时间差值最小的一个元信息文件,即为上述的第一元信息文件。

s102、第一数据节点根据第一元信息文件,将第一热数据从与第二数据节点连接的硬盘中读取到第一数据节点的缓存中。

热数据通常是指数据库系统中被频繁读取的数据,例如被频繁读取的数据页或数据块等。

示例性的,假设数据库系统中,在某段时间内,如果某些数据被读取的频率大于或者等于预设的频率阈值,则可以认为这些数据是被频繁读取的,即可以认为这些数据是热数据;相反的,如果某些数据被读取的频率小于该频率阈值,则可以认为这些数据不是被频繁读取的,即可以认为这些数据不是热数据(通常也可以称之为冷数据)。

其中,上述预设的频率阈值可以根据实际使用需求进行设定,例如可以为一个经验值,本发明不作具体限定。

本发明实施例中,第一热数据为第二数据节点发生故障前,第二数据节点的缓存中缓存的热数据。

元信息为描述数据的信息,主要是描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找以及文件记录等功能。

本发明实施例中的第一热数据的元信息为描述第一热数据的信息。在数据库系统中,通常采用最近最少使用(英文:leastrecentlyused,缩写:lru)链表或者哈希(英文:hash)表来保存第一热数据的元信息,即上述第一元信息文件可以为lru链表或者哈希表等。具体的,第一元信息文件的具体实现形式可以根据实际使用需求进行选择,本发明不作具体限定。

可选的,在数据节点的缓存中通常会缓存一些热数据,当数据库系统需要读取这些热数据时,可以直接从数据节点的缓存中读取,而不用再从与该数据节点连接的硬盘中读取,如此可以提高数据库系统执行业务的效率,提升数据库系统的性能。然而,当数据节点启动时,数据节点的缓存为空,即数据节点的缓存中并没有缓存数据,因此数据节点通过进行缓存 预热,可以使得其缓存中缓存的数据为被频繁读取的热数据,并且数据节点根据其缓存中缓存的热数据的热度,将这些热数据的元信息组织成一种特定信息集合,例如可以用上述的lru链表或者哈希表等表示该特定信息集合。

可选的,本发明实施例中,第一热数据的元信息中至少包括该第一热数据的热度。第一热数据的热度可以用于表示第一热数据被读取的频率。具体的,第一热数据的热度越大,表示第一热数据被读取的频率越高;相反的,第一热数据的热度越小,表示第一热数据被读取的频率越低。

可选的,上述第一热数据的元信息中还可以包括第一热数据所在文件(第一热数据在硬盘中是按照分布式文件形式存储的,每个文件均有一个编号,用于唯一标识该文件)的编号、第一热数据在与第二数据节点连接的硬盘中的偏移地址以及第一热数据的长度等。

本发明实施例提供的缓存预热的方法,由于第一元信息文件为第二数据节点在其发生故障前最后一次创建的,因此第一元信息文件中保存的第一热数据的元信息为第二数据节点发生故障前第二数据节点的缓存中缓存的第一热数据的元信息,即为第二数据节点发生故障前,第二数据节点根据第一热数据的热度,将第一热数据的元信息组织成的一种特定信息集合,如此第一数据节点根据第一元信息文件,可以直接将第一热数据从与第二数据节点连接的硬盘中读取到第一数据节点的缓存中,以完成第一数据节点的缓存预热,而不用再像现有技术一样需要进行复杂的缓存预热过程,从而能够缩短第一数据节点进行缓存预热的时间。

本发明实施例中的第一数据节点和第二数据节点可以为同一个数据节点,也可以为不同的数据节点,本发明不作具体限定。对于第一数据节点和第二数据节点的具体描述可参见上述如图2所示的实施例之前对第一数据节点和第二数据节点的相关描述,此处不再赘述。

本发明实施例提供一种缓存预热的方法,该方法应用于数据库系统的数据节点中,由于数据库系统中的第一数据节点可以获取第二数据节点发生故障前最后一次创建的用于保存第二数据节点的缓存中缓存的第一热数据的元信息的第一元信息文件,且第一数据节点可以根据该第一元信息文件直接将第二数据节点发生故障前第二数据节点的缓存中缓存的第一 热数据从与第二数据节点连接的硬盘中读取到第一数据节点的缓存中,因此可以缩短第一数据节点启动(包括正常启动和重启)后第一数据节点缓存预热的时间,如此当第一数据节点启动后数据库系统执行业务时,可以直接从第一数据节点的缓存中读取相应的数据,从而提高了数据库系统执行业务的效率,进而提升了数据库系统的性能。

可选的,结合图2,如图3所示,本发明实施例提供的缓存预热的方法还可以包括:

s103、第一数据节点创建第二元信息文件。

其中,第二元信息文件用于保存第一数据节点的缓存中当前缓存的第二热数据的元信息。

可选的,本发明实施例中的第二热数据的元信息为描述第二热数据的信息。在数据库系统中,通常采用lru链表或者哈希表来保存第二热数据的元信息,即上述第二元信息文件可以为lru链表或者哈希表等。具体的,第二元信息文件的具体实现形式可以根据实际使用需求进行选择,本发明不作具体限定。

可选的,本发明实施例中,第二热数据的元信息中至少包括该第二热数据的热度。第二热数据的热度可以用于表示第二热数据被读取的频率。具体的,第二热数据的热度越大,表示第二热数据被读取的频率越高;相反的,第二热数据的热度越小,表示第二热数据被读取的频率越低。

可选的,上述第二热数据的元信息中还可以包括第二热数据所在文件(第二热数据在硬盘中是按照分布式文件形式存储的,每个文件均有一个编号,用于唯一标识该文件)的编号、第二热数据在与第二数据节点连接的硬盘中的偏移地址以及第二热数据的长度等。

s104、第一数据节点根据第一元信息文件和第二热数据,将第二热数据的元信息保存至第二元信息文件中。

其中,第一热数据包括第二热数据。

本发明实施例中,由于第一数据节点为新启动的数据节点(正常启动或者重启),且第一数据节点根据第一元信息文件进行了缓存预热,因此数据库系统中并没有用于保存第一数据节点的缓存中当前缓存的第二热数据的元信息的文件,所以第一数据节点需要创建一个第二元信息文件, 用于保存第一数据节点的缓存中当前缓存的第二热数据的元信息。

本领域技术人员可以理解,由于第一数据节点和第二数据节点可以为同一个数据节点,也可以为两个不同的数据节点;因此第一数据节点的缓存大小和第二数据节点的缓存大小可能相同,也可能不同;即第一数据节点的缓存中缓存的第一热数据和第二数据节点的缓存中缓存的第二热数据可能相同,也可能不同。

示例性的,如果第一数据节点和第二数据节点为同一个数据节点,则第一数据节点的缓存大小和第二数据节点的缓存大小相同,即第一数据节点的缓存中缓存的第一热数据和第二数据节点的缓存中缓存的第二热数据可能相同。如果第一数据节点和第二数据节点为两个不同的数据节点,则第一数据节点的缓存大小和第二数据节点的缓存大小可能不同,即第一数据节点的缓存中缓存的第一热数据和第二数据节点的缓存中缓存的第二热数据也可能不同。如果第一数据节点和第二数据节点为两个不同的数据节点,则第一数据节点的缓存大小和第二数据节点的缓存大小也可能相同,即第一数据节点的缓存中缓存的第一热数据和第二数据节点的缓存中缓存的第二热数据也可能相同。当第一数据节点的缓存中缓存的第一热数据和第二数据节点的缓存中缓存的第二热数据不同时,第二热数据可能为第一热数据中的一部分热数据。

第一数据节点创建第二元信息文件后,第一数据节点需要根据第一元信息文件和第一数据节点的缓存中当前缓存的第二热数据,将第二热数据的元信息保存至第二元信息文件中。

示例性的,假设第二热数据可能为第一热数据中热度比较大的一部分热数据,那么第二元信息文件中保存的可能是第一元信息文件中这一部分热数据的元信息。例如,第一数据节点可以根据其缓存中缓存的第二热数据,将第一元信息文件中与第二热数据对应的元信息复制到第二元信息文件中。

本发明实施例可以不限制s101和s103的执行顺序。具体的,本发明实施例可以先执行s101,后执行s103;还可以先执行s103,后执行s101;还可以同时执行s101和s103。

其中,图3中仅以s103在s101和s102之后执行为例进行示例性 的说明,其并不作为对本发明实施例提供的缓存预热的方法的相关步骤的执行顺序的限定。

本发明实施例提供的缓存预热的方法中,第一数据节点通过创建第二元信息文件,并将第二数据节点的缓存中当前缓存的第二热数据的元信息保存到第二元信息文件中,可以保证当第一数据节点发生故障后,通过根据第二元信息文件将第一数据节点的缓存中缓存的第二热数据读取到其他数据节点的缓存中,如此即使第一数据节点发生故障,仍然能够保证数据库系统执行业务的效率,进而提升数据库系统的性能。

可选的,结合图2,如图4所示,在s102之前,本发明实施例提供的缓存预热的方法还可以包括:

s105、第一数据节点根据与第二数据节点连接的硬盘的属性,确定第一数据节点从该硬盘读取第一热数据的读取速率。

其中,与每个数据节点连接的硬盘的属性可以保存在该数据节点的数据库中。硬盘的属性可以包括对硬盘的读取/写入速率。

需要说明的是,本发明实施例中,当第一数据节点和第二数据节点为两个不同的数据节点时,第一数据节点作为第二数据节点的备用数据节点,因此第一数据节点可以访问第二数据节点的数据库,即第一数据节点可以获取到与第二数据节点连接的硬盘的属性。

当然,硬盘的属性还可以包括硬盘的名称、硬盘的型号以及硬盘的其他性能参数等,本发明实施例不再赘述。

如图4所示,上述s102具体可以包括:

s102a、第一数据节点根据第一元信息文件,按照该读取速率,将第一热数据从该硬盘中读取到第一数据节点的缓存中。

第一数据节点从与第二数据节点连接的硬盘读取第一热数据时,第一数据节点可以按照对该硬盘的读取速率读取,如此可以防止读取速率过大导致硬盘无法正常响应或者读取速率过小影响读取效率。

可选的,本发明实施例提供的缓存预热的方法中,上述第一元信息文件中可以包括多个元信息项,上述第一热数据可以包括多个子第一热数据。多个元信息项与多个子第一热数据一一对应,其中,每个元信息项用于表示与该元信息项对应的子第一热数据的元信息。多个元信息项按照多 个子第一热数据的热度顺序排列。

示例性的,多个元信息项可以按照多个子第一热数据的热度由大到小顺序排列;或者多个元信息项可以按照多个子第一热数据的热度由小到大顺序排列。具体的,可以根据实际使用需求进行设定,本发明不作具体限定。

结合图2,如图5所示,上述s102具体可以包括:

s102b、第一数据节点根据第一元信息文件中包括的多个元信息项,按照多个元信息项的排列顺序,依次将第一热数据中包括的多个子第一热数据从与第二数据节点连接的硬盘中读取到第一数据节点的缓存中。

需要说明的是,本发明实施例提供的缓存预热的方法中,第一数据节点可以循环执行将子第一热数据从与第二数据节点连接的硬盘中读取到第一数据节点的缓存中的步骤,直至第一数据节点的缓存已满或者多个子第一热数据(即第一热数据)均被读取到第一数据节点的缓存中为止。如此可以高效、快速的将第一热数据中热度最大的一些热数据缓存到第一数据节点的缓存中,从而能够提高数据库系统执行业务的效率,进而提升数据库系统的性能。

可选的,本发明实施例中,第一数据节点在执行上述s102b时,也可以进一步按照上述s105中确定的读取速率从与第二数据节点连接的硬盘中依次读取多个子第一热数据。

可选的,本发明实施例中,第一数据节点将与第二数据节点连接的硬盘中的第一热数据读取到第一数据节点的缓存中之后,为了防止第一数据节点发生故障导致其缓存中的数据丢失,第一数据节点可以周期性地将第一数据节点的缓存中缓存的第二热数据(可能与第一热数据相同或者为第一热数据中的一部分热数据)写入与第一数据节点连接的硬盘。由于该第二热数据的写入操作可能会导致写入数据的开销增加,因此为了解决该问题,本发明实施例提出基于随机存取存储器(英文:random-accessmemory,缩写:ram)的文件系统的实现方式。

具体的,本发明实施例采用基于ram的文件系统,并将与第一数据节点连接的硬盘的实际物理地址映射到基于ram的文件系统在第一数据节点的缓存中的虚拟内存地址,如此当第一数据节点对基于ram的文件 系统的虚拟内存地址进行读取/写入操作时,可以认为是对与第一数据节点连接的硬盘的实际物理地址进行读取/写入操作,且由于基于ram的文件系统的读取/写入操作的开销通常较小,因此本发明实施例采用基于ram的文件系统的实现方式可以降低第二热数据写入硬盘所带来的写入数据的开销。

本发明实施例中,第一数据节点将与第一数据节点连接的硬盘的实际物理地址映射到基于ram的文件系统在第一数据节点的缓存中的虚拟内存地址的方法具体可以通过mmap(将一个文件或者其它对象映射到内存)的方式实现。

本发明实施例提供的缓存预热的方法中,上述如图2至图5任意之一所示的方法流程中的第一数据节点均可以通过一个后备线程执行上述方法流程,当第一数据节点的缓存已满或者第一热数据均被读取到第一数据节点的缓存中时,第一数据节点可以停止该后备线程的执行。

可选的,本发明实施例提供的缓存预热的方法中,在执行上述如图2至图5任意之一所示的方法之前,第二数据节点首先需要创建第一元信息文件,并根据数据库系统执行业务过程中第二数据节点的缓存中缓存的第一热数据,将第一热数据的元信息保存至第一元信息文件中。

具体的,第二数据节点可以按照一定的周期创建第一元信息文件,并在第一元信息文件的数量满足预设的数量阈值后,用最晚创建的第一元信息文件替换最早创建的第一元信息文件,依次类推,当第二数据节点发生故障后,第一数据节点执行本发明实施例中上述如图2至图5任意之一所示的方法。

其中,上述预设的数量阈值可以根据实际使用需求进行设定,本发明不作具体限定。

可选的,本发明实施例中,第一数据节点完成缓存预热之后,第一数据节点还可以根据数据库系统所执行的业务,进一步地对其缓存中缓存的第二热数据进行更新。且第一数据节点还可以根据第一数据节点的缓存中缓存的第二热数据对第二元信息文件进行相应的更新。

第一数据节点通过对第一数据节点的缓存中缓存的第二热数据和第二元信息文件进行更新,可以保证第二元信息文件与第一数据节点的缓存 中缓存的第二热数据能够互相对应,从而能够提高数据库系统执行业务的准确性和效率,进而进一步提升数据库系统的性能。

如图6所示,本发明实施例提供一种缓存预热的装置,该缓存预热的装置可以应用于数据库系统中,该缓存预热的装置可以为数据库系统中的数据节点,该数据节点可以为第一数据节点,该第一数据节点可以包括用于执行上述如图2至图5任意之一所示的方法流程中第一数据节点执行的相应步骤的相应模块。示例的,该缓存预热的装置可以包括:

获取单元10,用于获取第一元信息文件,所述第一元信息文件为第二数据节点发生故障前最后一次创建的元信息文件,所述第一元信息文件用于保存所述第二数据节点发生故障前所述第二数据节点的缓存中缓存的第一热数据的元信息;读取单元11,用于根据所述获取单元10获取的所述第一元信息文件,将所述第一热数据从与所述第二数据节点连接的硬盘中读取到所述装置的缓存12中。

可选的,结合图6,如图7所示,所述装置还包括创建单元13和保存单元14,

所述创建单元13,用于创建第二元信息文件,所述第二元信息文件用于保存所述装置的缓存12中当前缓存的第二热数据的元信息;所述保存单元14,用于根据所述获取单元10获取的所述第一元信息文件和所述第二热数据,将所述第二热数据的元信息保存至所述创建单元13创建的所述第二元信息文件中,所述第一热数据包括所述第二热数据。

可选的,所述获取单元10,还用于在所述读取单元11根据所述第一元信息文件,将所述第一热数据从与所述第二数据节点连接的硬盘中读取到所述装置的缓存中之前,根据所述硬盘的属性,确定所述读取单元11从所述硬盘读取所述第一热数据的读取速率;所述读取单元11,具体用于根据所述获取单元10获取的所述第一元信息文件,按照所述获取单元10确定的所述读取速率,将所述第一热数据从所述硬盘中读取到所述装置的缓存12中。

可选的,所述获取单元10获取的第一元信息文件中包括多个元信息项,所述第一热数据包括多个子第一热数据,所述多个元信息项与所述多 个子第一热数据一一对应,每个元信息项用于表示与该元信息项对应的子第一热数据的元信息,所述多个元信息项按照所述多个子第一热数据的热度顺序排列。

相应的,所述读取单元11,具体用于根据所述获取单元10获取的所述多个元信息项,按照所述多个元信息项的排列顺序,依次将所述多个子第一热数据从所述硬盘中读取到所述装置的缓存12中,直至所述装置的缓存12已满或者所述多个子第一热数据均被读取到所述装置的缓存12中为止。

可选的,所述每个元信息项中至少包括与该元信息项对应的子第一热数据的热度。

可选的,所述装置与所述第二数据节点为同一个数据节点;或者,

所述装置为所述第二数据节点的备用数据节点。

可以理解,本实施例的缓存预热的装置(或者第一数据节点)可对应于上述如图2至图5任意之一所示的实施例的缓存预热的方法中的第一数据节点,并且本实施例的缓存预热的装置中的各个模块的划分和/或功能等均是为了实现如图2至图5任意之一所示的方法流程,为了简洁,在此不再赘述。

本发明实施例中,缓存预热的装置(或者第一数据节点)可以为数据库系统中的一个数据功能实体,该数据功能实体可以通过运行在某个硬件实体,例如物理机上的软件实现。

本发明实施例提供一种缓存预热的装置,该装置为数据库系统中的数据节点,例如第一数据节点,由于该装置可以获取第二数据节点发生故障前最后一次创建的用于保存第二数据节点的缓存中缓存的第一热数据的元信息的第一元信息文件,且该装置可以根据该第一元信息文件直接将第二数据节点发生故障前第二数据节点的缓存中缓存的第一热数据从与第二数据节点连接的硬盘中读取到该装置的缓存中,因此可以缩短该装置启动(包括正常启动和重启)后该装置缓存预热的时间,如此当该装置启动后数据库系统执行业务时,可以直接从该装置的缓存中读取相应的数据,从而提高了数据库系统执行业务的效率,进而提升了数据库系统的性能。

如图8所示,本发明实施例提供一种缓存预热的装置,所述装置为数据库系统中的数据节点,例如上述实施例中描述的第一数据节点。以第一数据节点为例,所述第一数据节点包括处理器20、接口电路21、存储器22和系统总线23。

所述存储器22用于存储计算机执行指令,所述处理器20、所述接口电路21和所述存储器22通过所述系统总线23相互连接,当所述第一数据节点运行时,所述处理器20执行所述存储器22存储的所述计算机执行指令,以使所述第一数据节点执行如图2至图5任意之一所示的缓存预热的方法。具体的缓存预热的方法可参见上述如图2至图5任意之一所示的实施例中的相关描述,此处不再赘述。

本实施例还提供一种存储介质,该存储介质可以包括所述存储器22。

所述处理器20可以为中央处理器(英文:centralprocessingunit,缩写:cpu)。所述处理器20还可以为其他通用处理器、数字信号处理器(英文:digitalsignalprocessing,简称dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(英文:field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

所述处理器20可以为专用处理器。该专用处理器可以包括具有第一数据节点相应专用处理功能的芯片。

所述存储器22可以包括易失性存储器(英文:volatilememory),例如随机存取存储器(英文:random-accessmemory,缩写:ram);所述存储器22也可以包括非易失性存储器(英文:non-volatilememory),例如只读存储器(英文:read-onlymemory,缩写:rom),快闪存储器(英文:flashmemory),硬盘(英文:harddiskdrive,缩写:hdd)或固态硬盘(英文:solid-statedrive,缩写:ssd);所述存储器22还可以包括上述种类的存储器的组合。

所述系统总线23可以包括数据总线、电源总线、控制总线和信号状态总线等。本实施例中为了清楚说明,在图8中将各种总线都示意为系统总线23。

所述接口电路21具体可以是第一数据节点上与其他数据节点进行交互的接口。所述处理器20通过所述接口电路21与其他数据节点之间进行数据的收发。

在具体实现过程中,上述如图2至图5任意之一所示的方法流程中的各步骤均可以通过硬件形式的处理器20执行存储器22中存储的软件形式的计算机执行指令实现。为避免重复,此处不再赘述。

可选的,一种可能的实现形式是,本发明实施例提供的缓存预热的装置,即上述第一数据节点可以包括硬件实体和软件环境,该硬件实体可以通过运行相应的软件环境实现第一数据节点的相应功能。例如该硬件实体可以为运行数据库系统的物理机等,该软件环境可以为运行在该硬件实体上的数据库系统等。

本发明实施例提供一种缓存预热的装置,该装置为数据库系统中的数据节点,例如第一数据节点,由于第一数据节点可以获取第二数据节点发生故障前最后一次创建的用于保存第二数据节点的缓存中缓存的第一热数据的元信息的第一元信息文件,且第一数据节点可以根据该第一元信息文件直接将第二数据节点发生故障前第二数据节点的缓存中缓存的第一热数据从与第二数据节点连接的硬盘中读取到第一数据节点的缓存中,因此可以缩短第一数据节点启动(包括正常启动和重启)后第一数据节点缓存预热的时间,如此当第一数据节点启动后数据库系统执行业务时,可以直接从第一数据节点的缓存中读取相应的数据,从而提高了数据库系统执行业务的效率,进而提升了数据库系统的性能。

本发明实施例提供一种数据库系统,该数据库系统可以包括缓存预热的装置,该缓存预热的装置可以为上述如图6至图8任意之一所示的实施例中描述的缓存预热的装置。如图9所示,该缓存预热的装置具体可以为数据库系统中的一个数据节点,即上述如图2至图8任意之一所示的实施例中的第一数据节点。进一步地,如图9所示,该数据库系统中还可以包括第二数据节点、第三数据节点等若干个数据节点,以及用于协调该若干个数据节点的协调节点,每个数据节点均有至少一个硬盘(图9中仅以一个数据节点连接一个硬盘为例进行示例性的说明)与其连接,用于存储该 数据节点的缓存中缓存的数据。其中,数据库系统中的每个数据节点均可以独立执行本发明实施例中上述如图2至图5任意之一所示的缓存预热的方法。

一种可能的实现形式是,本发明实施例中的数据库系统可以包括硬件实体和软件环境,该硬件实体可以通过运行相应的软件环境实现数据库系统的相应功能。例如,该硬件实体可以为物理机等,该软件环境可以为数据库系统等。具体的,该数据库系统中的所有数据节点可以共用一个硬件实体和一个软件环境实现,或者该数据库系统中每个数据节点都可以单独通过一个硬件实体和一个软件环境实现。具体的,可以根据实际数据库系统的形态来确定,本发明实施例不作具体限定。

本发明实施例提供一种数据库系统,该数据库系统中至少包括第一数据节点和第二数据节点,第一数据节点为新启动的数据节点,第二数据节点为发生故障的数据节点。在该数据库系统中,由于第一数据节点可以获取第二数据节点发生故障前最后一次创建的用于保存第二数据节点的缓存中缓存的第一热数据的元信息的第一元信息文件,且第一数据节点可以根据该第一元信息文件直接将第二数据节点发生故障前第二数据节点的缓存中缓存的第一热数据从与第二数据节点连接的硬盘中读取到第一数据节点的缓存中,因此可以缩短第一数据节点启动(包括正常启动和重启)后第一数据节点缓存预热的时间,如此当第一数据节点启动后数据库系统执行业务时,可以直接从第一数据节点的缓存中读取相应的数据,从而提高了数据库系统执行业务的效率,进而提升了数据库系统的性能。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分, 实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本发明各个实施例所述方法的全部或部分步骤。所述存储介质是非短暂性(英文:non-transitory)介质,包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

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