CN116225627A - 事务记录方法和系统 - Google Patents
事务记录方法和系统 Download PDFInfo
- Publication number
- CN116225627A CN116225627A CN202211559202.0A CN202211559202A CN116225627A CN 116225627 A CN116225627 A CN 116225627A CN 202211559202 A CN202211559202 A CN 202211559202A CN 116225627 A CN116225627 A CN 116225627A
- Authority
- CN
- China
- Prior art keywords
- transaction
- execution
- information
- operation request
- main thread
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种事务记录方法和系统,通过本发明,在接收到至少一个操作请求的情况下,基于接收到的操作请求创建相应的第一事务,通过主线程执行第一事务,在主线程对第一事务执行结束的情况下产生第一事务对应的事务信息,事务信息指示主线程对第一事务的执行过程,在主线程对第一事务执行结束后通过后台线程将第一事务对应的事务信息记录至预设日志文件中,即通过后台线程将处于缓存状态的事务信息记录至预设日志文件中,可以避免阻塞主线程,以减少主线程阻塞对数据库系统产生性能衰减影响,从而解决如何降低日志文件系统记录事务信息所带来的数据库性能损耗的问题。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种事务记录方法和系统。
背景技术
主流的数据库系统中,日志文件记录了影响数据库的各种类型活动。以MySQL(关系型数据库管理系统)为例,数据库中常见的日志文件系统有慢查询日志(slow querylog)、语句记录日志(general log)、错误日志(error log)等。以上这些日志文件系统可以帮助数据库管理员(Database Administrator,DBA)对数据库的运行状态进行诊断,分析数据库文件的各种日志文件,是进行数据库层面优化非常重要的手段。同时,MySQL中的归档日志文件(binlog)、重做日志文件(redolog)、回滚日志文件(undolog)等日志文件可以帮助数据库在发生故障时恢复数据库数据,实现主从同步等,数据备份等功能。
目前,数据库中现有的用来进行数据库优化的日志系统大都是以SQL语句级别进行记录的,均没有对事务信息进行记录的日志文件系统。虽然可以通过查询事务执行表(information_schema.innodb_trx)来查询当前正在执行事务信息,但是其不是一张历史记录表,没有记录已经执行结束的事务信息。也就是说,目前并没有一种日志文件系统能够将历史事务执行过程中的事务信息全部记录下来。作为记录历史事务信息的一种日志文件系统,其重点与难点在于记录事务信息的同时,如何降低记录事务信息所带来的数据库性能损耗。
发明内容
本发明实施例提供了一种事务记录方法和系统,以至少解决如何降低日志文件系统记录事务信息所带来的数据库性能损耗的问题。
根据本发明的一个实施例,提供了一种事务记录方法,包括:
根据接收到的至少一个操作请求创建相应的第一事务;
通过主线程执行所述第一事务,并在所述主线程对所述第一事务执行结束的情况下,确定所述第一事务对应的事务信息,其中,所述事务信息用于指示所述第一事务的执行全过程;
通过后台线程将所述事务信息记录至预设日志文件,其中,所述后台线程和所述主线程为不同的线程。
根据本发明的另一个实施例,提供了一种事务记录系统,包括:
创建模块,用于根据接收到的至少一个操作请求创建相应的第一事务;
执行模块,用于通过主线程执行所述第一事务,并在所述主线程对所述第一事务执行结束的情况下,确定所述第一事务对应的事务信息,其中,所述事务信息用于指示所述第一事务的执行全过程;
记录模块,用于通过后台线程将所述事务信息记录至预设日志文件,其中,所述后台线程和所述主线程为不同的线程。
通过本发明提供的事务记录方法和系统,在接收到至少一个操作请求的情况下,基于接收到的操作请求创建相应的第一事务,通过主线程执行第一事务,在主线程对第一事务执行结束的情况下产生第一事务对应的事务信息,事务信息指示主线程对第一事务的执行过程,在主线程对第一事务执行结束后通过后台线程将第一事务对应的事务信息记录至预设日志文件中,即通过后台线程将处于缓存状态的事务信息记录至预设日志文件中,通过预设日志文件持久化保存事务对应的事务信息,还可以避免阻塞主线程,减少由于主线程阻塞对数据库系统产生的性能衰减影响,从而解决如何降低日志文件系统记录事务信息所带来的数据库性能损耗的问题,达到延长数据库使用寿命的技术效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的事务记录方法的应用环境图;
图2是根据本发明实施例的事务记录方法的流程图;
图3是根据本发明实施例的事务记录方法的流程图;
图4是根据本发明实施例的事务记录方法的流程图;
图5是根据本发明实施例的事务记录方法的流程图;
图6是根据本发明实施例的事务记录系统的结构框图;
图7是根据本发明可选实施例的电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为一个实施例中事务记录方法的应用环境图。参照图1,该事务记录方法应用于日志文件系统。该日志文件系统包括终端110和事务记录系统120。终端110和事务记录系统120通过网络连接,终端110用于向事务记录系统120发起操作请求,事务记录系统120用于根据接收到的操作请求创建事务并执行,而且还将事务执行过程形成事务信息记录至预设日志文件中进行持久化保存。终端110具体可以是台式终端或移动终端,移动终端具体可以为手机、平板电脑、笔记本电脑等中的至少一种。事务记录系统120为数据库日志系统,数据库日志系统具体可以应用于不同类型的数据库系统中,数据库系统具体包括MySQL、Oracle、SqlServer、SQLite、INFORMIX、Redis、MongoDB、HBase、Neo4J、CouchDB等,数据库系统具体可以用独立的服务器或者是多个服务器组成的服务器集群来实现,在本实施例中以事务记录系统应用于MySQL来举例说明。
在一个实施例中,图2为一个实施例中一种事务记录方法的流程示意图,参照图2,提供了一种事务记录方法。本实施例主要以该方法应用于上述图1中的事务记录系统120来举例说明,该事务记录方法具体包括如下步骤:
步骤S210,根据接收到的至少一个操作请求创建相应的第一事务。
具体的,操作请求为事务记录系统120所支持的数据库语言形成的、用于请求执行操作动作的请求,以事务记录系统120应用于MySQL为例,操作请求即为SQL请求,一个SQL请求对应于一个SQL语句,操作动作具体可以为查询、操作、定义、控制、提交等。事务是指访问事务记录系统120并可能操作各种数据项的一个数据库操作序列,即事务包括至少一个SQL请求,事务中全部SQL请求要么全部执行,要么全部不执行,即事务中全部SQL请求的执行状态保持一致。第一事务为任意一个事务。
步骤S220,通过主线程执行所述第一事务,并在所述主线程对所述第一事务执行结束的情况下,确定所述第一事务对应的事务信息,其中,所述事务信息用于指示所述第一事务的执行全过程。
具体的,事务记录系统120在创建第一事务后开启主线程,主线程为处于空闲状态用于执行SQL语句的主线程,通过主线程执行第一事务,且主线程将对第一事务的执行过程缓存起来,在主线程对第一事务执行结束的情况下,以得到第一事务对应的事务信息,事务信息指示主线程对第一事务执行的全过程,即事务信息包含第一事务内部执行的所有SQL语句,且事务信息中的每个SQL语句与实际执行的SQL语句保持一致,从而确保预设日志文件中记录的事务信息的完整性。但此时事务信息仍处于缓存状态,并未持久化记录至日志文件中。
步骤S230,通过后台线程将所述事务信息记录至预设日志文件,其中,所述后台线程和所述主线程为不同的线程。
具体的,后台线程为无需执行事务的后台线程,若通过主线程将事务信息记录至预设日志文件中,则会影响第一主线程无法执行后续事务,导致第一主线程阻塞,因此将事务信息的记录模块剥离主线程,即通过后台线程将处于缓存状态的事务信息记录至预设日志文件中,通过预设日志文件持久化保存事务对应的事务信息,还可以避免阻塞主线程,减少对数据库系统产生的性能衰减影响,预设日志文件为提前配置用于存储事务信息的日志文件。从而可以解决如何降低日志文件系统记录事务信息所带来的数据库性能损耗的问题,达到延长数据库使用寿命的技术效果。
在一个实施例中,所述通过主线程执行所述第一事务,并在所述主线程对所述第一事务执行结束的情况下,确定所述第一事务对应的事务信息,包括:
通过所述主线程依次执行所述第一事务中各个所述操作请求,得到各个所述操作请求对应的执行信息;
将各个所述操作请求对应的执行信息依次添加至所述第一事务对应的生产者链表中;
在所述主线程对所述第一事务中全部所述操作请求执行结束的情况下,基于所述生产者链表确定所述第一事务对应的事务信息。
具体的,通过主线程依次执行第一事务中的各个SQL语句,从而得到各个SQL语句对应的执行信息,每个执行信息用于指示相应SQL语句的执行过程,执行信息包括SQL语句的缓存地址以及SQL语句的执行时间信息,在每个SQL语句执行结束的情况下,通过主线程将各个SQL语句对应的执行信息依照执行顺序依次添加至第一事务对应的生产者链表中,每个事务都对应一个生产者链表,生产者链表用于记录对应事务中各个SQL语句的执行过程,在主线程对第一事务中全部SQL语句执行结束的情况下,根据第一事务对应的生产者链表形成第一事务对应的事务信息,即基于第一事务对应的生产者链表可以确定第一事务的事务时间信息以及第一事务内的各个SQL语句,即事务信息至少包括事务时间信息和对应事务内的各个SQL语句。
在一个实施例中,所述通过所述主线程执行所述第一事务中各个所述操作请求,得到各个所述操作请求对应的执行信息,包括:
通过所述主线程执行所述第一事务中各个所述操作请求,得到各个所述操作请求对应的执行状态;
在当前操作请求的执行状态为执行结束的情况下,在预设请求列表中根据所述当前操作请求的语句类型,确定所述当前操作请求对应的记录状态,其中,所述预设请求列表包括多个不同语句类型对应的记录状态;
在所述当前操作请求对应的记录状态为记录的情况下,记录所述当前操作请求的执行时间信息,其中,所述执行时间信息包括执行开始时刻和执行结束时刻,所述当前操作请求为所述第一事务中任意一个所述操作请求;
根据所述当前操作请求的执行时间信息,确定所述当前操作请求对应的执行信息。
具体的,通过主线程执行第一事务中各个SQL语句,每个SQL语句对应的执行状态为执行结束、执行中或未执行,当前操作请求为第一事务中任意一个操作请求,在当前操作请求的执行状态为执行结束的情况下,将当前操作请求的执行开始时刻和执行结束时刻记录下来作为当前操作请求的执行时间信息,可以仅将执行时间信息作为当前操作请求对应的执行信息,即执行信息至少包括执行时间信息。
不同的操作请求所对应的语句类型不同,语句类型具体包括文本类型、数字类型和日期/时间类型,不同的语句类型对应的记录状态不同,预设请求列表为基于业务需求自定义的列表,其中包含了预设的语句类型以及对应的记录状态,记录状态包括记录和不记录,仅将记录状态为记录的语句类型所对应的操作请求在执行过程中的相关信息进行缓存,对于记录状态为不记录的语句类型所对应的操作请求在执行过程中的相关信息无需进行缓存,相关信息至少包括操作请求的执行时间信息,即数据库管理人员可以根据需求自定义需要记录的语句类型,可以选择性地将所有或部分语句类型对应操作请求在执行过程中的相关信息进行缓存。
在一个实施例中,所述在所述当前操作请求对应的记录状态为记录的情况下,记录所述当前操作请求的执行时间信息之后,所述根据所述当前操作请求的执行时间信息,确定所述当前操作请求对应的执行信息,包括:
在所述当前操作请求相应操作语句对应的记录状态为记录的情况下,确定所述主线程的内存块申请状态;在所述内存块申请状态为已申请的情况下,将所述当前操作请求对应操作语句添加至已申请的目标内存块中,并确定所述当前操作请求对应操作语句在所述目标内存块中的目标内存地址,其中,所述目标内存块为所述主线程和所述后台线程共享的内存池中任意一个空闲的内存块;将所述当前操作请求的执行时间信息以及所述目标内存地址作为所述当前操作请求的执行信息;或,
在所述当前操作请求相应操作语句对应的记录状态为不记录的情况下,将所述当前操作请求的执行时间信息作为所述当前操作请求对应的执行信息。
具体的,操作请求相应操作语句对应的记录状态包括记录和不记录,即仅将记录状态为记录的SQL语句进行缓存,对于记录状态为不记录的SQL语句无需进行缓存,即数据库管理人员可以根据需求自定义需要记录的SQL语句,可以选择性地将事务中所有或部分操作请求相应SQL语句进行缓存,即操作请求在执行过程中的相关信息还包括操作请求相应操作语句,即SQL语句。
在当前操作请求相应操作语句所对应的记录状态为记录的情况下,确定主线程的内存块申请状态,内存块申请状态包括已申请和未申请,对于未申请时,主线程无法将操作请求对应SQL语句缓存至内存块中,可以缓存至主线程对应的内存中,但该方式需要将SQL语句拷贝至主线程对应的内存之后,后台线程需要再从主线程对应的内存中将SQL语句拷贝至后台线程对应的内存中,即该方式需要进行两次内存拷贝,事务记录系统120中内存频繁的申请与释放会产生性能损坏。在内存块申请状态为已申请的情况下,则将当前操作请求对应的SQL语句缓存至已申请的目标内存块中,目标内存块为主线程和后台线程共享的内存池中任意一个空闲的内存块,内存池的大小以及内存池中内存块的数量和大小可以依据应用场景进行适应性动态调整还不会影响事务日志的功能,主线程通过申请内存池中的目标内存块,可以直接将当前操作请求对应的SQL语句缓存至目标内存块中,无需拷贝至主线程对应的内存中,由于内存池为主线程和后台线程共享,所以后台线程可以从目标内存块中拷贝当前操作请求对应的SQL语句,从而减少了一次内存拷贝,以减少由于内存的频繁申请和释放对事物记录系统的性能损耗。
将当前操作请求对应SQL语句缓存至目标内存块中,确定当前操作请求对应SQL语句在目标内存块中的缓存地址,即目标内存地址,将目标内存地址和当前操作请求的执行时间信息作为当前操作请求的执行信息。
在TPCC性能测试中,事务记录系统120在事务级日志功能全开的情况下,表示记录事务在执行过程中的所有信息,事务记录系统120的性能损耗有效控制在10%以内;将事务的执行时长阈值调整为1秒(记录执行时长超过一秒的事务),事务记录系统120的性能损耗有效控制在3%以内。
在当前操作请求相应SQL语句所对应的记录状态为不记录的情况下,表示无需将当前操作请求相应SQL语句记录下来,也就无需将当前操作请求相应SQL语句缓存至目标内存块中,即当前操作请求对应SQL语句在目标内存块中的目标内存地址为空,仅以当前操作请求对应的执行时间信息作为对应的执行信息,每个操作请求都对应一个执行信息,执行信息包括执行时间信息和内存地址,不同的操作请求基于语句类型使得内存地址为空或有效地址,有效地址是指操作请求对应SQL语句存储在内存块中的缓存地址。
在一个实施例中,所述在所述当前操作请求对应的记录状态为记录的情况下,确定内存块申请状态之后,所述方法还包括:
在所述内存块申请状态为未申请的情况下,通过所述主线程向所述内存池申请所述目标内存块后,执行所述将所述当前操作请求对应操作语句添加至已申请的目标内存块中,并确定所述当前操作请求对应操作语句在所述目标内存块中的目标内存地址的步骤。
具体的,在主线程还未针对第一事务从内存池中申请相应的目标内存块的情况下,为了避免将当前操作请求相应SQL语句缓存至主线程对应的内存中,则从内存池中申请目标内存块后,再将当前操作请求对应SQL语句缓存至目标内存块中,从而减少由于内存的频繁申请和释放对事物记录系统的性能损耗。
在一个实施例中,所述在所述主线程对所述第一事务中全部所述操作请求执行结束的情况下,基于所述生产者链表确定所述第一事务对应的事务信息,包括:
在所述主线程对所述第一事务中全部所述操作请求执行结束的情况下,确定所述第一事务的提交模式;
基于所述第一事务中各个所述操作请求对应的执行时间信息以及所述提交模式,确定所述第一事务的事务时间信息;
基于所述事务时间信息以及所述生产者链表,确定所述第一事务对应的事务信息。
具体的,在主线程对第一事务中全部操作请求执行结束之后才会得到第一事务的提交模式,提交模式包括显式提交和隐式提交,显式提交是指依照COMMIT命令直接完成的提交,隐式提交是指依照SQL命令间接完成的提交。不同的提交模式所对应的事务时间信息确定方式不同,依照提交模式所对应的事务时间信息确定方式,结合第一事务中各个操作请求的执行时间信息,确定第一事务的事务时间信息,事务时间信息用于指示主线程对事务执行的时间情况,根据事务时间信息和生产者链表确定第一事务对应的事务信息,由于生产者链表中各个执行信息包括执行时间信息和内存地址,基于内存地址可查询到执行信息相应的SQL语句,因此事务信息至少包括事务时间信息和第一事务内记录状态为记录的SQL语句。
在一个实施例中,所述事务时间信息包括事务开始时刻和事务结束时刻,所述基于所述第一事务中各个所述操作请求对应的执行时间信息以及所述提交模式,确定所述第一事务的事务时间信息,包括:
在所述提交模式为显式提交的情况下,将各个所述操作请求对应的执行时间信息中最早的执行开始时刻作为事务开始时刻,并将各个所述操作请求对应的执行时间信息中最晚的执行结束时刻作为事务结束时刻;或,
在所述提交模式为隐式提交的情况下,将各个所述操作请求对应的执行时间信息中最早的执行开始时刻作为事务开始时刻,并将隐式提交的触发时刻作为事务结束时刻。
具体的,在提交模式为显式提交的情况下,则以第一事务中第一个被主线程执行的操作请求对应的执行开始时刻作为事务开始时刻,以第一事务中最后一个被主线程执行的操作请求对应的执行结束时刻作为事务结束时刻。
在提交模式为隐式提交的情况下,则以第一事务中第一个被主线程执行的操作请求对应的执行开始时刻作为事务开始时刻,以隐式提交的触发时刻作为事务结束时刻。
在一个实施例中,所述在所述主线程对所述第一事务中全部所述操作请求执行结束的情况下,确定所述第一事务的提交模式之后,所述方法还包括:
在所述提交模式为隐式提交且所述生产者链表中执行信息的个数大于预设数量的情况下,根据所述生产者链表中位于末位的执行信息创建第二事务,并删除所述生产者链表中位于末位的执行信息,得到更新后的所述生产者链表。
具体的,在提交模式为隐式提交且第一事务对应的生产者链表中执行信息的个数大于预设数量的情况下,删除生产者链表中位于末位的执行信息,为了避免生产者链表中无执行信息可删除,因此预设数量大于等于1,预设数量可以根据应用场景进行自定义,在本实施例中令预设数量为1,在提交模式为隐式提交的情况下,生产者链表中位于末位的执行信息相应操作请求用于指示隐式提交操作,但隐式提交操作相当于一个新的事务,无法算作第一事务中的操作请求,因此,需要根据第一事务对应生产者链表中位于末位对应于隐式提交操作的执行信息创建第二事务,并删除第一事务对应生产者链表中位于末位对应于隐式提交操作的执行信息,从而形成仅对应于第一事务的生产者链表。
在一个实施例中,所述基于所述事务时间信息以及所述生产者链表,确定所述第一事务对应的事务信息,包括:
将所述事务时间信息、所述第一事务对应的事务流水号以及所述主线程的线程标识,作为所述第一事务对应的基础信息;
将所述生产者链表以及所述基础信息,或,更新后的所述生产者链表以及所述基础信息,作为所述第一事务对应的事务信息。
具体的,主线程在创建第一事务时会自动生成唯一指示第一事务的事务流水号,即每个事务都有一个唯一的事务流水号,在事务记录系统120包含多个用于执行事务的主线程的情况下,对于不同的事务可以采用不同的主线程进行执行,每个线程都有唯一的线程标识,因此,在记录第一事务的执行过程时需要记录执行第一事务的主线程,即记录执行第一事务的主线程的线程标识,将事务时间信息、第一事务的事务流水号、主线程的线程标识作为第一事务对应的基础信息,将基础信息结合对应于第一事务的生产者链表、以及缓存于目标内存块中的SQL语句形成第一事务对应的事务信息。
通过全局事务流水号对全局事务进行唯一标识,使分布式数据库可以获取全局完整的某个事务信息,为分布式数据库的全局事务查询提供了基础。
在一个实施例中,所述通过主线程执行所述第一事务,并在所述主线程对所述第一事务执行结束的情况下,确定所述第一事务对应的事务信息之后,所述方法还包括:
通过所述主线程将所述第一事务对应的事务信息保存至生产者队列中;
所述通过后台线程将所述事务信息记录至预设日志文件,其中,所述后台线程和所述主线程为不同的线程,包括:
在事务级日志记录状态为允许记录的情况下,通过所述后台线程从所述生产者队列中拉取出事务信息;
通过所述后台线程将所述事务信息中的所述生产者链表或更新后的所述生产者链表,交换进消费者链表中;
通过所述后台线程循环遍历所述消费者链表中的各个所述执行信息,确定所述第一事务对应的打印内容;
在所述后台线程对所述消费者链表中全部所述执行信息遍历结束的情况下,将所述第一事务对应的打印内容写入预设日志文件。
具体的,在第一事务执行结束或回滚的情况下,通过主线程将第一事务对应的事务信息保存至生产者队列中,生产者队列用于缓存不同事务对应的事务信息,在事务级日志记录状态为允许记录的情况下,后台线程定时从生产者队列中拉取各个事务对应的事务信息以记录至预设日志文件中,事务级日志记录状态包括允许记录和不允许记录,允许记录表示事务记录系统120开启了事务记录功能,不允许记录表示事务记录系统120并未开启事务记录功能,在不允许记录的情况下,事务记录系统120虽然通过主线程执行第一事务并将第一事务的事务信息缓存至目标内存块中,但无法持久化记录至预设日志文件中,只有在允许记录的情况下,事务记录系统120在主线程执行完事务的情况下开启后台线程,利用后台线程将事务执行结束后缓存的事务信息记录至预设日志文件中。
在允许记录的情况下,后台线程定时从生产者队列中拉取不同事务对应的事务信息以拷贝至后台线程对应的内存中,将拉取出的事务信息中的生产者链表交换至消费者链表中,并循环遍历消费者链表中的各个执行信息,每遍历结束一个执行信息则基于遍历结果确定相应执行信息对应的打印内容,基于已遍历结束的各个执行信息所对应的打印内容形成第一事务对应的打印内容,打印内容用于需要记录至预设日志文件中的内容,在后台线程对消费者链表中各个执行信息遍历结束的情况下,将第一事务对应的打印内容记录至预设日志文件中。
在一个实施例中,所述通过所述后台线程循环遍历所述消费者链表中的各个所述执行信息,确定所述第一事务对应的打印内容,包括:
在所述后台线程对当前执行信息遍历结束的情况下,根据所述第一事务的日志记录级别确定所述当前执行信息对应的打印模式;
在所述打印模式为第一模式的情况下,将所述当前执行信息中的执行时间信息以及所述目标内存块中所述目标内存地址对应存储的操作语句作为打印内容,或,
在所述打印模式为第二模式的情况下,将所述事务信息中的基础信息、所述当前执行信息中的执行时间信息以及所述目标内存块中所述目标内存地址对应存储的操作语句作为打印内容。
具体的,当前执行信息为消费者链表中任意一个执行信息,在后台线程对当前执行信息遍历结束的情况下,根据第一事务的日志记录级别确定当前执行信息对应的打印模式,每个事务都对应一个日志记录级别,通过日志记录级别来确定该事务对应的打印模式,日志记录级别越高,相应打印模式越复杂,即事务中所需要记录的信息越多。
在打印模式为第一模式的情况下,仅将当前执行信息中的执行时间信息以及目标内存块中目标内存地址对应存储的SQL语句作为打印内容,保存至后台线程对应的内存(IO_CACHE)中,即该打印模式下无需记录第一事务对应的基础信息,仅记录当前操作请求的执行时间信息和SQL语句。在打印模式为第二模式的情况下,将当前执行信息的执行时间信息和SQL语句以及第一事务对应的基础信息作为打印内容,保存至后台线程对应的内存中,即对于需要记录的SQL语句,后台线程则从目标内存块中拷贝缓存至对应内存中。在后台线程遍历完消费者链表中全部执行信息的情况下,后台线程再将对应内存中的打印内容拷贝写入预设日志文件中。
在一个实施例中,在所述后台线程对所述消费者链表中全部所述执行信息遍历结束的情况下,所述方法还包括:
通过所述后台线程清空所述目标内存块并归还至所述内存池中。
具体的,在后台线程对消费者链表中全部执行信息遍历结束的情况下,后台线程也从目标内存块中将需要记录的全部SQL语句拷贝缓存至对应内存中,则无需目标内存块继续缓存事务内各个操作请求的SQL语句,因此通过后台线程清空目标内存块以释放目标内存块的存储空间,并将目标内存块归还至内存池进行复用,便于后续主线程用于缓存事务信息从内存池中申请内存块,以实现内存块的循环使用。
在一个具体实施例中,如图3所示,事务记录系统120通过主线程(worker线程)执行事务中的操作请求,基于操作请求的语句类型判断是否记录该操作请求在执行过程中的相关信息,在需要记录该操作请求在执行过程中的相关信息的情况下,记录该操作请求的执行时间信息,进而再判断是否需要记录该操作请求相应操作语句,若需要记录则判断第一线程是否已经向内存池申请了目标内存块,若已经申请了目标内存块,则将该操作请求相应操作语句缓存至目标内存块中,并记录其位于目标内存块中的缓存地址,即目标内存地址,并将目标内存地址和执行时间信息作为执行信息添加至生产者链表中。若不需要记录该操作请求相应操作语句,则仅以执行时间信息作为执行信息添加至生产者链表中。在事务未执行结束的情况下,主线程继续对事务中未执行的操作请求进行执行操作,在事务执行结束的情况下,确定事务的提交模式,在提交模式为隐式提交且生产者链表中不止一个SQL对象(也就是执行信息)的情况下,删除生产者链表中最后一个执行信息,得到更新后的生产者链表,再将更新后的生产者链表和事务的基础信息作为事务信息保存至生产者队列中。若提交模式为显式提交的情况下,则直接将生产者链表和事务的基础信息作为事务信息保存至生产者队列中。之后,主线程则等待执行新的事务。
如图4和图5所示,图5中的Trx_record用于指示记录操作请求所对应的执行信息,g_trx_to_record_list用于指示生产者链表,g_trx_record_list用于指示消费者链表。事务记录系统120通过后台线程定时从生产者队列中拉取事务信息,并将拉取到的事务信息中的生产者链表交换至消费者链表中,通过循环遍历消费者链表,以确定需要记录的打印内容,在第一模式(简单模式)下,仅将消费者链表中的时间执行信息以及缓存在目标内存块中内存地址所对应的操作语句作为打印内容,写入后台线程对应的内存(IO_CACHE)中;在第二模式(正常模式)下,将事务的基础信息、消费者链表中各个时间执行信息以及缓存在目标内存块中内存地址所对应的操作语句作为打印内容,写入后台线程对应的内存(IO_CACHE)中。在后台线程对消费者链表遍历结束后,将后台线程对应内存中的全部打印内容写入预设日志文件中,且清空目标内存块并归还至内存池中进行复用。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
图2至图4为一个实施例中事务记录方法的流程示意图。应该理解的是,虽然图2至图4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2至图4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图6所示,提供了一种事务记录系统120,包括:
创建模块310,用于根据接收到的至少一个操作请求创建相应的第一事务;
执行模块320,用于通过主线程执行所述第一事务,并在所述主线程对所述第一事务执行结束的情况下,确定所述第一事务对应的事务信息,其中,所述事务信息用于指示所述第一事务的执行全过程;
记录模块330,用于通过后台线程将所述事务信息记录至预设日志文件,其中,所述后台线程和所述主线程为不同的线程。
在一个实施例中,所述执行模块320具体用于:
通过所述主线程依次执行所述第一事务中各个所述操作请求,得到各个所述操作请求对应的执行信息;
将各个所述操作请求对应的执行信息依次添加至所述第一事务对应的生产者链表中;
在所述主线程对所述第一事务中全部所述操作请求执行结束的情况下,基于所述生产者链表确定所述第一事务对应的事务信息。
在一个实施例中,所述执行模块320还用于:
通过所述主线程执行所述第一事务中各个所述操作请求,得到各个所述操作请求对应的执行状态;
在当前操作请求的执行状态为执行结束的情况下,在预设请求列表中根据所述当前操作请求的语句类型,确定所述当前操作请求对应的记录状态,其中,所述预设请求列表包括多个不同语句类型对应的记录状态;
在所述当前操作请求对应的记录状态为记录的情况下,记录所述当前操作请求的执行时间信息,其中,所述执行时间信息包括执行开始时刻和执行结束时刻,所述当前操作请求为所述第一事务中任意一个所述操作请求;
根据所述当前操作请求的执行时间信息,确定所述当前操作请求对应的执行信息。
在一个实施例中,所述执行模块320还用于:
在所述当前操作请求相应操作语句对应的记录状态为记录的情况下,确定所述主线程的内存块申请状态;在所述内存块申请状态为已申请的情况下,将所述当前操作请求对应操作语句添加至已申请的目标内存块中,并确定所述当前操作请求对应操作语句在所述目标内存块中的目标内存地址,其中,所述目标内存块为所述主线程和所述后台线程共享的内存池中任意一个空闲的内存块;将所述当前操作请求的执行时间信息以及所述目标内存地址作为所述当前操作请求的执行信息;或,
在所述当前操作请求相应操作语句对应的记录状态为不记录的情况下,将所述当前操作请求的执行时间信息作为所述当前操作请求对应的执行信息。
在一个实施例中,所述执行模块320还用于:
在所述内存块申请状态为未申请的情况下,通过所述主线程向所述内存池申请所述目标内存块后,执行所述将所述当前操作请求对应操作语句添加至已申请的目标内存块中,并确定所述当前操作请求对应操作语句在所述目标内存块中的目标内存地址的步骤。
在一个实施例中,所述执行模块320还用于:
在所述主线程对所述第一事务中全部所述操作请求执行结束的情况下,确定所述第一事务的提交模式;
基于所述第一事务中各个所述操作请求对应的执行时间信息以及所述提交模式,确定所述第一事务的事务时间信息;
基于所述事务时间信息以及所述生产者链表,确定所述第一事务对应的事务信息。
在一个实施例中,所述执行模块320还用于:
在所述提交模式为显式提交的情况下,将各个所述操作请求对应的执行时间信息中最早的执行开始时刻作为事务开始时刻,并将各个所述操作请求对应的执行时间信息中最晚的执行结束时刻作为事务结束时刻;或,
在所述提交模式为隐式提交的情况下,将各个所述操作请求对应的执行时间信息中最早的执行开始时刻作为事务开始时刻,并将隐式提交的触发时刻作为事务结束时刻。
在一个实施例中,所述执行模块320还用于:
在所述提交模式为隐式提交且所述生产者链表中执行信息的个数大于预设数量的情况下,根据所述生产者链表中位于末位的执行信息创建第二事务,并删除所述生产者链表中位于末位的执行信息,得到更新后的所述生产者链表。
在一个实施例中,所述执行模块320还用于:
将所述事务时间信息、所述第一事务对应的事务流水号以及所述主线程的线程标识,作为所述第一事务对应的基础信息;
将所述生产者链表以及所述基础信息,或,更新后的所述生产者链表以及所述基础信息,作为所述第一事务对应的事务信息。
在一个实施例中,所述执行模块320还用于:
通过所述主线程将所述第一事务对应的事务信息保存至生产者队列中;
所述记录模块330还用于:
在事务级日志记录状态为允许记录的情况下,通过所述后台线程从所述生产者队列中拉取出事务信息;
通过所述后台线程将所述事务信息中的所述生产者链表或更新后的所述生产者链表,交换进消费者链表中;
通过所述后台线程循环遍历所述消费者链表中的各个所述执行信息,确定所述第一事务对应的打印内容;
在所述后台线程对所述消费者链表中全部所述执行信息遍历结束的情况下,将所述第一事务对应的打印内容写入预设日志文件。
在一个实施例中,所述记录模块330还用于:
在所述后台线程对当前执行信息遍历结束的情况下,根据所述第一事务的日志记录级别确定所述当前执行信息对应的打印模式;
在所述打印模式为第一模式的情况下,将所述当前执行信息中的执行时间信息以及所述目标内存块中所述目标内存地址对应存储的操作语句作为打印内容,或,
在所述打印模式为第二模式的情况下,将所述事务信息中的基础信息、所述当前执行信息中的执行时间信息以及所述目标内存块中所述目标内存地址对应存储的操作语句作为打印内容。
在一个实施例中,所述记录模块330还用于:
通过所述后台线程清空所述目标内存块并归还至所述内存池中。
图7示出了一个实施例中电子设备的内部结构图。该电子设备具体可以是服务器。如图7所示,该电子设备包括该电子设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该电子设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现事务记录方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行事务记录方法。电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的事务记录系统120可以实现为一种计算机程序的形式,计算机程序可在如图7所示的电子设备上运行。电子设备的存储器中可存储组成该事务记录系统120的各个程序模块,比如,图6所示的创建模块310、执行模块320和记录模块330。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的事务记录方法中的步骤。
图7所示的电子设备可以通过如图6所示的事务记录系统120中的创建模块310执行根据接收到的至少一个操作请求创建相应的第一事务。电子设备可通过执行模块320执行通过主线程执行所述第一事务,并在所述主线程对所述第一事务执行结束的情况下,确定所述第一事务对应的事务信息,其中,所述事务信息用于指示所述第一事务的执行全过程。电子设备可通过记录模块330执行通过后台线程将所述事务信息记录至预设日志文件,其中,所述后台线程和所述主线程为不同的线程。
在一个实施例中,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一项实施例所述的方法。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一项实施例所述的方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指示相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍速率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种事务记录方法,其特征在于,包括:
根据接收到的至少一个操作请求创建相应的第一事务;
通过主线程执行所述第一事务,并在所述主线程对所述第一事务执行结束的情况下,确定所述第一事务对应的事务信息,其中,所述事务信息用于指示所述第一事务的执行全过程;
通过后台线程将所述事务信息记录至预设日志文件,其中,所述后台线程和所述主线程为不同的线程。
2.根据权利要求1所述的方法,其特征在于,所述通过主线程执行所述第一事务,并在所述主线程对所述第一事务执行结束的情况下,确定所述第一事务对应的事务信息,包括:
通过所述主线程依次执行所述第一事务中各个所述操作请求,得到各个所述操作请求对应的执行信息;
将各个所述操作请求对应的执行信息依次添加至所述第一事务对应的生产者链表中;
在所述主线程对所述第一事务中全部所述操作请求执行结束的情况下,基于所述生产者链表确定所述第一事务对应的事务信息。
3.根据权利要求2所述的方法,其特征在于,所述通过所述主线程执行所述第一事务中各个所述操作请求,得到各个所述操作请求对应的执行信息,包括:
通过所述主线程执行所述第一事务中各个所述操作请求,得到各个所述操作请求对应的执行状态;
在当前操作请求的执行状态为执行结束的情况下,在预设请求列表中根据所述当前操作请求的语句类型,确定所述当前操作请求对应的记录状态,其中,所述预设请求列表包括多个不同语句类型对应的记录状态;
在所述当前操作请求对应的记录状态为记录的情况下,记录所述当前操作请求的执行时间信息,其中,所述执行时间信息包括执行开始时刻和执行结束时刻,所述当前操作请求为所述第一事务中任意一个所述操作请求;
根据所述当前操作请求的执行时间信息,确定所述当前操作请求对应的执行信息。
4.根据权利要求3所述的方法,其特征在于,所述在所述当前操作请求对应的记录状态为记录的情况下,记录所述当前操作请求的执行时间信息之后,所述根据所述当前操作请求的执行时间信息,确定所述当前操作请求对应的执行信息,包括:
在所述当前操作请求相应操作语句对应的记录状态为记录的情况下,确定所述主线程的内存块申请状态;在所述内存块申请状态为已申请的情况下,将所述当前操作请求对应操作语句添加至已申请的目标内存块中,并确定所述当前操作请求对应操作语句在所述目标内存块中的目标内存地址,其中,所述目标内存块为所述主线程和所述后台线程共享的内存池中任意一个空闲的内存块;将所述当前操作请求的执行时间信息以及所述目标内存地址作为所述当前操作请求的执行信息;或,
在所述当前操作请求相应操作语句对应的记录状态为不记录的情况下,将所述当前操作请求的执行时间信息作为所述当前操作请求对应的执行信息。
5.根据权利要求4所述的方法,其特征在于,所述在所述主线程对所述第一事务中全部所述操作请求执行结束的情况下,基于所述生产者链表确定所述第一事务对应的事务信息,包括:
在所述主线程对所述第一事务中全部所述操作请求执行结束的情况下,确定所述第一事务的提交模式;
基于所述第一事务中各个所述操作请求对应的执行时间信息以及所述提交模式,确定所述第一事务的事务时间信息;
基于所述事务时间信息以及所述生产者链表,确定所述第一事务对应的事务信息。
6.根据权利要求5所述的方法,其特征在于,所述事务时间信息包括事务开始时刻和事务结束时刻,所述基于所述第一事务中各个所述操作请求对应的执行时间信息以及所述提交模式,确定所述第一事务的事务时间信息,包括:
在所述提交模式为显式提交的情况下,将各个所述操作请求对应的执行时间信息中最早的执行开始时刻作为事务开始时刻,并将各个所述操作请求对应的执行时间信息中最晚的执行结束时刻作为事务结束时刻;或,
在所述提交模式为隐式提交的情况下,将各个所述操作请求对应的执行时间信息中最早的执行开始时刻作为事务开始时刻,并将隐式提交的触发时刻作为事务结束时刻。
7.根据权利要求6所述的方法,其特征在于,所述基于所述事务时间信息以及所述生产者链表,确定所述第一事务对应的事务信息,包括:
将所述事务时间信息、所述第一事务对应的事务流水号以及所述主线程的线程标识,作为所述第一事务对应的基础信息;
将所述生产者链表以及所述基础信息,或,更新后的所述生产者链表以及所述基础信息,作为所述第一事务对应的事务信息。
8.根据权利要求7所述的方法,其特征在于,所述通过主线程执行所述第一事务,并在所述主线程对所述第一事务执行结束的情况下,确定所述第一事务对应的事务信息之后,所述方法还包括:
通过所述主线程将所述第一事务对应的事务信息保存至生产者队列中;
所述通过后台线程将所述事务信息记录至预设日志文件,其中,所述后台线程和所述主线程为不同的线程,包括:
在事务级日志记录状态为允许记录的情况下,通过所述后台线程从所述生产者队列中拉取出事务信息;
通过所述后台线程将所述事务信息中的所述生产者链表或更新后的所述生产者链表,交换进消费者链表中;
通过所述后台线程循环遍历所述消费者链表中的各个所述执行信息,确定所述第一事务对应的打印内容;
在所述后台线程对所述消费者链表中全部所述执行信息遍历结束的情况下,将所述第一事务对应的打印内容写入预设日志文件。
9.根据权利要求8所述的方法,其特征在于,所述通过所述后台线程循环遍历所述消费者链表中的各个所述执行信息,确定所述第一事务对应的打印内容,包括:
在所述后台线程对当前执行信息遍历结束的情况下,根据所述第一事务的日志记录级别确定所述当前执行信息对应的打印模式;
在所述打印模式为第一模式的情况下,将所述当前执行信息中的执行时间信息以及所述目标内存块中所述目标内存地址对应存储的操作语句作为打印内容,或,
在所述打印模式为第二模式的情况下,将所述事务信息中的基础信息、所述当前执行信息中的执行时间信息以及所述目标内存块中所述目标内存地址对应存储的操作语句作为打印内容。
10.一种事务记录系统,其特征在于,包括:
创建模块,用于根据接收到的至少一个操作请求创建相应的第一事务;
执行模块,用于通过主线程执行所述第一事务,并在所述主线程对所述第一事务执行结束的情况下,确定所述第一事务对应的事务信息,其中,所述事务信息用于指示所述第一事务的执行全过程;
记录模块,用于通过后台线程将所述事务信息记录至预设日志文件,其中,所述后台线程和所述主线程为不同的线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211559202.0A CN116225627A (zh) | 2022-12-06 | 2022-12-06 | 事务记录方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211559202.0A CN116225627A (zh) | 2022-12-06 | 2022-12-06 | 事务记录方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116225627A true CN116225627A (zh) | 2023-06-06 |
Family
ID=86573827
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211559202.0A Pending CN116225627A (zh) | 2022-12-06 | 2022-12-06 | 事务记录方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116225627A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116701544A (zh) * | 2023-08-07 | 2023-09-05 | 金篆信科有限责任公司 | 分布式数据库日志处理方法和装置、电子设备和存储介质 |
-
2022
- 2022-12-06 CN CN202211559202.0A patent/CN116225627A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116701544A (zh) * | 2023-08-07 | 2023-09-05 | 金篆信科有限责任公司 | 分布式数据库日志处理方法和装置、电子设备和存储介质 |
CN116701544B (zh) * | 2023-08-07 | 2023-11-24 | 金篆信科有限责任公司 | 分布式数据库日志处理方法和装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11429641B2 (en) | Copying data changes to a target database | |
US11157370B2 (en) | Consistent backup of a distributed database system | |
US9183236B2 (en) | Low level object version tracking using non-volatile memory write generations | |
CN105393243B (zh) | 事务定序 | |
US6567928B1 (en) | Method and apparatus for efficiently recovering from a failure in a database that includes unlogged objects | |
US10949415B2 (en) | Logging system using persistent memory | |
US6651073B1 (en) | Method and apparatus for insuring database data integrity without data recovery logging | |
CA2422176C (en) | Method and apparatus for interrupting updates to a database to provide read-only access | |
US7640276B2 (en) | Backup system, program and backup method | |
US8260816B1 (en) | Providing limited access to a file system on shared storage | |
US9471622B2 (en) | SCM-conscious transactional key-value store | |
EP2590078B1 (en) | Shadow paging based log segment directory | |
US7631159B1 (en) | Faster recovery mechanism of validated continuous data protection (CDP) time image | |
US20050125458A1 (en) | Chronological data record access | |
US7225206B2 (en) | System and method for reorganizing stored data | |
CN110750507A (zh) | 面向dfs的全局命名空间下的客户端持久缓存方法及系统 | |
CN110597663A (zh) | 一种事务处理方法及装置 | |
CN116225627A (zh) | 事务记录方法和系统 | |
CN113220490A (zh) | 异步写回持久化内存的事务持久化方法及系统 | |
JP7423534B2 (ja) | 共有ジャーナルを含むキーバリューストア間のコンシステンシー | |
WO2023111910A1 (en) | Rolling back database transaction | |
US10685014B1 (en) | Method of sharing read-only data pages among transactions in a database management system | |
CN111078643B (zh) | 一种批量删除文件的方法、装置及电子设备 | |
CN114816224A (zh) | 数据管理方法和数据管理装置 | |
CN115576494B (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 |