CN103279562B - 一种用于数据库二级缓存的方法、装置及数据库存储*** - Google Patents
一种用于数据库二级缓存的方法、装置及数据库存储*** Download PDFInfo
- Publication number
- CN103279562B CN103279562B CN201310234105.9A CN201310234105A CN103279562B CN 103279562 B CN103279562 B CN 103279562B CN 201310234105 A CN201310234105 A CN 201310234105A CN 103279562 B CN103279562 B CN 103279562B
- Authority
- CN
- China
- Prior art keywords
- data page
- solid state
- state hard
- hard disc
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施方式提供了用于数据库二级缓存的方法,例如可以包括:响应于从数据库缓冲池中删除数据页,将该需要删除的数据页写入固态硬盘;和/或者,响应于从数据库缓冲池中刷新数据页,保留固态硬盘中该需要刷新的数据页之前被刷新的版本,将该需要刷新的数据页写入固态硬盘;当需将固态硬盘中的数据页刷新到磁盘时,将固态硬盘中相同数据页中最近被刷新的版本刷新到磁盘的数据库文件中,实现了提高数据库性能的目的。此外,还提供了用于数据库二级缓存的装置及存储***。
Description
技术领域
本发明的实施方式涉及数据库领域,更具体地,本发明的实施方式涉及一种用于数据库二级缓存的方法、装置及数据库存储***。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述可包括可以探究的概念,但不一定是之前已经想到或者已经探究的概念。因此,除非在此指出,否则在本部分中描述的内容对于本申请的说明书和权利要求书而言不是现有技术,并且并不因为包括在本部分中就承认是现有技术。
在缓存领域,具有高随机IO(输入输出)特性的固态硬盘目前正逐渐在缓存解决方案中使用。
例如,在现有的一种缓存解决方案中,将固态硬盘作为数据库的缓存。在该方案中,从数据库缓冲池(位于内存)中删除的数据页不会放入缓存(固态硬盘)。该缓存用于保存读取操作读取出的数据页,即,只要读取出数据页,就将数据页写入缓存,下次再读取该数据页时,可在缓存中读取出该数据页以提高数据库读取速度。
再例如,在现有的另一种缓存解决方案中,同样将固态硬盘作为数据库的缓存。在该方案中,在需要刷新数据页时,先擦除固态硬盘中需要刷新的数据页之前被写入的版本,再写入刷新的数据页。为了避免部分写失败而导致数据页丢失,每次被刷新的数据页,不仅写入固态硬盘,还必须写入磁盘中的数据库。
发明内容
但是,由于从数据库缓冲池中删除的数据页无法从缓存中获得,影响了数据库的读取性能。
另外,现有技术在需要刷新数据页时,为了解决部分写失败需将每次刷新的数据页不仅写入固态硬盘,还要写入磁盘,导致写的开销增加了一倍,影响了数据库性能。
因此,在现有技术中,基于固态硬盘的数据库二级缓存的读取以及刷新并没有与数据库的性能需求相适应。
为此,非常需要一种改进的数据库二级缓存方法,以使基于固态硬盘的数据库二级缓存的读取以及刷新能够满足数据库的性能需求。
在本上下文中,本发明的实施方式期望提供一种用于数据库二级缓存的方法、装置及数据库存储***。
在本发明实施方式的第一方面中,提供了一种用于数据库二级缓存的方法,例如,可以包括:响应于从数据库缓冲池中删除数据页,将该需要删除的数据页写入固态硬盘;和/或者,响应于从数据库缓冲池中刷新数据页,保留固态硬盘中该需要刷新的数据页之前被刷新的版本,将该需要刷新的数据页写入固态硬盘;当需将固态硬盘中的数据页刷新到磁盘时,将固态硬盘中相同数据页中最近被刷新的版本刷新到磁盘的数据库文件中。
在本发明实施方式的第二方面中,提供了一种用于数据库二级缓存的装置,例如,可以包括:第一写入缓存单元:可以配置用于响应于从数据库缓冲池中删除数据页,将该需要删除的数据页写入固态硬盘;和/或者,第二写入缓存单元:可以配置用于响应于从数据库缓冲池中刷新数据页,保留固态硬盘中该需要刷新的数据页之前被刷新的版本,将该需要刷新的数据页写入固态硬盘;写入磁盘单元:配置用于当需将固态硬盘中的数据页刷新到磁盘时,将固态硬盘中相同数据页中最近被刷新的版本刷新到磁盘的数据库文件中。
在本发明实施方式的第三方面中,提供了一种数据库存储***,例如,可以包括:磁盘:可以用于保存数据库文件;固态硬盘:可以用于保存从数据库缓冲池中被删除的数据页,和/或者,被刷新的数据页;数据库二级缓存装置:可以响应于从数据库缓冲池中删除数据页,将该需要删除的数据页写入固态硬盘;和/或者,响应于从数据库缓冲池中刷新数据页,保留固态硬盘中该需要刷新的数据页之前被刷新的版本,将该需要刷新的数据页写入固态硬盘;当需将固态硬盘中的数据页刷新到磁盘时,将固态硬盘中相同数据页中最近被刷新的版本刷新到磁盘的数据库文件中。
根据本发明实施方式的用于数据库二级缓存的方法、装置及数据库存储***,可以当需要从数据库缓冲池中删除数据页时,将该需要删除的数据页写入固态硬盘,因此,该固态硬盘可以作为缓冲池的有效缓存,当后续需要读取数据页时,可以从固态硬盘中读取出这些已从缓冲池中删除的数据页,提高数据库的读取性能。
另外,本发明实施方式的方法在读取数据页时,如果固定硬盘及缓冲池中均不存在相应数据页,从磁盘的数据库文件中读取出相应数据页,并且从磁盘的数据库文件中读取出相应数据页之后,就放入数据库缓冲池并禁止将所述数据页写入所述固态硬盘,因此,被读取出的数据页将不再写入固态硬盘,因此,不会因为读取操作而增加缓存写操作,从而提高读取速度,提高了数据库的性能;
另外,当需要刷新数据页时,由于保留了固态硬盘中该数据页之前被刷新的版本,将需要刷新的数据页写入固态硬盘,因此,在固态硬盘中可以保留同一数据页之前被刷新的版本及当次最近被刷新的版本,即使发生部分写失败,也可以利用同一数据页之前被刷新的版本恢复数据页,因此,无需将每次刷新的数据页均写入磁盘,而可以按实际需要,当需将固态硬盘中的数据页刷新到磁盘时,将固态硬盘中相同数据页中最近被刷新的版本刷新到磁盘的数据库文件中,从而可以减少写的开销,提高数据库性能。
可见,应用本发明的实施例可以在实际应用环境中减少数据库的总体使用成本。例如,现有技术中云阅读环境下的存储设备可能需要SAS600G,而应用本发明的实施例的云阅读环境,存储设备可以调整为了磁盘SATA2T+固态硬盘SSD120G,磁盘IO负载从高峰时期的90%下降为了20%,平均响应时间从50ms下降为了1ms,显著提高了数据库的性能。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性地示出了适于实现本发明实施方式的示例性计算***100的框图;
图2示意性地示出了根据本发明实施例的应用场景;
图3示意性地示出了根据本发明实施例的方法流程示意图;
图4示意性地示出了根据本发明实施例的装置结构示意图;
图5示意性地示出了根据本发明实施例的***结构示意图;
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
图1示出了适于实现本发明实施方式的示例性计算***100的框图。如图1所示,计算***100可以包括:中央处理单元(CPU)101、随机存取存储器(RAM)102、只读存储器(ROM)103、***总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。这些设备中,与***总线104耦合的有CPU101、RAM102、ROM103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应当理解,图1所述的结构框图仅仅是为了示例的目的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。
本领域技术技术人员知道,本发明的实施方式可以实现为一种***、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式,本文一般称为“电路”、“模块”或“***”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举示例)例如可以包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络(包括局域网(LAN)或广域网(WAN))连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法的流程图和设备(或***)的框图描述本发明的实施方式。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置的产品。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
根据本发明的实施方式,提出了一种数据库二级缓存方法、装置及数据库存储***。
在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,现有技术基于固态硬盘的数据库二级缓存并没有针对数据库的性能进行优化。
首先,现有技术中,在读取操作时,无法从缓存中读取到从数据库缓冲池中删除的数据页,导致缓存(固态硬盘)未发挥提高数据库读取性能的作用。
针对这一问题,本发明人提出可以将缓存池中删除的数据页放入固态硬盘,以待后续读取数据页时,可以从固定硬盘中读取出已被数据库缓冲池删除的数据页,提高数据库的读取性能。
另外,现有技术在刷新数据页时,为了解决部分写失败带来的问题,需将每次刷新的数据页不仅写入固态硬盘,还要写入磁盘,导致写的开销增加了一倍;
针对这一问题,本发明人提出在刷新操作时,保留该需要刷新的数据页之前被刷新的版本,以顺序写入的方式将需要刷新的数据页写入固态硬盘,即使发生部分写失败,也可以利用相同数据页之前被刷新的版本,因此,可以按需将相同数据页中最近被刷新的版本写入磁盘,而不必在每次刷新时都写入磁盘,可以减少大量写操作,提高数据库性能。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图2,如图2所示,本发明示例性实施方式的数据库二级缓存方法可以应用于包括用于保存数据库文件的磁盘201,用于作为数据库二级缓存的固态硬盘202的数据库存储***。
示例性方法
下面结合图2的应用场景,参考图3来描述根据本发明示例性实施方式的用于数据库二级缓存的方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
参见图3,为本发明实施例提供的一种用于数据库二级缓存的方法流程示意图,如图所示,该方法可以包括针对数据库二级缓存的读取操作的改进,如:
S310、响应于从数据库缓冲池中删除数据页,将该需要删除的数据页写入固态硬盘。
例如,可以通过监测该数据库缓冲池所使用的LRU(最近最少使用)算法的运算结果,实时得到根据LRU算法从数据库缓冲池中被替换的数据页,该需要被替换的数据页即为需要从数据库缓冲池中删除的数据页,从而可以当需要从数据库缓冲池中删除数据页时,及时将该需要删除的数据页写入固态硬盘。
为了提高被写入固态硬盘的数据页的利用率,当需要从数据库缓冲池中删除数据页时,可以根据数据页的访问频率,从需要删除的数据页中选择可写入固态硬盘的数据页,将可写入固态硬盘的数据页写入固态硬盘。例如,可以从需要删除的数据页中选择访问频率在一定阈值范围内,或者访问频率相对较高的数据页,将这些数据页作为可写入固态硬盘的数据页写入固态硬盘。
和/或者,该方法可以包括针对数据库二级缓存的刷新操作的改进,如:
S320、当需要刷新数据页时,保留固态硬盘中该需要刷新的数据页之前被刷新的版本,将该需要刷新的数据页写入固态硬盘;
S321、当需将固态硬盘中的数据页刷新到磁盘时,将固态硬盘中相同数据页中最近被刷新的版本刷新到磁盘的数据库文件中。
另外,本发明人还发现,现有技术采取了只要读取出数据页即放入固态硬盘的读取策略,导致了数据库读取性能的降低。原因在于,数据页在读取出之后往往会发生更新,而现有技术的做法导致放入固态硬盘中的数据页往往实际并不可用,却在读取数据页时增加了大量的缓存写操作。针对这一问题,为了提高数据库的读取性能,本发明实施例提供的方法还可以包括:响应于需要从数据库读取数据页,如果固态硬盘及数据库缓冲池中均不存在相应数据页,则从磁盘的数据库文件中读取出相应数据页,放入数据库缓冲池并禁止将所述数据页写入所述固态硬盘。在该实现方式中,数据页在读取之后不再写入固态硬盘,因此,不会因为读取操作而增加缓存写操作,从而提高读取速度,提高了数据库的性能。
需要说明的是,数据页是否在数据库缓冲池中,及数据页是否在固态硬盘中这两个判断步骤不存在特定执行顺序,可以先执行其中一个再执行另一个,也可以同时执行,例如:所述如果固态硬盘及数据库缓冲池中均不存在相应数据页,从磁盘的数据库文件中读取出相应数据页可以包括:
判断数据库缓冲池中是否存在相应数据页,如果不存在,再判断固态硬盘中是否存在相应数据页,如果不存在,从磁盘的数据库文件中读取出相应数据页;
或者,
判断固态硬盘中是否存在相应数据页,如果不存在,再判断数据库缓冲池中是否存在相应数据页,如果不存在,从磁盘的数据库文件中读取出相应数据页。
下面,以下述两个实现方式为例,对步骤S320及S321的具体实现进行说明:
例如:当需要刷新数据页时,可以从固态硬盘中已写入的数据页之后的第一个空闲位置开始顺序写该需要刷新的数据页,其中所述固态硬盘中已写入的数据页包括该需要刷新的数据页之前被刷新的版本;
当需将固态硬盘中的数据页刷新到磁盘时,将相同数据页中,保存在最后一个存储位置的数据页刷新到磁盘的数据库文件中。
或者,
再例如:当需要刷新数据页时,将该需要刷新的数据页写在固态硬盘中已写入的数据页的存储区之外的任意空闲存储区,该需要刷新的数据页对应的日志编号按写入顺序进行编号,所述固态硬盘中已写入的数据页包括该数据页之前被刷新的版本;
当需将固态硬盘中的数据页刷新到磁盘时,查询每个数据页对应的日志编号;
将相同数据页中,对应的日志编号顺序排在最后一个的数据页刷新到磁盘的数据库文件中。
另外,当固态硬盘空间被写满时,被删除的数据页和/或者需要刷新的数据页,可以按FIFO(先入先出)算法顺序地写入到固态硬盘,从而可以保留固态硬盘中需要刷新的数据页之前被刷新的版本,具体如:从数据库缓冲池中被删除的数据页和/或者需要刷新的数据页在写入固态硬盘时,如果固态硬盘的存储空间已满,从固态硬盘中已写入的数据页中,最早写入的数据页的存储位置开始写入。
结合上述应用场景,应用本发明上述实施例,将从数据库缓冲池中删除的数据页写入固态硬盘,当需要读取数据页时,判断固定硬盘中是否存在相应数据页,如果不存在,且数据库缓冲池中不存在相应数据页,再从磁盘的数据库文件中读取出相应数据页,从而提高读取速度,而且在从磁盘的数据库文件读取出相应数据页后即返回读取出的数据页而不再写入固态硬盘,可以减少大量缓存写操作,从而提高数据库性能;
另外,应用上述实施例,可以在需要刷新数据页时,不擦除该数据页之前写入的版本,而是保留该需要刷新的数据页之前被刷新的版本,以顺序写入的方式将需要刷新的数据页写入固态硬盘,以解决部分写失败而导致的数据页丢失的问题,从而可以按需将相同数据页中最近被刷新的版本写入磁盘,而不必在每次刷新时都写入磁盘,可以减少大量缓存及磁盘的写操作,提高数据库性能。
示例性设备
在介绍了本发明示例性实施方式的方法之后,接下来,参考图4对本发明示例性实施方式的、用于数据库二级缓存的装置进行介绍。
参见图4,为本发明实施例提供的一种用于数据库二级缓存的装置的结构示意图,如图所示,该装置例如可以包括针对数据库二级缓存的读取操作的改进,如:
第一写入缓存单元410:可以配置用于响应于从数据库缓冲池中删除数据页,将该需要删除的数据页写入固态硬盘;
和/或者,该装置可以包括针对数据库二级缓存的刷新操作的改进,如:
第二写入缓存单元420:可以配置用于响应于从数据库缓冲池中刷新数据页,保留固态硬盘中该需要刷新的数据页之前被刷新的版本,将该需要刷新的数据页写入固态硬盘;
写入磁盘单元421:可以配置用于当需将固态硬盘中的数据页刷新到磁盘时,将固态硬盘中相同数据页中最近被刷新的版本刷新到磁盘的数据库文件中。
为了提高被写入固态硬盘的数据页的利用率,当需要从数据库缓冲池中删除数据页时,可以根据数据页的访问频率,从需要删除的数据页中选择可写入固态硬盘的数据页,将可写入固态硬盘的数据页写入固态硬盘。例如,其中第一写入缓存单元410:可以配置用于当需要从数据库缓冲池中删除数据页时,根据数据页的访问频率,从需要删除的数据页中选择可写入固态硬盘的数据页;将可写入固态硬盘的数据页写入固态硬盘。
为了解决现有技术由于采取了只要读取出数据页即放入固态硬盘的读取策略导致的数据库读取性能降低的问题,本发明实施例提供的装置还可以包括:读取单元411:可以配置用于响应于需要从数据库读取数据页,如果固态硬盘及数据库缓冲池中均不存在相应数据页,则从磁盘的数据库文件中读取出相应数据页,放入数据库缓冲池并禁止将所述数据页写入所述固态硬盘。
具体地,例如,其中所述读取单元411:可以配置用于判断数据库缓冲池中是否存在相应数据页,如果不存在,再判断固态硬盘中是否存在相应数据页,如果不存在,从磁盘的数据库文件中读取出相应数据页;或者,判断固态硬盘中是否存在相应数据页,如果不存在,再判断数据库缓冲池中是否存在相应数据页,如果不存在,从磁盘的数据库文件中读取出相应数据页。
在本发明一实施例中,其中第二写入缓存单元420:可以配置用于当需要刷新数据页时,从固态硬盘中已写入的数据页之后的第一个空闲位置开始顺序写该需要刷新的数据页,其中所述固态硬盘中已写入的数据页包括该需要刷新的数据页之前被刷新的版本;
相应地,其中写入磁盘单元421:可以配置用于当需将固态硬盘中的数据页刷新到磁盘时,将相同数据页中,保存在最后一个存储位置的数据页刷新到磁盘的数据库文件中。
在本发明另一实施例中,其中第二写入缓存单元420:可以配置用于当需要刷新数据页时,将该需要刷新的数据页写在固态硬盘中已写入的数据页的存储区之外的任意空闲存储区,该需要刷新的数据页对应的日志编号按写入顺序进行编号,所述固态硬盘中已写入的数据页包括该数据页之前被刷新的版本;
相应地,其中写入磁盘单元421:可以配置用于当需将固态硬盘中的数据页刷新到磁盘时,查询每个数据页对应的日志编号;将相同数据页中,对应的日志编号顺序排在最后一个的数据页刷新到磁盘的数据库文件中。
另外,当固态硬盘空间被写满时,被删除的数据页和/或者需要刷新的数据页,可以按FIFO(先入先出)算法顺序地写入到固态硬盘,从而可以保留固态硬盘中需要刷新的数据页之前被刷新的版本,具体如:其中第一写入缓存单元410:可以配置用于当从数据库缓冲池中被删除的数据页在写入固态硬盘时,如果固态硬盘的存储空间已满,从固态硬盘中已写入的数据页中,最早写入的数据页的存储位置开始写入;
和/或者,
其中第二写入缓存单元420:可以配置用于当需要刷新的数据页在写入固态硬盘时,如果固态硬盘的存储空间已满,从固态硬盘中已写入的数据页中,最早写入的数据页的存储位置开始写入。
结合上述应用场景,应用本发明上述实施例,第一写入缓存单元410将从数据库缓冲池中删除的数据页写入固态硬盘,读取单元411当需要读取数据页时,判断固定硬盘中是否存在相应数据页,如果不存在,且数据库缓冲池中不存在相应数据页,再从磁盘的数据库文件中读取出相应数据页,从而提高读取速度,而且在从磁盘的数据库文件读取出相应数据页后即返回读取出的数据页而不再写入固态硬盘,可以减少大量缓存写操作,从而提高数据库性能。
另外,应用本发明上述实施例,第二写入缓存单元420可以在需要刷新数据页时,不擦除该数据页之前写入的版本,而是保留该需要刷新的数据页之前被刷新的版本,以顺序写入的方式将需要刷新的数据页写入固态硬盘,以解决部分写失败而导致的数据页丢失的问题,从而,写入磁盘单元421可以按需将相同数据页中最近被刷新的版本写入磁盘,而不必在每次刷新时都写入磁盘,可以减少大量缓存及磁盘的写操作,提高数据库性能。
示例性***
在介绍了本发明示例性实施方式的装置之后,接下来,参考图5对本发明示例性实施方式的、数据库存储***进行介绍。
参见图5,为本发明实施例提供的一种数据库存储***的结构示意图,如图所示,该***例如可以包括:
磁盘510:用于保存数据库文件;
固态硬盘520:用于保存从数据库缓冲池中被删除的数据页,和/或者,被刷新的数据页;
数据库二级缓存装置530:用于响应于从数据库缓冲池中删除数据页,将该需要删除的数据页写入固态硬盘;和/或者,响应于从数据库缓冲池中刷新数据页,保留固态硬盘中该需要刷新的数据页之前被刷新的版本,将该需要刷新的数据页写入固态硬盘;当需将固态硬盘中的数据页刷新到磁盘时,将固态硬盘中相同数据页中最近被刷新的版本刷新到磁盘的数据库文件中。
可见,应用本发明上述数据库存储***,由于数据库二级缓存装置530将从数据库缓冲池中删除的数据页写入固态硬盘,提高了读取性能。
另外,应用本发明上述数据库存储***,由于数据库二级缓存装置530可以在需要刷新数据页时,不擦除该数据页之前写入的版本,而是保留该需要刷新的数据页之前被刷新的版本,以顺序写入的方式将需要刷新的数据页写入固态硬盘520,以解决部分写失败而导致的数据页丢失的问题,从而,可以按需将相同数据页中最近被刷新的版本写入磁盘510,而不必在每次刷新时都写入磁盘,可以减少大量缓存及磁盘的写操作,提高数据库性能。
应当注意,尽管在上文详细描述中提及了数据库二级缓存的装置及数据库存储***的若干装置或单元,但是这种划分仅仅并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多装置或单元的特征和功能可以在一个装置或单元中具体化。反之,上文描述的一个装置或单元的特征和功能可以进一步划分为由多个装置或单元来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
申请文件中提及的动词“包括”、“包含”及其词形变化的使用不排除除了申请文件中记载的那些元素或步骤之外的元素或步骤的存在。元素前的冠词“一”或“一个”不排除多个这种元素的存在。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。
Claims (11)
1.一种用于数据库二级缓存的方法,包括:
响应于从数据库缓冲池中删除数据页,将该需要删除的数据页写入固态硬盘;所述固态硬盘用于响应于读取已被数据库缓冲池删除的数据页的请求,从所述固态硬盘读取所述已被数据库缓冲池删除的所述数据页;所述固态硬盘不同于磁盘;
或者,
响应于从数据库缓冲池中删除数据页,将该需要删除的数据页写入固态硬盘;所述固态硬盘响应于读取已被数据库缓冲池删除的数据页的请求,从所述固态硬盘读取所述已被数据库缓冲池删除的所述数据页,所述固态硬盘不同于磁盘;以及,响应于从数据库缓冲池中刷新数据页,保留固态硬盘中该需要刷新的数据页之前被刷新的版本,将该需要刷新的数据页写入固态硬盘;当需将固态硬盘中的数据页刷新到磁盘时,将固态硬盘中相同数据页中最近被刷新的版本刷新到磁盘的数据库文件中;
其中,所述响应于从数据库缓冲池中删除数据页,将该需要删除的数据页写入固态硬盘的具体实现为:
当需要从数据库缓冲池中删除数据页时,根据数据页的访问频率,从需要删除的数据页中选择可写入固态硬盘的数据页;
将可写入固态硬盘的数据页写入固态硬盘;
其中,所述方法还包括:
响应于需要从数据库读取数据页,如果固态硬盘及数据库缓冲池中均不存在相应数据页,则从磁盘的数据库文件中读取出相应数据页,放入数据库缓冲池并禁止将所述数据页写入所述固态硬盘。
2.根据权利要求1所述的方法,其中所述如果固态硬盘及数据库缓冲池中均不存在相应数据页,从磁盘的数据库文件中读取出相应数据页包括:
判断数据库缓冲池中是否存在相应数据页,如果不存在,再判断固态硬盘中是否存在相应数据页,如果不存在,从磁盘的数据库文件中读取出相应数据页;
或者,
判断固态硬盘中是否存在相应数据页,如果不存在,再判断数据库缓冲池中是否存在相应数据页,如果不存在,从磁盘的数据库文件中读取出相应数据页。
3.根据权利要求1所述的方法,其中所述当需要刷新数据页时,保留固态硬盘中该需要刷新的数据页之前被刷新的版本,将该需要刷新的数据页写入固态硬盘的具体实现为:
当需要刷新数据页时,从固态硬盘中已写入的数据页之后的第一个空闲位置开始顺序写该需要刷新的数据页;
其中所述当需将固态硬盘中的数据页刷新到磁盘时,将固态硬盘中相同数据页中最近被刷新的版本刷新到磁盘的数据库文件中的具体实现为:
当需将固态硬盘中的数据页刷新到磁盘时,将相同数据页中,保存在最后一个存储位置的数据页刷新到磁盘的数据库文件中。
4.根据权利要求1所述的方法,其中所述当需要刷新数据页时,保留固态硬盘中该需要刷新的数据页之前被刷新的版本,将该需要刷新的数据页写入固态硬盘的具体实现为:
当需要刷新数据页时,将该需要刷新的数据页写在固态硬盘中已写入的数据页的存储区之外的任意空闲存储区,该需要刷新的数据页对应的日志编号按写入顺序进行编号;
其中所述当需将固态硬盘中的数据页刷新到磁盘时,将固态硬盘中相同数据页中最近被刷新的版本刷新到磁盘的数据库文件中的具体实现为:
当需将固态硬盘中的数据页刷新到磁盘时,查询每个数据页对应的日志编号;
将相同数据页中,对应的日志编号顺序排在最后一个的数据页刷新到磁盘的数据库文件中。
5.根据权利要求1所述的方法,其中所述从数据库缓冲池中被删除的数据页和/或者需要刷新的数据页在写入固态硬盘时,如果固态硬盘的存储空间已满,从固态硬盘中已写入的数据页中,最早写入的数据页的存储位置开始写入。
6.一种用于数据库二级缓存的装置,包括:
第一写入缓存单元:配置用于响应于从数据库缓冲池中删除数据页,将该需要删除的数据页写入固态硬盘;其中,所述固态硬盘不同于磁盘,所述固态硬盘用于响应于读取已被数据库缓冲池删除的数据页的请求,从所述固态硬盘读取所述已被数据库缓冲池删除的所述数据页;
或者,
第一写入缓存单元:配置用于响应于从数据库缓冲池中删除数据页,将该需要删除的数据页写入固态硬盘;其中,所述固态硬盘不同于磁盘,所述固态硬盘用于响应于读取已被数据库缓冲池删除的数据页的请求,从所述固态硬盘读取所述已被数据库缓冲池删除的所述数据页;以及,第二写入缓存单元:配置用于响应于从数据库缓冲池中刷新数据页,保留固态硬盘中该需要刷新的数据页之前被刷新的版本,将该需要刷新的数据页写入固态硬盘;写入磁盘单元:配置用于当需将固态硬盘中的数据页刷新到磁盘时,将固态硬盘中相同数据页中最近被刷新的版本刷新到磁盘的数据库文件中;
其中,所述第一写入缓存单元具体配置用于当需要从数据库缓冲池中删除数据页时,根据数据页的访问频率,从需要删除的数据页中选择可写入固态硬盘的数据页;将可写入固态硬盘的数据页写入固态硬盘;
所述装置还包括:
读取单元:配置用于响应于需要从数据库读取数据页,如果固态硬盘及数据库缓冲池中均不存在相应数据页,则从磁盘的数据库文件中读取出相应数据页,放入数据库缓冲池并禁止将所述数据页写入所述固态硬盘。
7.根据权利要求6所述的装置,其中所述读取单元:配置用于判断数据库缓冲池中是否存在相应数据页,如果不存在,再判断固态硬盘中是否存在相应数据页,如果不存在,从磁盘的数据库文件中读取出相应数据页;或者,判断固态硬盘中是否存在相应数据页,如果不存在,再判断数据库缓冲池中是否存在相应数据页,如果不存在,从磁盘的数据库文件中读取出相应数据页。
8.根据权利要求6所述的装置,其中所述第二写入缓存单元:配置用于当需要刷新数据页时,从固态硬盘中已写入的数据页之后的第一个空闲位置开始顺序写该需要刷新的数据页;
其中所述写入磁盘单元:配置用于当需将固态硬盘中的数据页刷新到磁盘时,将相同数据页中,保存在最后一个存储位置的数据页刷新到磁盘的数据库文件中。
9.根据权利要求6所述的装置,其中所述第二写入缓存单元:配置用于当需要刷新数据页时,将该需要刷新的数据页写在固态硬盘中已写入的数据页的存储区之外的任意空闲存储区,该需要刷新的数据页对应的日志编号按写入顺序进行编号;
其中所述写入磁盘单元:配置用于当需将固态硬盘中的数据页刷新到磁盘时,查询每个数据页对应的日志编号;将相同数据页中,对应的日志编号顺序排在最后一个的数据页刷新到磁盘的数据库文件中。
10.根据权利要求6所述的装置,其中所述第一写入缓存单元:配置用于当从数据库缓冲池中被删除的数据页在写入固态硬盘时,如果固态硬盘的存储空间已满,从固态硬盘中已写入的数据页中,最早写入的数据页的存储位置开始写入;
和/或者,
其中所述第二写入缓存单元:配置用于当需要刷新的数据页在写入固态硬盘时,如果固态硬盘的存储空间已满,从固态硬盘中已写入的数据页中,最早写入的数据页的存储位置开始写入。
11.一种数据库存储***,包括:
磁盘:用于保存数据库文件;
固态硬盘:用于保存从数据库缓冲池中被删除的数据页,和/或者,被刷新的数据页;以及,响应于读取已被数据库缓冲池删除的数据页的请求,从所述固态硬盘读取所述已被数据库缓冲池删除的所述数据页;所述固态硬盘不同于磁盘;
数据库二级缓存装置:用于响应于从数据库缓冲池中删除数据页,将该需要删除的数据页写入固态硬盘;或者,响应于从数据库缓冲池中删除数据页,将该需要删除的数据页写入固态硬盘以及响应于从数据库缓冲池中刷新数据页,保留固态硬盘中该需要刷新的数据页之前被刷新的版本,将该需要刷新的数据页写入固态硬盘;当需将固态硬盘中的数据页刷新到磁盘时,将固态硬盘中相同数据页中最近被刷新的版本刷新到磁盘的数据库文件中;以及,响应于需要从数据库读取数据页,如果固态硬盘及数据库缓冲池中均不存在相应数据页,则从磁盘的数据库文件中读取出相应数据页,放入数据库缓冲池并禁止将所述数据页写入所述固态硬盘;其中,所述响应于从数据库缓冲池中删除数据页,将该需要删除的数据页写入固态硬盘的具体实现为:当需要从数据库缓冲池中删除数据页时,根据数据页的访问频率,从需要删除的数据页中选择可写入固态硬盘的数据页;将可写入固态硬盘的数据页写入固态硬盘。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310234105.9A CN103279562B (zh) | 2013-06-09 | 2013-06-09 | 一种用于数据库二级缓存的方法、装置及数据库存储*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310234105.9A CN103279562B (zh) | 2013-06-09 | 2013-06-09 | 一种用于数据库二级缓存的方法、装置及数据库存储*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103279562A CN103279562A (zh) | 2013-09-04 |
CN103279562B true CN103279562B (zh) | 2017-10-10 |
Family
ID=49062080
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310234105.9A Active CN103279562B (zh) | 2013-06-09 | 2013-06-09 | 一种用于数据库二级缓存的方法、装置及数据库存储*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103279562B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107402819A (zh) * | 2017-08-04 | 2017-11-28 | 郑州云海信息技术有限公司 | 一种客户端缓存的管理方法及*** |
CN111506524B (zh) * | 2019-01-31 | 2024-01-30 | 华为云计算技术有限公司 | 一种数据库中淘汰、预加载数据页的方法、装置 |
CN112685335B (zh) * | 2020-12-28 | 2022-07-15 | 湖南博匠信息科技有限公司 | 数据存储*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101075241A (zh) * | 2006-12-26 | 2007-11-21 | 腾讯科技(深圳)有限公司 | 缓存处理方法以及缓存处理*** |
CN101777028A (zh) * | 2010-01-21 | 2010-07-14 | 北京北大众志微***科技有限责任公司 | 一种混合型二级存储***的实现方法及装置 |
CN102541757A (zh) * | 2011-11-30 | 2012-07-04 | 华为技术有限公司 | 写缓存方法、缓存同步方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6973557B2 (en) * | 2003-02-04 | 2005-12-06 | Sun Microsystems, Inc. | Apparatus and method for dual access to a banked and pipelined data cache memory unit |
JP2012203443A (ja) * | 2011-03-23 | 2012-10-22 | Toshiba Corp | メモリシステムおよびメモリシステムの制御方法 |
-
2013
- 2013-06-09 CN CN201310234105.9A patent/CN103279562B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101075241A (zh) * | 2006-12-26 | 2007-11-21 | 腾讯科技(深圳)有限公司 | 缓存处理方法以及缓存处理*** |
CN101777028A (zh) * | 2010-01-21 | 2010-07-14 | 北京北大众志微***科技有限责任公司 | 一种混合型二级存储***的实现方法及装置 |
CN102541757A (zh) * | 2011-11-30 | 2012-07-04 | 华为技术有限公司 | 写缓存方法、缓存同步方法和装置 |
Non-Patent Citations (1)
Title |
---|
回收站文件Recycler与Recycled的区别;小楼听雨;《新浪博客》;20120712;第1-4段 * |
Also Published As
Publication number | Publication date |
---|---|
CN103279562A (zh) | 2013-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9582433B2 (en) | Disk array flushing method and disk array flushing apparatus | |
CN108647151A (zh) | 一种全闪***元数据落盘方法、装置、设备及存储介质 | |
CN110147204B (zh) | 一种元数据落盘方法、装置、***及计算机可读存储介质 | |
CN107643880A (zh) | 基于分布式文件***的文件数据迁移的方法及装置 | |
CN110187832B (zh) | 一种数据操作的方法、设备和*** | |
US20080120456A1 (en) | Method for flash memory data management | |
CN107209714A (zh) | 分布式存储***及分布式存储***的控制方法 | |
CN104503703B (zh) | 缓存的处理方法和装置 | |
US10789170B2 (en) | Storage management method, electronic device and computer readable medium | |
CN109471843A (zh) | 一种元数据缓存方法、***及相关装置 | |
CN103279562B (zh) | 一种用于数据库二级缓存的方法、装置及数据库存储*** | |
CN103150245A (zh) | 确定数据实体的访问特性的方法和存储控制器 | |
CN115933994B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN109213450A (zh) | 一种基于闪存阵列的关联元数据删除方法、装置及设备 | |
CN110543435B (zh) | 存储单元的混合映射操作方法、装置、设备及存储介质 | |
CN103902471B (zh) | 数据缓存处理方法和装置 | |
CN102521162B (zh) | 用于缓存数据处理的方法和装置 | |
CN103577349B (zh) | 在高速缓存中选择数据进行刷盘的方法和装置 | |
WO2015087651A1 (ja) | メモリの使用可能期間を延ばすための装置、プログラム、記録媒体および方法 | |
CN109753446A (zh) | 一种存储***下刷缓存数据的方法 | |
US20170293566A1 (en) | Filtering write request sequences | |
CN111126619B (zh) | 一种机器学习方法与装置 | |
CN105589912B (zh) | 一种利用mram处理频写文件的方法及存储结构 | |
CN110990301A (zh) | 多plane存储介质的顺序读方法及相关装置 | |
CN108334457B (zh) | 一种io处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |