CN111881212A - 执行检查点操作的方法、装置、设备及存储介质 - Google Patents

执行检查点操作的方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN111881212A
CN111881212A CN202010740276.9A CN202010740276A CN111881212A CN 111881212 A CN111881212 A CN 111881212A CN 202010740276 A CN202010740276 A CN 202010740276A CN 111881212 A CN111881212 A CN 111881212A
Authority
CN
China
Prior art keywords
statement
database
execution
page number
wal
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.)
Withdrawn
Application number
CN202010740276.9A
Other languages
English (en)
Inventor
管玉伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN202010740276.9A priority Critical patent/CN111881212A/zh
Publication of CN111881212A publication Critical patent/CN111881212A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Retry When Errors Occur (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种执行检查点操作的方法、装置、设备及存储介质,属于数据库技术领域。所述方法包括:若检测到WAL文件的页数发生变化,且变化后的第一页数大于第一阈值且小于或等于第二阈值,则确定当前执行语句的语句类型;若当前执行语句的语句类型为写入语句,则允许根据后续检测到的数据库的执行语句对WAL文件继续进行数据写入;若当前执行语句的语句类型为非写入语句,则执行检查点操作,以将WAL文件中的数据同步到数据库中。如此,实现了根据当前执行语句的语句类型来动态调整检查点操作对应的阈值,使得数据库能够获得较佳的读取性能和写入性能。

Description

执行检查点操作的方法、装置、设备及存储介质
技术领域
本申请实施例涉及数据库技术领域,特别涉及一种执行检查点操作的方法、装置、设备及存储介质。
背景技术
WAL(Write-Ahead Logging,预写日志)模式是一种在数据库上新增的日志模式,用于提高数据库的并发性。WAL模式的工作原理是:数据库更改并不直接写入到数据库文件中,而是先写入到WAL文件中,在一段时间后,再将WAL文件中的数据同步到数据库中。其中,将WAL文件中的数据同步到数据库中的操作称为检查点操作。
相关技术中,一般由技术人员采用wal_autocheckpoint方式为检查点操作配置阈值,当WAL文件的页数大于该阈值时,自动执行检查点操作,通过检查点操作将WAL文件中的数据同步到数据库中。其中,阈值一般设置为100或1000等。而且,配置的阈值越小,WAL文件越小,数据库的读取性能越好,但同时阈值越小,检查点操作也越频繁,数据库的写入性能可能越差。反之,配置的阈值越大,检查点操作越不频繁,数据库的写入性能越好,但同时阈值越大,WAL文件越大,数据库的读取性能可能越差。
由于检查点操作对应的阈值是由技术人员根据人为经验设置的,因此所设置的阈值可能无法保证数据库读取性能和写入性能。
发明内容
本申请实施例提供了一种执行检查点操作的方法、装置、设备和存储介质,可以用于优化数据库的读取性能和写入性能。所述技术方案如下:
一方面,提供了一种执行检查点操作的方法,所述方法包括:
若检测到数据库的预写日志WAL文件的页数发生变化,且变化后的第一页数大于第一阈值且小于或等于第二阈值,则确定所述数据库的当前执行语句的语句类型,所述WAL文件用于存储所述数据库的执行语句所对应的更改数据,所述第二阈值大于所述第一阈值;
若所述当前执行语句的语句类型为写入语句,则允许根据后续检测到的所述数据库的执行语句对所述WAL文件继续进行数据写入;
若所述当前执行语句的语句类型为非写入语句,则执行检查点操作,所述检查点操作用于将所述WAL文件中的数据同步到所述数据库中。
可选地,所述确定所述数据库的当前执行语句的语句类型之前,还包括:
确定所述当前执行语句与前一次执行语句之间的语句时间差,所述前一次执行语句是指在所述当前执行语句之前触发的针对所述数据库的执行语句;
若所述语句时间差小于或等于时间差阈值,则执行确定所述数据库的当前执行语句的语句类型的步骤。
可选地,所述确定所述当前执行语句与前一次执行语句之间的语句时间差之后,还包括:
若所述语句时间差大于所述时间差阈值,则执行检查点操作。
可选地,所述方法还包括:
若检测到所述WAL文件的页数发生变化,且变化后的第一页数大于所述第二阈值,则执行检查点操作。
可选地,所述允许根据后续检测到的所述数据库的执行语句对所述WAL文件继续进行数据写入,包括:
若在所述当前执行语句之后检测到所述数据库的任一执行语句,则将所述任一执行语句对应的更改数据写入所述WAL文件;
在将所述任一执行语句对应的更改数据写入所述WAL文件之后,确定所述WAL文件的页数,得到第二页数;
根据所述第二页数,确定是否执行检查点操作。
可选地,所述若检测到数据库的预先日志WAL文件的页数发生变化,且变化后的第一页数大于第一阈值且小于或等于第二阈值,则确定所述数据库的当前执行语句的语句类型,包括:
在所述数据库的数据库文件被打开的情况下,运行与所述WAL文件关联的执行线程,所述执行线程用于监控所述WAL文件的页数,以及检测所述数据库的执行语句的语句类型;
若通过所述执行线程,检测到所述WAL文件的页数发生变化,则通过所述执行线程,获取所述WAL的数据库的页数,得到所述第一页数;
若所述第一页数大于所述第一阈值且小于或等于所述第二阈值,则通过所述执行线程,确定所述当前执行语句的语句类型。
可选地,所述通过所述执行线程,获取所述WAL的数据库的页数,得到所述第一页数,包括:
通过所述执行线程,调用在JNI层注册的回调函数,所述回调函数用于获取所述WAL文件的页数;
通过所述回调函数,获取所述WAL文件的页数,得到所述第一页数。
可选地,所述运行与所述WAL文件关联的执行线程之前,还包括:
在所述数据库的数据库文件被打开的情况下,确定所述数据库的数据库文件的打开模式;
若所述打开模式为WAL模式,则创建所述执行线程。
可选地,所述执行检查点操作,包括:
调用在JNI层注册的调用接口;
通过所述调用接口,调用数据库层的检查点接口;
通过所述检查点接口,执行所述检查点操作。
另一方面,提供了一种执行检查点操作的装置,所述装置包括:
第一确定模块,用于若检测到数据库对应的预先日志WAL文件的页数发生变化,且变化后的第一页数大于第一阈值且小于或等于第二阈值,则确定所述数据库的当前执行语句的语句类型,所述WAL文件用于存储所述数据库的执行语句所对应的更改数据,所述第二阈值大于所述第一阈值;
处理模块,用于若所述当前执行语句的语句类型为写入语句,则允许根据后续检测到的所述数据库的执行语句对所述WAL文件继续进行数据写入;
执行模块,用于若所述当前执行语句的语句类型为非写入语句,则调用检查点接口,通过所述检查点接口执行检查点操作,所述检查点操作用于将所述WAL文件中的数据同步到所述数据库中。
可选地,所述装置还包括:
第二确定模块,用于确定所述当前执行语句与前一次执行语句之间的语句时间差,所述前一次执行语句是指在所述当前执行语句之前触发的针对所述数据库的执行语句;
触发模块,用于若所述语句时间差小于或等于时间差阈值,触发第一确定模块执行确定所述数据库的当前执行语句的语句类型。
可选地,所述执行模块还用于:
若所述语句时间差大于所述时间差阈值,则执行检查点操作。
可选地,所述执行模块还用于:
若检测到所述WAL文件的页数发生变化,且变化后的第一页数大于所述第二阈值,则执行检查点操作。
可选地,所述处理模块用于:
若在所述当前执行语句之后检测到所述数据库的任一执行语句,则将所述任一执行语句对应的更改数据写入所述WAL文件;
在将所述任一执行语句对应的更改数据写入所述WAL文件之后,确定所述WAL文件的页数,得到第二页数;
根据所述第二页数,确定是否执行检查点操作。
可选地,所述第一确定模块包括:
运行单元,用于在所述数据库的数据库文件被打开的情况下,运行与所述WAL文件关联的执行线程,所述执行线程用于监控所述WAL文件的页数,以及检测所述数据库的执行语句的语句类型;
获取单元,用于若通过所述执行线程,检测到所述WAL文件的页数发生变化,则通过所述执行线程,获取所述WAL的数据库的页数,得到所述第一页数;
确定单元,用于若所述第一页数大于所述第一阈值且小于或等于所述第二阈值,则通过所述执行线程,确定所述当前执行语句的语句类型。
可选地,所述获取单元用于:
通过所述执行线程,调用在Java本地接口JNI层注册的回调函数,所述回调函数用于获取所述WAL文件的页数;
通过所述回调函数,获取所述WAL文件的页数,得到所述第一页数。
可选地,所述装置还包括:
第三确定模块,用于在所述数据库的数据库文件被打开的情况下,确定所述数据库的数据库文件的打开模式;
创建模块,用于若所述打开模式为WAL模式,则创建所述执行线程。
可选地,所述执行模块用于:
调用在JNI层注册的调用接口;
通过所述调用接口,调用数据库层的检查点接口;
通过所述检查点接口,执行所述检查点操作。
另一方面,提供了一种电子设备,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述任一种执行检查点操作的方法。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述任一种执行检查点操作的方法。
另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任一种执行检查点操作的方法。
本申请实施例提供的技术方案带来的有益效果是:
本申请实施例中,在WAL文件的页数超过第一阈值后,并不是如相关技术中那样自动进行检查点操作,而是先确定针对数据库的当前执行语句的语句类型。如果当前执行语句为写入语句,则允许继续对WAL文件进行数据写入,以适当增大检查点操作对应的阈值,直至WAL文件的页数达到第二阈值时再进行检查点操作,这样可以较大限度地提升数据库的写入性能。如果当前执行语句为读取语句等非写入语句,则立即执行检查点操作,这样可以将检测点操作对应的阈值保持为较小的值,较大限度地提升数据库的读取性能。如此,实现了根据当前执行语句的语句类型来动态调整检查点操作对应的阈值,使得数据库能够获得较佳的读取性能和写入性能。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种执行检查点操作的方法流程图;
图2是本申请实施例提供的一种创建执行线程的示意图;
图3是本申请实施例提供的另一种执行检查点操作的方法流程图;
图4是本申请实施例提供的又一种执行检查点操作的方法流程图;
图5是本申请实施例提供的一种执行检查点操作的装置框图;
图6是本申请实施例提供的一种电子设备的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行详细地解释说明之前,先对本申请实施例的应用场景予以说明。
本申请实施例应用于在数据库以WAL模式打开后,对该数据库的WAL文件执行检查点操作的场景中。其中,该数据库为支持WAL模式的数据库,如SQLite(一款轻型数据库)等。SQLite在3.7.0之前的版本中一般采用回滚日志文件保证事务提交的原子性,而在3.7.0版本之后,SQLite提供了WAL模式,WAL模式是用于实现原子事务的一种机制。
另外,该数据库可以为电子设备的本地数据库,电子设备可以将运行过程中产生的相关数据存储到该数据库中,比如可以将应用数据存储到该数据库中。其中,电子设备可以为移动终端或计算机等,移动终端可以为手机、平板电脑或可穿戴设备等。该电子设备的操作系统可以为Android(安卓)操作系统,或其他操作系统。
图1是本申请实施例提供的一种执行检查点操作的方法流程图,该方法应用于电子设备中。参见图1,该方法包括:
步骤101:检测数据库的WAL文件的页数是否发生变化。
其中,该数据库为支持WAL模式的数据库,WAL文件用于存储该数据库的数据更改日志,即用于存储该数据库的执行语句所对应的更改数据。
对于支持WAL模式的数据库,当检测到针对该数据库的执行语句后,可以先不对数据库进行更改,而是先确定该执行语句对应的更改结果,并将更改结果存储到WAL文件中,在执行检查点操作时,再将WAL文件中的数据同步到数据库中。如此,事务提交可以在不写入原始数据库的情况下发生,这就允许一边将数据库更改添加到WAL文件,一边从未更改的数据库进行读操作,使得读写操作可以并发性执行,不会相互阻塞。
作为一个示例,可以先将数据库的原始内容复制到WAL文件中,再将数据库更改以追加(append)的方式写入到WAL文件中。
其中,数据库的执行语句是指通过相关事务触发的针对该数据库的执行语句,用于对该数据库进行读取或写入。示例的,该执行语句包括写入(Insert Into)语句和非写入语句,非写入语句包括更新(Update)语句和删除(Delete)语句等和读取相关的语句。比如,若检测到针对数据库的写入语句,则将待写入的数据存储到WAL文件中。若检测到针对数据库的更新语句,则将更新后的数据存储到WAL数据库中。若检测到针对数据库的删除操作,则将删除后的数据存储到WAL数据库中。
本申请实施例中,可以在数据库以WAL模式打开的情况下,检测数据库的WAL文件的页数是否发生变化,以及执行下述步骤。
作为一个示例,为了实现本申请实施例提供的方法,在数据库以WAL模式打开的情况下,可以创建独立的执行线程,通过运行该执行线程,来检测数据库的WAL文件的页数是否发生变化,以及执行下述步骤。其中,该执行线程用于实现本申请实施例所述的执行检查操作的方法,比如用于监控WAL文件的页数,以及检测数据库的执行语句的语句类型。
比如,在数据库的数据库文件被打开的情况下,先确定数据库的数据库文件的打开模式;若打开模式为WAL模式,则创建与WAL文件关联的执行线程。
另外,若打开模式不是WAL模式,还可以采用wal_autocheckpoint方式为检查点操作配置阈值,以便在WAL文件的页数大于或等于该阈值时,自动执行检查点操作。也即是,在打开模式不是WAL模式的情况下,则采用传统方式执行检查点操作。在打开模式为WAL模式的情况下,则创建特定的执行线程,以便通过该执行线程采用本申请实施例所述的方法执行检查点操作。
进一步地,若确定打开模式为WAL模式,还可以先检测当前是否已创建该执行线程,若已创建该执行线程,则结束处理,若未创建该执行线程,再创建该执行行程。
比如,假设数据库为SQLite数据库,则可以通过执行open SQLite DB,来打开该数据库的数据库文件。该执行线程可以为SQLiteAsyncCheckpointer,其配置参数为CheckpointerListener,可以通过检测是否配置了CheckpointerListener来判断是否已创建改执行线程。
请参考图2,图2是本申请实施例提供的一种创建执行线程的示意图,如图2所示,创建执行线程的过程可以包括如下步骤:
1,通过执行open SQLite DB,来打开SQLite数据库的数据库文件。
2,判断SQLite数据库的数据库文件是否以WAL模式打开。
若SQLite数据库的数据库文件是以WAL模式打开,则执行下述步骤3;若不是以WAL模式打开,则跳转至步骤5,以采用传统方式执行检查点操作。
3,检测是否已配置CheckpointerListener。
若检测到已配置CheckpointerListener,则确定已创建执行线程SQLiteAsyncCheckpointer,并结束处理。若检测到未配置CheckpointerListener,则确定当前尚未创建执行线程SQLiteAsyncCheckpointer,并执行下述步骤4,以创建执行线程SQLiteAsyncCheckpointer。
4,创建执行线程SQLiteAsyncCheckpointer。
5,采用wal_autocheckpoint方式为检查点操作配置阈值。
另外,若该执行线程为Java代码编写的线程,而本地代码为C++等其他语言的代码,为了便于该执行线程与本地代码进行交互,还可以在JNI(Java NativeInterface,Java本地接口)层注册回调函数,以便执行线程能够通过该回调函数来获取WAL文件的页数。其中,该回调函数用于获取WAL文件的页数。
作为一个示例,可以通过标准接口sqlite3_wal_hook()来注册该回调函数。
同理,为了保证该执行线程能够执行检查点操作,还可以在JNI层注册调用接口,以便该执行线程能够通过调用该调用接口来调用数据库层的检查点接口,通过该检查点接口来执行检查点操作。其中,该调用接口用于调用数据库层的检查点接口。
步骤102:若检测到数据库的WAL文件的页数发生变化,且变化后的第一页数大于第一阈值且小于或等于第二阈值,则确定数据库的当前执行语句的语句类型。
其中,第二阈值大于第一阈值。比如,第一阈值为100,第二阈值为1000。
其中,当前执行语句为当前触发的针对数据库的执行语句,即导致数据库的WAL文件的页数发生变化的执行语句。当前执行语句的语句类型包括写入语句和非写入语句。非写入语句包括更新语句或删除语句等与读取相关的语句。
作为一个示例,可以通过创建的执行线程来执行步骤102以及下述步骤。比如,可以在数据库的数据库文件被打开的情况下,运行与WAL文件关联的执行线程。若通过该执行线程,检测到WAL文件的页数发生变化,则通过该执行线程,获取WAL的数据库的页数,得到第一页数。若第一页数大于第一阈值且小于或等于第二阈值,则通过该执行线程,确定当前执行语句的语句类型。
作为一个示例,可以通过该执行线程,调用在JNI层注册的回调函数,通过该回调函数,获取WAL文件的页数,得到第一页数。
步骤103:若当前执行语句的语句类型为写入语句,则允许根据后续检测到的数据库的执行语句对WAL文件继续进行数据写入。
也即是,如果当前执行语句为写入语句,则可以通过允许继续对WAL文件进行数据写入,来增大检查点操作对应的阈值,直至WAL文件的页数达到第二阈值时再进行检查点操作,如此,可以较大限度地提升数据库的写入性能。
作为一个示例,允许根据后续检测到的所述数据库的执行语句对所述WAL文件继续进行数据写入的操作可以包括:若在当前执行语句之后检测到数据库的任一执行语句,则将该任一执行语句对应的更改数据写入WAL文件中。在将该任一执行语句对应的更改数据写入WAL文件之后,确定WAL文件的页数,得到第二页数。然后,根据第二页数,确定是否执行检查点操作。
作为一个示例,根据第二页数,确定是否执行检查点操作可以包括如下步骤:
1)若第二页数大于第一阈值且小于或等于第二阈值,则确定数据库的当前执行语句的语句类型。若当前执行语句的语句类型为写入语句,则允许根据后续检测到的所述数据库的执行语句对WAL文件继续进行数据写入。若当前执行语句的语句类型为非写入语句,则执行检查点操作。
2)若第二页数大于第二阈值,则执行检查点操作。
步骤104:若当前执行语句的语句类型为非写入语句,则执行检查点操作。
如果当前执行语句为非写入语句,即为与读写相关的语句,则可以通过立即执行检查点操作,来将检测点操作对应的阈值保持为较小的值,从而较大限度地提升数据库的读取性能。
其中,检查点操作用于将WAL文件中的数据同步到数据库中。而且,将WAL文件中的数据同步到数据库中后,WAL文件中的数据将被删除,后续写入数据将从头开始写入。
作为一个示例,可以调用在JNI层注册的调用接口,通过该调用接口,调用数据库层的检查点接口,通过该检查点接口,来执行检查点操作。
步骤105:若检测到WAL文件的页数发生变化,且变化后的第一页数大于或等于第二阈值,则执行检查点操作。
也即是,当WAL文件的页数达到最大上限时,自动执行检查点操作,如此可以避免WAL文件的无限增大,进一步保证数据库的读取性能。
本申请实施例中,在WAL文件的页数超过第一阈值后,并不是如相关技术中那样自动进行检查点操作,而是先确定针对数据库的当前执行语句的语句类型。如果当前执行语句为写入语句,则允许继续对WAL文件进行数据写入,以适当增大检查点操作对应的阈值,直至WAL文件的页数达到第二阈值时再进行检查点操作,这样可以较大限度地提升数据库的写入性能。如果当前执行语句为读取语句等非写入语句,则立即执行检查点操作,这样可以将检测点操作对应的阈值保持为较小的值,较大限度地提升数据库的读取性能。如此,实现了根据当前执行语句的语句类型来动态调整检查点操作对应的阈值,优化了数据库的读取性能和写入性能,得数据库能够获得较佳的读取性能和写入性能。另外,还可以提升电子设备的应用使用流畅性。
图3是本申请实施例提供的另一种执行检查点操作的方法流程图,该方法应用于电子设备中。参见图3,该方法包括:
步骤301:检测数据库的WAL文件的页数是否发生变化。
步骤302:若检测到数据库的预写日志WAL文件的页数发生变化,且变化后的第一页数大于第一阈值且小于或等于第二阈值,则确定数据库的当前执行语句与前一次执行语句之间的语句时间差。
其中,前一次执行语句是指在当前执行语句之前触发的针对数据库的执行语句。该语句时间差是指两个执行语句的发生时间之间的时间间隔。
步骤303:若语句时间差大于时间差阈值,则执行检查点操作。
其中,该时间差阈值可以预先设置,比如可以为1s或2s等。
若语句时间差大于时间差阈值,则说明过了很久才触发一次执行语句,针对数据库的数据操作相对不频繁,此时电子设备的处理资源相对空闲,这种情况下执行检查点操作,可以提高处理效率。
步骤304:若语句时间差小于或等于时间差阈值,则确定数据库的当前执行语句的语句类型。
若语句时间差大于时间差阈值,则说明过针对数据库的数据操作相对频繁,电子设备可能没有较多的空闲处理资源来执行检查点操作,这种情况下可以先确定数据库的当前执行语句的语句类型,根据语句类型来进一步判断是否要执行检查点操作。
步骤305:若当前执行语句的语句类型为写入语句,则允许根据后续检测到的数据库的执行语句对WAL文件继续进行数据写入。
如果当前执行语句为写入语句,则可以通过允许继续对WAL文件进行数据写入,来增大检查点操作对应的阈值,直至WAL文件的页数达到第二阈值时再进行检查点操作,如此,可以较大限度地提升数据库的写入性能。
步骤306:若当前执行语句的语句类型为非写入语句,则执行检查点操作。
如果当前执行语句为非写入语句,即为与读写相关的语句,则可以通过立即执行检查点操作,来将检测点操作对应的阈值保持为较小的值,从而较大限度地提升数据库的读取性能。
另外,若检测到数据库的预写日志WAL文件的页数发生变化,且变化后的大于第二阈值,则执行检查点操作。如此,可以避免WAL文件的无限增大,进一步保证数据库的读取性能。
步骤307:若检测到WAL文件的页数发生变化,且变化后的第一页数大于或等于第二阈值,则执行检查点操作。
也即是,当WAL文件的页数达到最大上限时,自动执行检查点操作,如此可以避免WAL文件的无限增大,进一步保证数据库的读取性能。
本申请实施例中,在WAL文件的页数超过第一阈值后,并不是如相关技术中那样自动进行检查点操作,而是先确定当前执行语句与前一次执行语句的时间差,若时间差较大,则立即执行检查点操作,可以实现在空闲状态下执行检查点操作,提高处理效率。若时间差较小,则进一步确定当前执行语句的语句类型。如果当前执行语句为写入语句,则允许继续对WAL文件进行数据写入,以适当增大检查点操作对应的阈值,直至WAL文件的页数达到第二阈值时再进行检查点操作,这样可以较大限度地提升数据库的写入性能。如果当前执行语句为读取语句等非写入语句,则立即执行检查点操作,这样可以将检测点操作对应的阈值保持为较小的值,较大限度地提升数据库的读取性能。如此,实现了根据当前执行语句与前一次执行语句的时间差,以及当前执行语句的语句类型来动态调整检查点操作对应的阈值,使得数据库能够获得较佳的读取性能和写入性能。
接下来,以第一阈值为100,第二阈值为1000,时间差阈值为1s为例,对本申请实施例提供的执行检查点操作的方法进行举例说明。
图4是本申请实施例提供的又一种执行检查点操作的方法流程图,如图4所示,该方法包括如下步骤:
步骤401:若检测数据库的WAL文件的页数发生变化,则获取WAL文件的页数,得到第一页数。
步骤402:判断第一页数是否大于100。
若第一页数大于100,则执行下述步骤403;若第一页数小于或等于100,则跳转至行步骤407,继续允许WAL文件的数据写入。
步骤403:判断第一页数是否大于1000。
若第一页数大于1000,则跳转至步骤406,立即执行检查点操作;若第一页数小于或等于1000,则执行下述步骤404。
步骤404:判断当前执行语句与前一次执行语句的语句时间差是否小于或等于1s。
若语句时间差小于或等于1s,则执行下述步骤405;若语句时间差大于1s,则跳转至步骤406,立即执行检查点操作。
步骤405:判断当前执行语句是否为写入语句。
若当前执行语句不是写入语句,则执行下述步骤406,立即执行检查点操作;若当前执行语句是写入语句,则跳转至步骤407,继续允许WAL文件的数据写入。
步骤406:执行检查点操作。
步骤407:继续允许WAL文件的数据写入。
图5是本申请实施例提供的一种执行检查点操作的装置框图,该装置可以集成于电子设备中,如图5所示,该装置包括:
第一确定模块501,用于若检测到数据库对应的预先日志WAL文件的页数发生变化,且变化后的第一页数大于第一阈值且小于或等于第二阈值,则确定所述数据库的当前执行语句的语句类型,所述WAL文件用于存储所述数据库的执行语句所对应的更改数据,所述第二阈值大于所述第一阈值;
处理模块502,用于若所述当前执行语句的语句类型为写入语句,则允许根据后续检测到的所述数据库的执行语句对所述WAL文件继续进行数据写入;
执行模块503,用于若所述当前执行语句的语句类型为非写入语句,则调用检查点接口,通过所述检查点接口执行检查点操作,所述检查点操作用于将所述WAL文件中的数据同步到所述数据库中。
可选地,所述装置还包括:
第二确定模块,用于确定所述当前执行语句与前一次执行语句之间的语句时间差,所述前一次执行语句是指在所述当前执行语句之前触发的针对所述数据库的执行语句;
触发模块,用于若所述语句时间差小于或等于时间差阈值,触发第一确定模块501执行确定所述数据库的当前执行语句的语句类型。
可选地,所述执行模块503还用于:
若所述语句时间差大于所述时间差阈值,则执行检查点操作。
可选地,所述执行模块503还用于:
若检测到所述WAL文件的页数发生变化,且变化后的第一页数大于所述第二阈值,则执行检查点操作。
可选地,所述处理模块502用于:
若在所述当前执行语句之后检测到所述数据库的任一执行语句,则将所述任一执行语句对应的更改数据写入所述WAL文件;
在将所述任一执行语句对应的更改数据写入所述WAL文件之后,确定所述WAL文件的页数,得到第二页数;
根据所述第二页数,确定是否执行检查点操作。
可选地,所述第一确定模块包括:
运行单元,用于在所述数据库的数据库文件被打开的情况下,运行与所述WAL文件关联的执行线程,所述执行线程用于监控所述WAL文件的页数,以及检测所述数据库的执行语句的语句类型;
获取单元,用于若通过所述执行线程,检测到所述WAL文件的页数发生变化,则通过所述执行线程,获取所述WAL的数据库的页数,得到所述第一页数;
确定单元,用于若所述第一页数大于所述第一阈值且小于或等于所述第二阈值,则通过所述执行线程,确定所述当前执行语句的语句类型。
可选地,所述获取单元用于:
通过所述执行线程,调用在Java本地接口JNI层注册的回调函数,所述回调函数用于获取所述WAL文件的页数;
通过所述回调函数,获取所述WAL文件的页数,得到所述第一页数。
可选地,所述装置还包括:
第三确定模块,用于在所述数据库的数据库文件被打开的情况下,确定所述数据库的数据库文件的打开模式;
创建模块,用于若所述打开模式为WAL模式,则创建所述执行线程。
可选地,所述执行模块503用于:
调用在JNI层注册的调用接口;
通过所述调用接口,调用数据库层的检查点接口;
通过所述检查点接口,执行所述检查点操作。
本申请实施例中,在WAL文件的页数超过第一阈值后,并不是如相关技术中那样自动进行检查点操作,而是先确定针对数据库的当前执行语句的语句类型。如果当前执行语句为写入语句,则允许继续对WAL文件进行数据写入,以适当增大检查点操作对应的阈值,直至WAL文件的页数达到第二阈值时再进行检查点操作,这样可以较大限度地提升数据库的写入性能。如果当前执行语句为读取语句等非写入语句,则立即执行检查点操作,这样可以将检测点操作对应的阈值保持为较小的值,较大限度地提升数据库的读取性能。如此,实现了根据当前执行语句的语句类型来动态调整检查点操作对应的阈值,使得数据库能够获得较佳的读取性能和写入性能。
需要说明的是:上述实施例提供的执行检查点操作的装置在执行检查点操作时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的执行检查点操作的装置与执行检查点操作的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图6是本申请实施例提供的一种电子设备600的结构框图。该电子设备600可以是手机、平板电脑、智能电视、多媒体播放设备、可穿戴设备、台式电脑、服务器等电子设备。该电子设备600可用于实施上述实施例中提供的执行检查点操作的方法。
通常,电子设备600包括有:处理器601和存储器602。
处理器601可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器601可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(FieldProgrammable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器601也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器601可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器601还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器602可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器602还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器602中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器601所执行以实现本申请中方法实施例提供的执行检查点操作的方法。
在一些实施例中,电子设备600还可选包括有:外围设备接口603和至少一个外围设备。处理器601、存储器602和外围设备接口603之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口603相连。具体地,外围设备可以包括:显示屏604、音频电路605、通信接口606和电源607中的至少一种。
本领域技术人员可以理解,图6中示出的结构并不构成对电子设备600的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在示例性的实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述实施例提供的执行检查点操作的方法。
在示例性实施例中,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例提供的执行检查点操作的方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (12)

1.一种执行检查点操作的方法,其特征在于,所述方法包括:
若检测到数据库的预写日志WAL文件的页数发生变化,且变化后的第一页数大于第一阈值且小于或等于第二阈值,则确定所述数据库的当前执行语句的语句类型,所述WAL文件用于存储所述数据库的执行语句所对应的更改数据,所述第二阈值大于所述第一阈值;
若所述当前执行语句的语句类型为写入语句,则允许根据后续检测到的所述数据库的执行语句对所述WAL文件继续进行数据写入;
若所述当前执行语句的语句类型为非写入语句,则执行检查点操作,所述检查点操作用于将所述WAL文件中的数据同步到所述数据库中。
2.如权利要求1所述的方法,其特征在于,所述确定所述数据库的当前执行语句的语句类型之前,还包括:
确定所述当前执行语句与前一次执行语句之间的语句时间差,所述前一次执行语句是指在所述当前执行语句之前触发的针对所述数据库的执行语句;
若所述语句时间差小于或等于时间差阈值,则执行确定所述数据库的当前执行语句的语句类型的步骤。
3.如权利要求2所述的方法,其特征在于,所述确定所述当前执行语句与前一次执行语句之间的语句时间差之后,还包括:
若所述语句时间差大于所述时间差阈值,则执行检查点操作。
4.如权利要求1所述的方法,其特征在于,所述方法还包括:
若检测到所述WAL文件的页数发生变化,且变化后的第一页数大于所述第二阈值,则执行检查点操作。
5.如权利要求1所述的方法,其特征在于,所述允许根据后续检测到的所述数据库的执行语句对所述WAL文件继续进行数据写入,包括:
若在所述当前执行语句之后检测到所述数据库的任一执行语句,则将所述任一执行语句对应的更改数据写入所述WAL文件;
在将所述任一执行语句对应的更改数据写入所述WAL文件之后,确定所述WAL文件的页数,得到第二页数;
根据所述第二页数,确定是否执行检查点操作。
6.如权利要求1-5任一所述的方法,其特征在于,所述若检测到数据库的预先日志WAL文件的页数发生变化,且变化后的第一页数大于第一阈值且小于或等于第二阈值,则确定所述数据库的当前执行语句的语句类型,包括:
在所述数据库的数据库文件被打开的情况下,运行与所述WAL文件关联的执行线程,所述执行线程用于监控所述WAL文件的页数,以及检测所述数据库的执行语句的语句类型;
若通过所述执行线程,检测到所述WAL文件的页数发生变化,则通过所述执行线程,获取所述WAL的数据库的页数,得到所述第一页数;
若所述第一页数大于所述第一阈值且小于或等于所述第二阈值,则通过所述执行线程,确定所述当前执行语句的语句类型。
7.如权利要求6所述的方法,其特征在于,所述通过所述执行线程,获取所述WAL的数据库的页数,得到所述第一页数,包括:
通过所述执行线程,调用在Java本地接口JNI层注册的回调函数,所述回调函数用于获取所述WAL文件的页数;
通过所述回调函数,获取所述WAL文件的页数,得到所述第一页数。
8.如权利要求6所述的方法,其特征在于,所述运行与所述WAL文件关联的执行线程之前,还包括:
在所述数据库的数据库文件被打开的情况下,确定所述数据库的数据库文件的打开模式;
若所述打开模式为WAL模式,则创建所述执行线程。
9.如权利要求1-5任一所述的方法,其特征在于,所述执行检查点操作,包括:
调用在JNI层注册的调用接口;
通过所述调用接口,调用数据库层的检查点接口;
通过所述检查点接口,执行所述检查点操作。
10.一种检查点操作的执行装置,其特征在于,所述装置包括:
第一确定模块,用于若检测到数据库对应的预先日志WAL文件的页数发生变化,且变化后的第一页数大于第一阈值且小于或等于第二阈值,则确定所述数据库的当前执行语句的语句类型,所述WAL文件用于存储所述数据库的执行语句所对应的更改数据,所述第二阈值大于所述第一阈值;
处理模块,用于若所述当前执行语句的语句类型为写入语句,则允许根据后续检测到的所述数据库的执行语句对所述WAL文件继续进行数据写入;
执行模块,用于若所述当前执行语句的语句类型为非写入语句,则调用检查点接口,通过所述检查点接口执行检查点操作,所述检查点操作用于将所述WAL文件中的数据同步到所述数据库中。
11.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行权利要求1-9所述的任一项方法的步骤。
12.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,所述指令被处理器执行时实现权利要求1-9所述的任一项方法的步骤。
CN202010740276.9A 2020-07-28 2020-07-28 执行检查点操作的方法、装置、设备及存储介质 Withdrawn CN111881212A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010740276.9A CN111881212A (zh) 2020-07-28 2020-07-28 执行检查点操作的方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010740276.9A CN111881212A (zh) 2020-07-28 2020-07-28 执行检查点操作的方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN111881212A true CN111881212A (zh) 2020-11-03

Family

ID=73200332

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010740276.9A Withdrawn CN111881212A (zh) 2020-07-28 2020-07-28 执行检查点操作的方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN111881212A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114244758A (zh) * 2021-12-13 2022-03-25 武汉斗鱼鱼乐网络科技有限公司 安卓平台的网络诊断方法、存储介质、电子设备及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103092955A (zh) * 2013-01-17 2013-05-08 华为技术有限公司 检查点操作方法、装置及系统
CN103177085A (zh) * 2013-02-26 2013-06-26 华为技术有限公司 一种检查点操作方法及装置
US20160321143A1 (en) * 2015-04-28 2016-11-03 Micro Systemation AB Database rollback using wal
CN106155832A (zh) * 2015-03-30 2016-11-23 Tcl集团股份有限公司 一种数据恢复的方法、装置及Android设备
CN106599055A (zh) * 2016-11-17 2017-04-26 杭州沃趣科技股份有限公司 一种检测数据库检查点操作运行状态的方法
CN109388671A (zh) * 2018-10-10 2019-02-26 腾讯科技(深圳)有限公司 数据处理方法、装置、设备及存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103092955A (zh) * 2013-01-17 2013-05-08 华为技术有限公司 检查点操作方法、装置及系统
CN103177085A (zh) * 2013-02-26 2013-06-26 华为技术有限公司 一种检查点操作方法及装置
CN106155832A (zh) * 2015-03-30 2016-11-23 Tcl集团股份有限公司 一种数据恢复的方法、装置及Android设备
US20160321143A1 (en) * 2015-04-28 2016-11-03 Micro Systemation AB Database rollback using wal
CN106599055A (zh) * 2016-11-17 2017-04-26 杭州沃趣科技股份有限公司 一种检测数据库检查点操作运行状态的方法
CN109388671A (zh) * 2018-10-10 2019-02-26 腾讯科技(深圳)有限公司 数据处理方法、装置、设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114244758A (zh) * 2021-12-13 2022-03-25 武汉斗鱼鱼乐网络科技有限公司 安卓平台的网络诊断方法、存储介质、电子设备及系统

Similar Documents

Publication Publication Date Title
US11169789B2 (en) Rich text box for live applications in a cloud collaboration platform
US9558016B2 (en) Platform system, method for changing support hardware configuration of universal extensible firmware interface basic input output system and computer program product
EP2738694A2 (en) Compressed representation of a transaction token
WO2020181810A1 (zh) 应用于集群内多级缓存的数据处理方法和装置
WO2020019458A1 (zh) 混合应用的页面切换方法、框架、计算机设备及存储介质
US10540524B2 (en) Memory access protection using processor transactional memory support
CN115408391A (zh) 一种数据库表变更方法、装置、设备和存储介质
CN111881212A (zh) 执行检查点操作的方法、装置、设备及存储介质
CN110019527B (zh) 从库读取方法、相关装置和设备
CN110908644B (zh) 状态节点的配置方法、装置、计算机设备和存储介质
CN110045952B (zh) 代码调用方法与装置
CN111078418A (zh) 操作同步方法、装置、电子设备及计算机可读存储介质
CN112612647B (zh) 日志并行重演方法、装置、设备及存储介质
CN115114247A (zh) 文件数据处理方法及装置
CN114490856A (zh) 基于iouring技术的数据库wal落盘方法及系统
CN114328715A (zh) 一种数据同步方法、装置及计算机可读存储介质
CN114911541A (zh) 配置信息的处理方法、装置、电子设备及存储介质
CN111026764B (zh) 一种数据存储方法、装置、电子产品及存储介质
CN110502296B (zh) 一种显示固件升级命令的方法、设备以及存储介质
CN111026810A (zh) 数据同步方法、装置及存储介质
CN112162833B (zh) 一种事务日志的处理方法、装置及系统
CN117453336A (zh) 用户界面的生成方法、装置、电子设备及存储介质
CN114356943A (zh) 一种数据库同步方法、装置、电子设备及存储介质
CN116010036A (zh) 一种数据迁移方法、装置及其介质
CN114860666A (zh) 一种日志清除时间修改方法、装置及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication

Application publication date: 20201103

WW01 Invention patent application withdrawn after publication