CN115408411A - 数据写入方法、装置、电子设备及存储介质 - Google Patents

数据写入方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN115408411A
CN115408411A CN202211068029.4A CN202211068029A CN115408411A CN 115408411 A CN115408411 A CN 115408411A CN 202211068029 A CN202211068029 A CN 202211068029A CN 115408411 A CN115408411 A CN 115408411A
Authority
CN
China
Prior art keywords
log
transactions
writing
temporary storage
storage area
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.)
Pending
Application number
CN202211068029.4A
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.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba Cloud Computing 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 Alibaba Cloud Computing Ltd filed Critical Alibaba Cloud Computing Ltd
Priority to CN202211068029.4A priority Critical patent/CN115408411A/zh
Publication of CN115408411A publication Critical patent/CN115408411A/zh
Pending 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/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • G06F16/2386Bulk updating operations
    • 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/23Updating
    • G06F16/2358Change logging, detection, and notification
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种数据写入方法、装置、电子设备及存储介质,涉及云计算技术领域,方法包括:获取多个事务的日志事件;确定多个事务分别对应的多个临时存储区;通过并行处理的方式,基于多个临时存储区,将多个事务的日志事件写入持久化存储区,持久化存储区中存储的日志事件基于存储引擎进行事务提交。本申请实施例,通过并行处理的方式,基于多个事务分别对应的临时存储区,将多个事务的日志事件写入持久化存储区,采用并行处理方式可以提高数据写入速度,从而提升数据库管理系统的性能。

Description

数据写入方法、装置、电子设备及存储介质
技术领域
本申请涉及云计算技术领域,尤其涉及一种数据写入方法、装置、电子设备及存储介质。
背景技术
数据库是计算机应用系统中的一种专门管理数据资源的系统。数据有多种形式,如文字、数码、符号、图形、图像及声音等,数据是所有计算机系统所要处理的对象。管理数据库的软件称为数据库管理系统。
MySQL(Structured Query Language,结构化查询语言)是一种关系型数据库管理系统,MySQL中提供了多种数据库存储引擎,适用于不同的应用场景。MySQL事务提交时写入日志文件的实现策略为,在多个事务同时提交时,将所有事务的日志事件写入日志文件并持久化到数据库中。数据写入速度较慢,对于写入速度要求较高的应用场景,无法满足用户的需求。
发明内容
本申请实施例提供了一种数据写入方法、装置、电子设备及存储介质,以实现提高数据写入速度。
第一方面,本申请实施例提供了一种数据写入方法,包括:
获取多个事务的日志事件;
确定多个事务分别对应的多个临时存储区;
通过并行处理的方式,基于多个临时存储区,将多个事务的日志事件写入持久化存储区,持久化存储区中存储的日志事件基于存储引擎进行事务提交。
第二方面,本申请实施例提供了一种数据写入装置,包括:
获取模块,用于获取多个事务的日志事件;
确定模块,用于确定多个事务分别对应的多个临时存储区;
写入模块,用于通过并行处理的方式,基于多个临时存储区,将多个事务的日志事件写入持久化存储区,持久化存储区中存储的日志事件基于存储引擎进行事务提交。
第三方面,本申请实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,处理器在执行计算机程序时实现上述任一项的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现上述任一项的方法。
与现有技术相比,本申请具有如下优点:
本申请实施例提供的数据写入方法、装置、电子设备及存储介质,确定多个事务分别对应的临时存储区,通过并行处理的方式,基于多个事务分别对应的临时存储区,将多个事务的日志事件写入持久化存储区,采用并行处理方式可以提高数据写入速度,从而提升数据库管理系统的性能。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,可依照说明书的内容予以实施,并且为了让本申请的上述和其他目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本申请的一些实施方式,而不应将其视为是对本申请范围的限制。
图1为本申请提供的数据写入方法的应用场景的示意图;
图2为相关技术中的数据写入方法的示意图;
图3为本申请一实施例的数据写入方法的流程图;
图4是本申请另一实施例的数据写入方法的示意图;
图5是本申请一实施例的数据写入方法的示意图;
图6是本申请一实施例的将二进制日志事件持久化到重做日志文件的示意图;
图7是本申请一实施例的从重做日志文件中恢复事务的二进制日志事件到二进制日志文件的示意图;
图8是本申请另一实施例的数据写入装置的结构框图;以及
图9为用来实现本申请实施例的电子设备的框图。
具体实施方式
在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本申请的构思或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的,而非限制性的。
为便于理解本申请实施例的技术方案,以下对本申请实施例的相关技术进行说明。以下相关技术作为可选方案与本申请实施例的技术方案可以进行任意结合,其均属于本申请实施例的保护范围。
下面对本申请技术方案的应用场景进行介绍。图1为示例性的用于实现本申请实施例的方法的一个应用场景的示意图。本申请技术方案可以应用于通过数据库管理系统将数据写入数据库的场景中。在选择数据库管理系统时,数据写入性能是一项关键指标,写入性能提升可以更好的满足用户需求、降低成本。图2为相关技术中的数据写入方法的示意图。以MySQL为例,MySQL事务提交时将二进制日志Binlog写入数据库时的实现策略包括:写入阶段(称为Flush Stage)、持久化阶段(称为Sync Stage)和提交阶段(称为CommitStage)。这个策略有两个特点,一是分组提交;二是分阶段串行操作。分组提交是指多个事务(如图中所示的Trx1、Trx2、…Trx12)同时提交时,会被分到不同的组里。每组中确定一个事务作为领导事务(称为Leader),负责完成组内所有事务的提交操作。对于提交过程中的3个阶段写入、持久化阶段和提交阶段,每个阶段同时只能有一个组在操作,即串行操作,不能并发。由于三个阶段是串行的,任何一个阶段执行变慢,都会导致其他阶段的阻塞。特别是写入阶段,写入阶段中每个事务需要执行的操作很多,包括持久化重做日志和写入二进制日志文件。由于这些事务的操作都是串行的,导致后面的事务等待时间过长,从而限制了数据库的性能。
鉴于此,本申请实施例提出了一种数据写入方法,如图1所示,获取多个事务(如图中所示的Trx1、Trx2、…Trx4)的日志事件(例如,Binlog Event),在多个事务共享的临时存储区(Binlog Buffer)中确定多个事务分别对应的多个临时存储区;通过并行执行的方式,基于多个事务分别对应的临时存储区,将多个事务的日志事件从分别对应的临时存储区写入(称为flush)日志文件,再将日志文件持久化(称为sync)存储到数据库,存储的日志事件基于存储引擎进行事务提交(称为commit)。本实施例中,在多个事务共享的临时存储区确定多个事务分别对应的临时存储区,通过并行处理的方式,基于多个事务分别对应的临时存储区,将多个事务的日志事件写入持久化存储区,采用并行处理方式可以提高数据写入速度,从而提升数据库管理系统的性能。
图3为本申请一实施例的数据写入方法的流程图,如图3所示,数据写入方法可以包括:
步骤S301,获取多个事务的日志事件。
本实施例中,执行主体可以包括服务器、用户终端或任意电子设备。其中,事务(称为Transaction)是访问并可能操作各种数据项的一个数据库操作的序列,是一个不可分割的工作单位。事务是由事务开始与事务结束之间执行的全部数据库操作。日志事件用于记录事务以及事务所做的数据库修改,日志可以包括二进制日志Binlog、重做日志Redolog等。
步骤S302,确定多个事务分别对应的多个临时存储区。
在多个事务共享的临时存储区中确定多个事务各自对应的临时存储区,例如,在多个事务共享的二进制日志的缓存区域Binlog Buffer中确定各事务各自对应的临时存储区。
可选的,可以为多个事务进行分组,得到多个组,每组包括多个事务,在共享的临时存储区中为每组事务分配对应的临时存储区。为每组事务分配了对应的临时存储区之后,将各组事务对应的日志事件存储到各组事务对应的临时存储区。
可选的,在共享的临时存储区中为每个事务分配对应的临时存储区。为每个事务分配了对应的临时存储区之后,将各个事务对应的日志事件存储到各个事务对应的临时存储区。
示例性的,多个事务分别对应的多个临时存储区可以是各组事务各自对应的Binlog Buffer;或者各个事务各自对应的Binlog Buffer。
步骤S303,通过并行处理的方式,基于多个临时存储区,将多个事务的日志事件写入持久化存储区,持久化存储区中存储的日志事件基于存储引擎进行事务提交。
通过多组事务或者多个事务并行处理的方式,从各组事务或各个事务对应的临时存储区中获取日志事件,持久化存储到磁盘中,其中,持久化存储区可以包括磁盘中存储的数据库。将事务的日志事件写入持久化存储区之后,将事务的状态标记为提交,从而实现了引擎事务提交。
本申请实施例提供的数据写入方法,在多个事务共享的临时存储区确定多个事务分别对应的临时存储区,通过并行处理的方式,基于多个事务分别对应的临时存储区,将多个事务的日志事件写入持久化存储区,采用并行处理方式可以提高数据写入速度,从而提升数据库管理系统的性能。
其中,步骤S303的具体实现方式见如下实施例:
在一种可能的实现方式中,步骤S303,通过并行处理的方式,基于多个临时存储区,将多个事务的日志事件写入持久化存储区,包括:通过并行处理的方式,将多个事务的日志事件分别写入各自对应的临时存储区,从各自对应的临时存储区中获取多个事务的日志事件,写入日志文件,并将日志文件写入持久化存储区。
其中,每个事务对应有自己的事务线程,事务线程将自己的日志事件写入共享的临时存储区中为该事务所属的分组分配的临时存储区中,通过多组事务并行处理的方式,将各组事务的日志事件分别写入各组对应的临时存储区,从各组对应的临时存储区中获取该组事务的日志事件,写入日志文件,并将日志文件写入持久化存储区。
可选的,也可以按照每个事务进行数据写入,事务线程将自己的日志事件写入共享的临时存储区中为该事务分配的临时存储区中,通过多个事务并行处理的方式,将各事务的日志事件分别写入该事务对应的临时存储区,从各事务对应的临时存储区中获取该事务的日志事件,写入日志文件,并将日志文件写入持久化存储区。
在一种可能的实现方式中,通过并行处理的方式,基于多个临时存储区,将多个事务的日志事件写入持久化存储区,包括:
通过并行处理的方式,基于多个临时存储区,利用前台线程将多个事务的逻辑日志事件通过物理日志文件写入持久化存储区,利用后台线程将逻辑日志事件通过逻辑日志文件写入持久化存储区。
其中,事务的逻辑日志事件,例如,二进制日志事件Binlog Event。逻辑日志文件,例如,Binlog文件。物理日志文件,例如,重做日志Redolog文件。通过并行处理的方式,利用前台线程将逻辑日志事件分别写入各事务各自对应的临时存储区,从各自对应的临时存储区中获取多个事务的逻辑日志事件,写入物理日志文件,并将物理日志文件写入持久化存储区。然后,将逻辑日志事件发给后台线程,利用后台线程将逻辑日志事件分别写入各事务各自对应的临时存储区,从各自对应的临时存储区中获取多个事务的逻辑日志事件,写入逻辑日志文件,并将逻辑日志文件写入持久化存储区。
本实施例中,利用前台线程将逻辑日志事件写入物理日志文件中,和物理日志文件一起持久化,通过后台线程将逻辑日志文件写入逻辑日志文件并持久化,可以减少事务提交过程中输入和输出过程中写操作的次数,提高写的性能。
示例性的,图6提供了一种将二进制日志事件持久化到重做日志文件的示意图。如图6所示,当事务准备进入写入流程时,利用前台线程,从多个事务的临时存储区中获取二进制日志事件,将多个事务的二进制日志事件Binlog Events通过并行处理的方式,写入到重做日志Redolog文件中,并将Redolog文件持久化到磁盘。然后将Binlog Events交给后台线程,后台线程将多个事务的Binlog Events写入Binlog文件并持久化。后台线程写入Binlog文件和持久化Binlog文件的操作和前台线程的事务提交可以异步进行。将BinlogEvents交给后台线程后,等待Redolog文件完成持久化操作。当Redolog持久化到磁盘后,提交事务,返回事务提交提示信息给客户端。
在一种可能的实现方式中,该方法还包括:
在服务器启动时,若物理日志文件中记录了逻辑日志文件中未记录的逻辑日志事件,则将未记录的逻辑日志事件写入逻辑日志文件中。
在实际应用中,可能会出现服务器崩溃,需要重新启动的情况,则检查物理日志文件中是否记录有逻辑日志事件,若物理日志文件中记录了逻辑日志文件中未记录的逻辑日志事件,则将逻辑日志文件中未记录的逻辑日志事件写入逻辑日志文件中,从而保证逻辑日志事件的数据持久性,以及物理日志文件和逻辑日志文件记录的逻辑日志事件的一致性。
示例性的,当发生服务器崩溃后,Binlog文件中记录的逻辑日志事件,可能会比Redolog文件中的少。因此,在服务器启动时,Redolog文件的恢复机制会重做检查点Checkpoint之后的所有Redolog文件。当Redolog文件记录里有Binlog Events时,检查Binlog文件,并将缺失的Binlog Events写回到Binlog文件中。图7是从重做日志文件中恢复事务的二进制日志事件到二进制日志文件的过示意图。如图7所示,服务器重启后,检查重做日志文件,重做日志文件中记录有二进制日志事件:二进制日志Trx2、二进制日志Trx3,二进制日志文件中记录有二进制日志Trx1,没有二进制日志Trx2、二进制日志Trx3,则将二进制日志Trx2、二进制日志Trx3补充到二进制日志文件中。
在一种可能的实现方式中,从各自对应的临时存储区中获取多个事务的日志事件,写入日志文件,并将日志文件写入持久化存储区,包括:利用写入线程从各自对应的临时存储区中获取多个事务的日志事件,写入日志文件,利用持久化线程将日志文件写入持久化存储区。
在实际应用中,可以利用两个不同的线程,写入线程和持久化线程,分别进行写入和持久化操作。对于任一事务,利用写入线程将当前事务的日志事件写入日志文件,利用持久化线程对日志文件进行持久化操作,由于通过两个线程分别进行写入和持久化操作,当前事务写入日志文件之后,即可以进行后一事务的日志事件的写入操作,不需要等待当前事务持久化操作之后,才进行下一事务的持久化操作,由此,可以提高数据写入速度。
需要说明的是,写入线程和持久化线程也可以针对每组事务进行写入和持久化操作,具体过程与针对每个事务进行操作的过程类似,此处不再赘述。
示例性的,事务需要提交时,事务线程负责将自己的Binlog Event从BinlogCache写入到Binlog Buffer。Binlog Buffer中的Binlog Events由独立线程异步的写入Binlog文件和刷入磁盘,实现持久化存储。
在一种可能的实现方式中,利用写入线程从各自对应的临时存储区中获取多个事务的日志事件,写入日志文件,包括:根据写入通知消息,利用写入线程从各自对应的临时存储区中获取多个事务的日志事件,写入日志文件。
在实际应用中,每个事务或者每组事务的日志事件写入对应的临时存储区之后,向写入线程发送写入通知消息,写入线程根据写入通知消息将每个事务或者每组事务的日志事件写入日志文件中,写入完成之后,向持久化线程发送持久化通知消息。
在一种可能的实现方式中,利用持久化线程将日志文件写入持久化存储区,包括:根据持久化通知消息,利用持久化线程将日志文件写入持久化存储区。
在实际应用中,持久化线程根据接收到的持久化通知消息,进行持久化操作,将日志文件写入持久化存储区。
在一种可能的实现方式中,该方法还包括:确定配置信息指示第一执行策略。
在实际应用中,预先配置事务提交的执行策略,根据执行策略可以确定事务提交的时机。执行策略可以是为写入线程或持久化线程配置相应的执行条件,执行条件可以是写入线程或持久化线程对应的预设值。其中,第一执行策略可以是利用写入线程将多个事务的日志事件写入持久化存储区之后,基于存储引擎进行事务提交,如上述步骤S303中的执行过程。
另外,还可以通过执行第二执行策略进行事务提交,具体见如下实施例:
在一种可能的实现方式中,该方法还包括:确定配置信息指示第二执行策略;对于多个事务中的任一事务,从事务对应的第二临时存储区中获取事务的日志事件,写入日志文件之后,将日志文件基于存储引擎进行事务提交,并且将日志文件写入持久化存储区。
在实际应用中,若配置信息指示第二执行策略,则对于任一事务,将该事务的日志事件写入日志文件之后,即可以将日志文件进行事务提交,然后再将日志文件写入持久化存储区,也就是说,可以不用等待日志文件持久化之后就可以进行提交。或者,也可以将日志文件写入持久化存储区的同时,就进行事务提交。即日志文件持久化和事务提交不具有严格的时序关系,可以根据具体需要进行配置。
示例性的,若持久化线程的预设值sync_binlog=1,则等待持久化操作完成之后,再进行引擎事务提交;否则,事务的日志事件写入日志文件之后就进行事务提交。
在一种可能的实现方式中,该方法还包括:确定多个事务分别对应的多个临时存储区时,对执行确定多个临时存储区操作的代码块进行加锁操作。
在实际应用中,由于第一临时存储区为共享存储区,为了保证操作时数据的安全,在第一临时存储区中为每个事务分配对应的临时存储区时,对执行确定多个临时存储区操作的代码块进行加锁操作,通过加锁Lock_log进行保护。
在一种可能的实现方式中,确定多个事务分别对应的多个临时存储区,包括:对于多个事务中的任一事务,根据事务的日志事件的数据量,确定事务对应的临时存储区。
可选的,在共享的临时存储区中为每个事务分配对应的临时存储区时,临时存储区的大小可以根据该事务的日志事件的数据量来确定。
可选的,在共享的临时存储区中为每组事务分配对应的临时存储区时,临时存储区的大小可以根据每组事务的日志事件的数据量来确定。
为了更加清楚的介绍本申请技术方案的技术思路,下面通过具体的实施例进行详细介绍。
图4为本申请一实施例的数据写入方法的示意图。如图4所示,获取多个事务Trx1、Trx2、Trx3、Trx4的日志事件(例如,可以为二进制日志事件Binlog Event),为每个事务分配全局事务标识符(Global Transaction Identifiner,GTID),以及分配逻辑时钟(Logical Clock),并且在二进制日志文件共享缓存中为每个事务分配对应的缓存,将各事务的日志事件并行写入对应的缓存,即在缓存中将日志事件写入日志文件,并将日志文件(例如,可以为二进制日志文件)进行持久化操作,存储到持久化存储区中,待持久化操作完成后进行引擎事务提交。其中,分配全局标识、分配逻辑时钟以及分配缓存可以是顺序执行的,为了保证GTID和Logical Clock在日志文件中是有序的,分配GTID和Logical Clock以及分配缓存的操作,一起进行加锁(Lock_log)保护。另外,写入缓存、等待持久化以及引擎提交的操作可以多个事务并行执行,通过写入线程将各事务的日志事件写入入日志文件,待写入操作完成后,向持久化线程发送持久化通知消息,通过持久化线程,对日志文件进行持久化操作,存储的日志事件基于存储引擎进行事务提交。本实施例中,在多个事务共享的临时存储区确定多个事务分别对应的临时存储区,通过并行处理的方式,基于多个事务分别对应的临时存储区,将多个事务的日志事件写入持久化存储区,采用并行处理方式可以提高数据写入速度,从而提升数据库管理系统的性能。
图5为本申请一实施例的数据写入方法的示意图。如图5所示,日志以MySQL中的二进制日志Binlog为例进行说明。事务进入提交阶段后执行如下流程:分配Gtid、分配Logical Clock、分配Binlog Buffer空间。这些步骤串行执行,同时只能有一个事务进行这些操作。各事务线程将自己的日志事件Binlog Events写入到分配的缓存Binlog Buffer中。通知写入线程Binlog Write,这一段Buffer可以写入。事务等待自己的Binlog Events写入Binlog文件中,在写入完成时,生成写入完成通知消息,写入线程在收到通知后,将能写入Binlog文件的部分从Binlog Buffer复制到Binlog文件中,然后通知持久化线程进行持久化操作,然后通知等待的事务可以继续执行了。持久化线程收到通知后,执行Binlog的持久化操作,并通知等待的事务可以继续执行了。事务在收到通知后,确认自己的BinlogEvents已经写入或者持久化了,然后执行提交(Commit)操作。其中,可以根据写入线程或持久化线程对应的预先配置的预设值,来确定事务提交的时机。例如,若sync_binlog=1,则等待持久化完成之后进行事务提交,否则等待写入完成后进行事务提交。
与本申请实施例提供的方法的应用场景以及方法相对应地,本申请实施例还提供一种数据写入装置。如图8所示为本申请一实施例的数据写入装置的结构框图,该数据写入装置可以包括:
获取模块801,用于获取多个事务的日志事件。
确定模块802,用于确定多个事务分别对应的多个临时存储区。
写入模块803,用于通过并行处理的方式,基于多个临时存储区,将多个事务的日志事件写入持久化存储区,持久化存储区中存储的日志事件基于存储引擎进行事务提交。
本申请实施例提供的数据写入装置,在多个事务共享的临时存储区确定多个事务分别对应的临时存储区,通过并行处理的方式,基于多个事务分别对应的临时存储区,将多个事务的日志事件写入持久化存储区,采用并行处理方式可以提高数据写入速度,从而提升数据库管理系统的性能。
在一种可能的实现方式中,写入模块803,具体用于:
通过并行处理的方式,将多个事务的日志事件分别写入各自对应的临时存储区,从各自对应的临时存储区中获取多个事务的日志事件,写入日志文件,并将日志文件写入持久化存储区。
在一种可能的实现方式中,写入模块803,具体用于:
通过并行处理的方式,基于多个临时存储区,利用前台线程将多个事务的逻辑日志事件通过物理日志文件写入持久化存储区,利用后台线程将逻辑日志事件通过逻辑日志文件写入持久化存储区。
在一种可能的实现方式中,写入模块803,还用于:
在服务器启动时,若物理日志文件中记录了逻辑日志文件中未记录的逻辑日志事件,则将未记录的逻辑日志事件写入逻辑日志文件中。
在一种可能的实现方式中,写入模块803在从各自对应的临时存储区中获取多个事务的日志事件,写入日志文件,并将日志文件写入持久化存储区时,用于:
利用写入线程从各自对应的临时存储区中获取多个事务的日志事件,写入日志文件,利用持久化线程将日志文件写入持久化存储区。
在一种可能的实现方式中,写入模块803在利用写入线程从各自对应的临时存储区中获取多个事务的日志事件,写入日志文件时,用于:
根据写入通知消息,利用写入线程从各自对应的临时存储区中获取多个事务的日志事件,写入日志文件。
在一种可能的实现方式中,写入模块803在利用持久化线程将日志文件写入持久化存储区时,用于:
根据持久化通知消息,利用持久化线程将日志文件写入持久化存储区。
在一种可能的实现方式中,装置还包括策略确定模块,用于:
确定配置信息指示第一执行策略。
在一种可能的实现方式中,策略确定模块,还用于:
确定配置信息指示第二执行策略;对于多个事务中的任一事务,从事务对应的第二临时存储区中获取事务的日志事件,写入日志文件之后,将日志文件基于存储引擎进行事务提交,并且将日志文件写入持久化存储区。
在一种可能的实现方式中,装置还包括加锁模块,用于:
确定多个事务分别对应的多个临时存储区时,对执行确定多个临时存储区操作的代码块进行加锁操作。
在一种可能的实现方式中,确定模块802,具体用于:
对于多个事务中的任一事务,根据事务的日志事件的数据量,确定事务对应的临时存储区。
本申请实施例的装置中的各模块的功能可以参见上述方法中的对应描述,并具备相应的有益效果,在此不再赘述。
图9为用来实现本申请实施例的电子设备的框图。如图9所示,该电子设备包括:存储器910和处理器920,存储器910内存储有可在处理器920上运行的计算机程序。处理器920执行该计算机程序时实现上述实施例中的方法。存储器910和处理器920的数量可以为一个或多个。
该电子设备还包括:
通信接口930,用于与外界设备进行通信,进行数据交互传输。
如果存储器910、处理器920和通信接口930独立实现,则存储器910、处理器920和通信接口930可以通过总线相互连接并完成相互间的通信。该总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器910、处理器920及通信接口930集成在一块芯片上,则存储器910、处理器920及通信接口930可以通过内部接口完成相互间的通信。
本申请实施例提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现本申请实施例中提供的方法。
本申请实施例还提供了一种芯片,该芯片包括处理器,用于从存储器中调用并运行存储器中存储的指令,使得安装有芯片的通信设备执行本申请实施例提供的方法。
本申请实施例还提供了一种芯片,包括:输入接口、输出接口、处理器和存储器,输入接口、输出接口、处理器以及存储器之间通过内部连接通路相连,处理器用于执行存储器中的代码,当代码被执行时,处理器用于执行申请实施例提供的方法。
应理解的是,上述处理器可以是中央处理器(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持进阶精简指令集机器(Advanced RISC Machines,ARM)架构的处理器。
进一步地,可选的,上述存储器可以包括只读存储器和随机访问存储器。该存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以包括只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以包括随机访问存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM均可用。例如,静态随机访问存储器(Static RAM,SRAM)、动态随机访问存储器(Dynamic Random Access Memory,DRAM)、同步动态随机访问存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机访问存储器(Double Data RateSDRAM,DDR SDRAM)、增强型同步动态随机访问存储器(Enhanced SDRAM,ESDRAM)、同步链接动态随机访问存储器(Sync link DRAM,SLDRAM)和直接内存总线随机访问存储器(DirectRambus RAM,DR RAM)。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生依照本申请的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中描述的或在此以其他方式描述的任何过程或方法可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
在流程图中描述的或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
应理解的是,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。上述实施例方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。该存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本申请的示例性实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请记载的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (14)

1.一种数据写入方法,其特征在于,包括:
获取多个事务的日志事件;
确定所述多个事务分别对应的多个临时存储区;
通过并行处理的方式,基于所述多个临时存储区,将所述多个事务的日志事件写入持久化存储区,所述持久化存储区中存储的日志事件基于存储引擎进行事务提交。
2.根据权利要求1所述的方法,其特征在于,所述通过并行处理的方式,基于所述多个临时存储区,将所述多个事务的日志事件写入持久化存储区,包括:
通过并行处理的方式,将所述多个事务的日志事件分别写入各自对应的临时存储区,从各自对应的临时存储区中获取所述多个事务的日志事件,写入日志文件,并将所述日志文件写入持久化存储区。
3.根据权利要求1所述的方法,其特征在于,所述通过并行处理的方式,基于所述多个临时存储区,将所述多个事务的日志事件写入持久化存储区,包括:
通过并行处理的方式,基于所述多个临时存储区,利用前台线程将所述多个事务的逻辑日志事件通过物理日志文件写入持久化存储区,利用后台线程将所述逻辑日志事件通过逻辑日志文件写入持久化存储区。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在服务器启动时,若所述物理日志文件中记录了所述逻辑日志文件中未记录的逻辑日志事件,则将所述未记录的逻辑日志事件写入所述逻辑日志文件中。
5.根据权利要求2所述的方法,其特征在于,所述从各自对应的临时存储区中获取所述多个事务的日志事件,写入日志文件,并将所述日志文件写入持久化存储区,包括:
利用写入线程从各自对应的临时存储区中获取所述多个事务的日志事件,写入日志文件,利用持久化线程将所述日志文件写入持久化存储区。
6.根据权利要求5所述的方法,其特征在于,所述利用写入线程从各自对应的临时存储区中获取所述多个事务的日志事件,写入日志文件,包括:
根据写入通知消息,利用写入线程从各自对应的临时存储区中获取所述多个事务的日志事件,写入日志文件。
7.根据权利要求5所述的方法,其特征在于,所述利用持久化线程将所述日志文件写入持久化存储区,包括:
根据持久化通知消息,利用持久化线程将所述日志文件写入持久化存储区。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定配置信息指示第一执行策略。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定配置信息指示第二执行策略;
对于所述多个事务中的任一事务,从所述事务对应的临时存储区中获取所述事务的日志事件,写入日志文件之后,将所述日志文件基于存储引擎进行事务提交,并且将所述日志文件写入持久化存储区。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述多个事务分别对应的多个临时存储区时,对执行确定多个临时存储区操作的代码块进行加锁操作。
11.根据权利要求1所述的方法,其特征在于,所述确定所述多个事务分别对应的多个临时存储区,包括:
对于所述多个事务中的任一事务,根据所述事务的日志事件的数据量,确定所述事务对应的临时存储区。
12.一种数据写入装置,其特征在于,包括:
获取模块,用于获取多个事务的日志事件;
确定模块,用于确定所述多个事务分别对应的多个临时存储区;
写入模块,用于通过并行处理的方式,基于所述多个临时存储区,将所述多个事务的日志事件写入持久化存储区,所述持久化存储区中存储的日志事件基于存储引擎进行事务提交。
13.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,所述处理器在执行所述计算机程序时实现权利要求1-11中任一项所述的方法。
14.一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-11中任一项所述的方法。
CN202211068029.4A 2022-09-01 2022-09-01 数据写入方法、装置、电子设备及存储介质 Pending CN115408411A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211068029.4A CN115408411A (zh) 2022-09-01 2022-09-01 数据写入方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211068029.4A CN115408411A (zh) 2022-09-01 2022-09-01 数据写入方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN115408411A true CN115408411A (zh) 2022-11-29

Family

ID=84163079

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211068029.4A Pending CN115408411A (zh) 2022-09-01 2022-09-01 数据写入方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN115408411A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117093323A (zh) * 2023-08-23 2023-11-21 北京志凌海纳科技有限公司 基于后端执行引擎中实现沙盒机制的方法及系统
CN117194566A (zh) * 2023-08-21 2023-12-08 泽拓科技(深圳)有限责任公司 多存储引擎数据复制方法、系统、计算机设备
CN117667319A (zh) * 2024-02-02 2024-03-08 建信金融科技有限责任公司 一种事务处理方法和装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117194566A (zh) * 2023-08-21 2023-12-08 泽拓科技(深圳)有限责任公司 多存储引擎数据复制方法、系统、计算机设备
CN117194566B (zh) * 2023-08-21 2024-04-19 泽拓科技(深圳)有限责任公司 多存储引擎数据复制方法、系统、计算机设备
CN117093323A (zh) * 2023-08-23 2023-11-21 北京志凌海纳科技有限公司 基于后端执行引擎中实现沙盒机制的方法及系统
CN117093323B (zh) * 2023-08-23 2024-03-26 北京志凌海纳科技有限公司 基于后端执行引擎中实现沙盒机制的方法及系统
CN117667319A (zh) * 2024-02-02 2024-03-08 建信金融科技有限责任公司 一种事务处理方法和装置
CN117667319B (zh) * 2024-02-02 2024-05-03 建信金融科技有限责任公司 一种事务处理方法和装置

Similar Documents

Publication Publication Date Title
US11386065B2 (en) Database concurrency control through hash-bucket latching
CN115408411A (zh) 数据写入方法、装置、电子设备及存储介质
US10545913B1 (en) Data storage system with on-demand recovery of file import metadata during file system migration
CN103729442A (zh) 记录事务日志的方法和数据库引擎
JPH0683679A (ja) データのバックアップ・コピー中の同時アクセスの方法及びシステム
WO2019228440A1 (zh) 数据页访问方法、存储引擎以及计算机可读存储介质
CN111125040A (zh) 管理重做日志的方法、装置及存储介质
US20140164828A1 (en) Consistency of data in persistent memory
CN115145697A (zh) 数据库事务的处理方法、装置及电子设备
CN115686881A (zh) 数据处理方法、装置和计算机设备
EP3933639B1 (en) Transaction processing method, apparatus, and electronic device for blockchain
CN114741449A (zh) 一种基于分布式数据库的对象存储方法及装置
CN113626205B (zh) 处理器、物理寄存器管理方法及电子装置
CN115348276A (zh) 数据存储方法、装置、计算机设备及存储介质
CN116226041A (zh) 分布式文件系统中的文件读/写方法、装置和设备
CN115756608A (zh) 指令执行方法、共享缓存、计算机系统及存储介质
US11237925B2 (en) Systems and methods for implementing persistent data structures on an asymmetric non-volatile memory architecture
CN109271277B (zh) 数据库宕机后的访问方法、装置和系统
CN112559457A (zh) 数据访问方法及装置
US7447875B1 (en) Method and system for management of global queues utilizing a locked state
CN110096389A (zh) 一种数据库的启动方法、装置、设备和存储介质
CN117076147B (zh) 死锁检测方法、装置、设备和存储介质
KR101881039B1 (ko) 비휘발성 메모리에 저장된 메모리 매핑 파일의 비동기식 원자적 업데이트 방법 및 제어 장치
US20210034580A1 (en) Method, apparatus and computer program product for maintaining metadata
CN118093104A (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