CN117076146B - 数据处理方法、装置、计算机设备和存储介质 - Google Patents
数据处理方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN117076146B CN117076146B CN202311333507.4A CN202311333507A CN117076146B CN 117076146 B CN117076146 B CN 117076146B CN 202311333507 A CN202311333507 A CN 202311333507A CN 117076146 B CN117076146 B CN 117076146B
- Authority
- CN
- China
- Prior art keywords
- transaction
- target
- processed
- storage position
- data operation
- 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
- 238000003860 storage Methods 0.000 title claims abstract description 445
- 238000003672 processing method Methods 0.000 title abstract description 27
- 238000012545 processing Methods 0.000 claims abstract description 486
- 238000000034 method Methods 0.000 claims abstract description 102
- 238000013475 authorization Methods 0.000 claims abstract description 78
- 230000008569 process Effects 0.000 claims abstract description 60
- 238000004590 computer program Methods 0.000 claims abstract description 23
- 230000001360 synchronised effect Effects 0.000 claims description 24
- 238000011084 recovery Methods 0.000 claims description 18
- 238000005096 rolling process Methods 0.000 claims description 12
- 238000012986 modification Methods 0.000 abstract description 2
- 230000004048 modification Effects 0.000 abstract description 2
- 238000005516 engineering process Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 206010000210 abortion Diseases 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000001680 brushing effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据处理方法、装置、计算机设备、存储介质和计算机程序产品。可应用于数据库,具体可应用于对数据的备份、查询、修改等过程中,该方法包括:将目标待处理事务的处理线程作为目标线程,通过目标线程将目标存储位置锁定,在针对目标存储位置的数据操作完成后,依次授权目标待处理事务之后的下一个待处理事务的处理线程,进行对应待处理事务中针对目标存储位置的数据操作;在目标线程接收到目标待处理事务包含的提交操作后,在当前被授权的处理线程完成对应的数据操作的情况下,停止授权过程并通过目标线程将目标存储位置释放,将当前被授权的处理线程对应的待处理事务的下一个待处理事务作为目标待处理事务。提升了事务处理效率。
Description
技术领域
本申请涉及数据库技术领域,特别是涉及一种数据处理方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
关系型数据库管理系统MySQL是目前应用最为广泛的一种数据库系统,数据库引擎InnoDB为关系型数据库管理系统MySQL的默认存储引擎,数据库引擎InnoDB的特色在于支持事务。
传统技术中,数据库在接收到多个包含热点行操作的事务后,采用加解锁机制来对热点行进行数据操作,然而,这种方式事务处理效率较低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提升事务处理效率的数据处理方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种数据处理方法。该方法包括:
将目标待处理事务的处理线程作为目标线程,通过目标线程将目标待处理事务中目标数据所处的目标存储位置锁定,并对目标数据进行目标待处理事务中针对目标存储位置的数据操作;在针对目标存储位置的数据操作完成后,依次授权目标待处理事务之后的下一个待处理事务的处理线程,进行对应待处理事务中针对目标存储位置的数据操作;
在目标线程接收到目标待处理事务包含的提交操作后,确定当前被授权的处理线程是否完成对应待处理事务中针对目标存储位置的数据操作,在当前被授权的处理线程完成对应的数据操作的情况下,停止授权过程并通过目标线程将目标存储位置释放,将当前被授权的处理线程对应的待处理事务的下一个待处理事务作为目标待处理事务,并返回将目标待处理事务的处理线程作为目标线程的步骤,直至各待处理事务均完成对应待处理事务中针对目标存储位置的数据操作。
第二方面,本申请还提供了一种数据处理装置。该装置包括:
授权模块,用于将目标待处理事务的处理线程作为目标线程,通过目标线程将目标待处理事务中目标数据所处的目标存储位置锁定,并对目标数据进行目标待处理事务中针对目标存储位置的数据操作;在针对目标存储位置的数据操作完成后,依次授权目标待处理事务之后的下一个待处理事务的处理线程,进行对应待处理事务中针对目标存储位置的数据操作;
确定模块,用于在目标线程接收到目标待处理事务包含的提交操作后,确定当前被授权的处理线程是否完成对应待处理事务中针对目标存储位置的数据操作,在当前被授权的处理线程完成对应的数据操作的情况下,停止授权过程并通过目标线程将目标存储位置释放,将当前被授权的处理线程对应的待处理事务的下一个待处理事务作为目标待处理事务,并返回将目标待处理事务的处理线程作为目标线程的步骤,直至各待处理事务均完成对应待处理事务中针对目标存储位置的数据操作。
第三方面,本申请还提供了一种计算机设备。计算机设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
将目标待处理事务的处理线程作为目标线程,通过目标线程将目标待处理事务中目标数据所处的目标存储位置锁定,并对目标数据进行目标待处理事务中针对目标存储位置的数据操作;在针对目标存储位置的数据操作完成后,依次授权目标待处理事务之后的下一个待处理事务的处理线程,进行对应待处理事务中针对目标存储位置的数据操作;
在目标线程接收到目标待处理事务包含的提交操作后,确定当前被授权的处理线程是否完成对应待处理事务中针对目标存储位置的数据操作,在当前被授权的处理线程完成对应的数据操作的情况下,停止授权过程并通过目标线程将目标存储位置释放,将当前被授权的处理线程对应的待处理事务的下一个待处理事务作为目标待处理事务,并返回将目标待处理事务的处理线程作为目标线程的步骤,直至各待处理事务均完成对应待处理事务中针对目标存储位置的数据操作。
第四方面,本申请还提供了一种计算机可读存储介质。计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
将目标待处理事务的处理线程作为目标线程,通过目标线程将目标待处理事务中目标数据所处的目标存储位置锁定,并对目标数据进行目标待处理事务中针对目标存储位置的数据操作;在针对目标存储位置的数据操作完成后,依次授权目标待处理事务之后的下一个待处理事务的处理线程,进行对应待处理事务中针对目标存储位置的数据操作;
在目标线程接收到目标待处理事务包含的提交操作后,确定当前被授权的处理线程是否完成对应待处理事务中针对目标存储位置的数据操作,在当前被授权的处理线程完成对应的数据操作的情况下,停止授权过程并通过目标线程将目标存储位置释放,将当前被授权的处理线程对应的待处理事务的下一个待处理事务作为目标待处理事务,并返回将目标待处理事务的处理线程作为目标线程的步骤,直至各待处理事务均完成对应待处理事务中针对目标存储位置的数据操作。
第五方面,本申请还提供了一种计算机程序产品。计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
将目标待处理事务的处理线程作为目标线程,通过目标线程将目标待处理事务中目标数据所处的目标存储位置锁定,并对目标数据进行目标待处理事务中针对目标存储位置的数据操作;在针对目标存储位置的数据操作完成后,依次授权目标待处理事务之后的下一个待处理事务的处理线程,进行对应待处理事务中针对目标存储位置的数据操作;
在目标线程接收到目标待处理事务包含的提交操作后,确定当前被授权的处理线程是否完成对应待处理事务中针对目标存储位置的数据操作,在当前被授权的处理线程完成对应的数据操作的情况下,停止授权过程并通过目标线程将目标存储位置释放,将当前被授权的处理线程对应的待处理事务的下一个待处理事务作为目标待处理事务,并返回将目标待处理事务的处理线程作为目标线程的步骤,直至各待处理事务均完成对应待处理事务中针对目标存储位置的数据操作。
上述数据处理方法、装置、计算机设备、存储介质和计算机程序产品,将目标待处理事务的处理线程作为目标线程,通过目标线程将目标待处理事务中目标数据所处的目标存储位置锁定,并对目标数据进行目标待处理事务中针对目标存储位置的数据操作;在针对目标存储位置的数据操作完成后,依次授权目标待处理事务之后的下一个待处理事务的处理线程,进行对应待处理事务中针对目标存储位置的数据操作;在目标线程接收到目标待处理事务包含的提交操作后,确定当前被授权的处理线程是否完成对应待处理事务中针对目标存储位置的数据操作,在当前被授权的处理线程完成对应的数据操作的情况下,停止授权过程并通过目标线程将目标存储位置释放,将当前被授权的处理线程对应的待处理事务的下一个待处理事务作为目标待处理事务,并返回将目标待处理事务的处理线程作为目标线程的步骤,直至各待处理事务均完成对应待处理事务中针对目标存储位置的数据操作。被授权的处理线程无需等待前一个待处理事务被提交,便可开始进行针对目标存储位置的数据操作,提升了包含针对目标存储位置的数据操作的事务的处理效率。
附图说明
图1为一个实施例中数据处理方法的系统框架图;
图2为一个实施例中数据处理方法的流程示意图;
图3为一个实施例中数据处理方法的原理示意图;
图4为一个实施例中目标事务的示意图;
图5为另一个实施例中数据处理方法的流程示意图;
图6为又一个实施例中数据处理方法的流程示意图;
图7为一个实施例中提交处理的流程示意图;
图8为一个实施例中数据操作顺序、提交顺序以及回滚顺序的示意图;
图9为一个实施例中数据处理装置的结构框图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的数据处理方法,可以应用于如图1所示的系统框架中。图1所示系统框架包括终端102和数据库104,终端102通过网络与数据库104进行通信。图1仅示出一个终端102,可以理解的,终端102的数量可以为多个,图1中终端102的数量不构成对本申请实施例的限制。另外,图1示出的是终端102直接与数据库104交互,可以理解的,终端102还可通过服务器的中转来与数据库104交互,本申请实施例对此不作限定。终端102可向数据库104发送数据库事务,数据库事务包括数据库操作序列,数据库操作序列由开始操作、至少一个数据操作以及提交操作组成;数据库104可通过本申请实施例提供的数据处理方法,对接收到的数据库事务进行处理,具体的,数据库104可将目标待处理事务的处理线程作为目标线程,通过目标线程将目标待处理事务中目标数据所处的目标存储位置锁定,并对目标数据进行目标待处理事务中针对目标存储位置的数据操作;在针对目标存储位置的数据操作完成后,依次授权目标待处理事务之后的下一个待处理事务的处理线程,进行对应待处理事务中针对目标存储位置的数据操作;在目标线程接收到目标待处理事务包含的提交操作后,确定当前被授权的处理线程是否完成对应针对目标存储位置的数据操作,在当前被授权的处理线程完成对应的数据操作的情况下,停止授权过程并通过目标线程将目标存储位置释放,将当前被授权的处理线程对应的待处理事务的下一个待处理事务作为目标待处理事务,并返回将目标待处理事务的处理线程作为目标线程的步骤,直至各待处理事务均完成对应待处理事务中针对目标存储位置的数据操作。可大大提升包含针对目标存储位置的数据操作的数据库事务的处理效率,提升可数据库104的处理性能。
其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。数据库104可以为关系型数据库管理系统,由于MySQL是一种关系型数据库管理系统,因此数据库104可以为MySQL。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
本申请实施例提供的数据处理方法,可应用于云技术(Cloud technology),云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
本申请实施例中的数据库(Database),简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。数据库管理系统(英语:Database Management System,简称DBMS)是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来作分类,例如关系式、XML(ExtensibleMarkupLanguage,即可扩展标记语言);或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如SQL(结构化查询语言(StructuredQuery Language)、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。
在一些实施例中,如图2所示,提供了一种数据处理方法,以该方法应用于图1中的数据库为例进行说明,包括以下步骤:
步骤202,将目标待处理事务的处理线程作为目标线程,通过目标线程将目标待处理事务中目标数据所处的目标存储位置锁定,并对目标数据进行目标待处理事务中针对目标存储位置的数据操作;在针对目标存储位置的数据操作完成后,依次授权目标待处理事务之后的下一个待处理事务的处理线程,进行对应待处理事务中针对目标存储位置的数据操作。
其中,目标待处理事务为数据库接收到的首个包含针对目标数据所处的目标存储位置的数据操作的数据库事务。
其中,终端向数据库发送数据库事务之前,需要先向数据库发送连接建立请求,数据库接收到连接建立请求后,针对该连接建立请求创建一个处理线程,通过该处理线程来接收和处理终端后续发送的数据库事务。因此,数据库接收到的每个数据库事务都对应一个处理线程。数据库可将目标待处理事务的处理线程作为目标线程。
其中,目标数据可以为数据库中更新频率满足预设条件的数据,也可以为数据库中对象结合数据重要性预先指定的数据。为方便说明,将数据库中目标数据所处存储位置称为目标存储位置。
其中,数据库可通过目标线程将目标存储位置锁定,这样其他线程便无法对目标存储位置处的目标数据进行数据操作,只有目标线程可以对目标存储位置处的目标数据进行数据操作。
其中,数据库通过目标线程将目标存储位置锁定后,可通过目标线程对目标存储位置处的目标数据,进行目标待处理事务中针对目标存储位置的数据操作。
示例性的,目标待处理事务中针对目标存储位置的数据操作可以为:将目标存储位置处的目标数据删除、对目标存储位置处的目标数据进行更新、查询目标存储位置处的目标数据等,本申请实施例对此不做限定。
其中,数据库通过目标线程完成目标待处理事务中针对目标存储位置的数据操作后,通过目标线程依次授权目标待处理事务之后的下一个待处理事务的处理线程,进行对应待处理事务中针对目标存储位置的数据操作。
在具体实现中,数据库可通过目标线程授权目标待处理事务的下一个待处理事务的处理线程,进行对应待处理事务中针对目标存储位置的数据操作,目标待处理事务的下一个待处理事务为数据库接收到的第二个包含针对目标存储位置的数据操作的数据库事务,为方便说明,将目标待处理事务的下一个待处理事务称为数据库事务2;数据库事务2的处理线程完成数据库事务2中针对目标存储位置的数据操作后,授权数据库事务2的下一个待处理事务的处理线程,进行对应待处理事务中针对目标存储位置的数据操作,数据库事务2的下一个待处理事务为数据库接收到的第三个包含针对目标存储位置的数据操作的数据库事务,为方便说明,将目标待处理事务的下一个待处理事务称为数据库事务3,以此类推,直至授权过程被停止。
步骤204,在目标线程接收到目标待处理事务包含的提交操作后,确定当前被授权的处理线程是否完成对应待处理事务中针对目标存储位置的数据操作,在当前被授权的处理线程完成对应的数据操作的情况下,停止授权过程并通过目标线程将目标存储位置释放,将当前被授权的处理线程对应的待处理事务的下一个待处理事务作为目标待处理事务,并返回将目标待处理事务的处理线程作为目标线程的步骤,直至各待处理事务均完成对应待处理事务中针对目标存储位置的数据操作。
其中,本申请实施例中对目标存储位置的锁定和释放可通过加解锁完成,对目标存储位置加锁,便可将目标存储位置锁定,对目标存储位置解锁,便可将目标存储位置释放。
其中,每个数据库事务都对应一个处理线程来完成该数据库事务的接收和处理,目标待处理事务的处理线程为目标线程。每个数据库事务都包含开始操作、至少一个数据操作以及提交操作,目标线程接收到目标待处理事务包含的提交操作后,可确定当前被授权的处理线程是否完成对应待处理事务中针对目标存储位置的数据操作。
在确定当前被授权的处理线程已完成对应待处理事务中针对目标存储位置的数据操作的情况下,数据库停止授权过程,通过目标线程将目标存储位置释放,将当前被授权的处理线程对应的待处理事务的下一个待处理事务作为目标待处理事务,返回至将目标待处理事务的处理线程作为目标线程的步骤。直至各待处理事务均完成对应待处理事务中针对目标存储位置的数据操作。
在确定当前被授权的处理线程未完成对应待处理事务中针对目标存储位置的数据操作的情况下,数据库需等待当前被授权的处理线程完成对应待处理事务中针对目标存储位置的数据操作,然后再停止授权过程,并通过目标线程将目标存储位置释放,将当前被授权的处理线程对应的待处理事务的下一个待处理事务作为目标待处理事务,返回至将目标待处理事务的处理线程作为目标线程的步骤。直至各待处理事务均完成对应待处理事务中针对目标存储位置的数据操作。
示例性的,参见图3所示,可将数据库接收到的首个包含针对目标存储位置的数据操作的数据库事务,作为目标待处理事务,图3中用leader表示,leader的处理线程将目标存储位置锁定,对目标存储位置处的目标数据进行leader中针对目标存储位置的数据操作,在完成leader中针对目标存储位置的数据操作后,授权下一个待处理事务(图3中用follower表示)的处理线程,进行follower中针对目标存储位置的数据操作,follower的处理线程完成follower中针对目标存储位置的数据操作后,授权再下一个follower的处理线程进行再下一个follower中针对目标存储位置的数据操作,以此类推。另外,leader的处理线程接收到leader包含的提交操作后,确定当前被授权的处理线程是否完成对应follower中针对目标存储位置的数据操作,若完成,停止授权过程,leader的处理线程将目标存储位置释放,并将当前被授权的处理线程对应的follower的下一个事务作为leader,并重复上述过程。
上述实施例中,将目标待处理事务的处理线程作为目标线程,通过目标线程将目标待处理事务中目标数据所处的目标存储位置锁定,并对目标数据进行目标待处理事务中针对目标存储位置的数据操作;在针对目标存储位置的数据操作完成后,依次授权目标待处理事务之后的下一个待处理事务的处理线程,进行对应待处理事务中针对目标存储位置的数据操作;在目标线程接收到目标待处理事务包含的提交操作后,确定当前被授权的处理线程是否完成对应待处理事务中针对目标存储位置的数据操作,在当前被授权的处理线程完成对应的数据操作的情况下,停止授权过程并通过目标线程将目标存储位置释放,将当前被授权的处理线程对应的待处理事务的下一个待处理事务作为目标待处理事务,并返回将目标待处理事务的处理线程作为目标线程的步骤,直至各待处理事务均完成对应待处理事务中针对目标存储位置的数据操作。被授权的处理线程无需等待前一个待处理事务被提交,便可开始进行针对目标存储位置的数据操作,提升了包含针对目标存储位置的数据操作的事务的处理效率。
在一些实施例中,本申请实施例提供的数据处理方法,还包括:根据数据库中各个存储位置各自对应的数据更新频率,确定目标数据;接收到客户端发送的连接建立请求后,针对连接建立请求创建处理线程,通过创建的处理线程接收客户端发送的目标事务;在目标事务包含针对目标数据所处的目标存储位置的数据操作的情况下,将目标事务放入目标存储位置对应的执行等候队列;将执行等候队列中位于队首的事务作为目标待处理事务。
其中,在数据库接收到数据库事务后,在该数据库事务包含针对某个存储地址的数据操作的情况下,会尝试对该存储位置加锁,若在尝试加锁时发现有n个数据库事务在等待该存储位置的锁,可确定该存储位置的事务并发数为n+2,事务并发数中的2中一个指代当前接收到的数据库事务,另一个指代当前持有锁的数据库事务。在n+2大于等于预设阈值的情况下,则可将该存储位置作为热点行,将该存储位置处的数据作为目标数据。本申请实施例中,目标数据所处的热点行,也称为目标存储位置。
其中,终端上安装有客户端,客户端可以为与数据库中某个存储位置处的数据有关联的应用程序。可由客户端向数据库发送数据库事务。客户端向数据库发送数据库事务之前,需要先向数据库发送连接建立请求,数据库接收到连接建立请求后,针对该连接建立请求创建一个处理线程,通过该处理线程接收客户端后续发送的数据库事务,为方便说明,可将该处理线程接收到的数据库事务称为目标事务。
其中,处理线程可根据目标事务包含的至少一个数据操作进行判断,在至少一个数据操作包含针对目标数据所处的目标存储位置的数据操作的情况下,将目标事务放入目标存储位置对应的执行等候队列;将执行等候队列中位于队首的事务作为目标待处理事务。
示例性的,数据库接收到某个客户端发送的连接建立请求后,针对连接建立请求创建处理线程1,处理线程1接收到该客户端发送的数据库事务1后,判断数据库事务1是否包含针对热点行的数据操作,在包含的情况下,将数据库事务1放入热点行对应的执行等候队列;数据库每次接收到连接建立请求后,均做上述处理,热点行对应的执行等候队列不断被更新,可将热点行对应的执行等候队列中位于队首的事务作为目标待处理事务,即,将接收到的首个包含针对热点行的数据操作的数据库事务作为目标待处理事务。
上述实施例中,考虑到数据库中更新频率比较大的数据事务并发的可能性更大,因此根据数据库中各个存储位置各自对应的数据更新频率,来确定目标数据;接收到客户端发送的连接建立请求后,针对连接建立请求创建处理线程,通过创建的处理线程接收客户端发送的目标事务;在目标事务包含针对目标数据所处的目标存储位置的数据操作的情况下,将目标事务放入目标存储位置对应的执行等候队列;将执行等候队列中位于队首的事务作为目标待处理事务。可将目标待处理事务的处理线程作为目标线程,来进行本申请实施例中的授权过程,提升了包含针对热点行的数据操作的事务的处理效率。
在一些实施例中,目标事务包括:开始操作、至少一个数据操作以及提交操作;通过创建的处理线程接收客户端发送的目标事务,包括:通过创建的处理线程逐个接收开始操作、至少一个数据操作以及提交操作,并对接收到的操作进行处理;在目标事务包含针对目标数据所处的目标存储位置的数据操作的情况下,将目标事务放入目标存储位置对应的执行等候队列;在通过创建的处理线程对当前接收到的数据操作进行处理时,确定当前接收到的数据操作是否为针对目标存储位置的数据操作;在当前接收到的数据操作不是针对目标存储位置的数据操作的情况下,通过创建的处理线程对当前接收到的数据操作进行处理;在当前接收到的数据操作为针对目标存储位置的数据操作的情况下,通过创建的处理线程将目标事务放入目标存储位置对应的执行等候队列。
其中,客户端发送的每个目标事务都包含开始操作、至少一个数据操作以及提交操作,参见图4所示,图4中以目标事务包含2个数据操作示例,数据库可通过创建的处理线程来接收上述开始操作、至少一个数据操作以及提交操作。
在具体实现中,假设目标事务包含三个数据操作,创建的处理线程接收到开始操作后,执行开始操作对应的处理,处理完成后,向客户端返回处理完成消息;客户端接收到该消息后,向该处理线程发送目标事务中的第一个数据操作,处理线程接收到该数据操作后,执行该数据操作对应的处理,处理完成后,向客户端返回处理完成消息;客户端接收到该消息后,继续向该处理线程发送目标事务中的第二个数据操作,处理线程接收到该数据操作后,执行该数据操作对应的处理,处理完成后,向客户端返回处理完成消息;客户端接收到该消息后,继续向该处理线程发送目标事务中的第三个数据操作,处理线程接收到该数据操作后,执行该数据操作对应的处理,处理完成后,向客户端返回处理完成消息;客户端接收到该消息后,向该处理线程发送提交操作,处理线程执行提交操作对应的处理。
在上述过程中,处理线程每次接收到数据操作后,判断当前接收到的数据操作是否为针对目标存储位置的数据操作;若是,则将目标事务放入目标存储位置对应的执行等候队列;若否,则对当前接收到的数据操作进行处理,即,执行当前接收到的数据操作对应的处理。为方便说明,放入执行等候队列的目标事务在本申请实施例中又称为待处理事务。
上述实施例中,通过创建的处理线程逐个接收开始操作、至少一个数据操作以及提交操作,并对接收到的操作进行处理;在通过创建的处理线程对当前接收到的数据操作进行处理时,确定当前接收到的数据操作是否为针对目标存储位置的数据操作;在当前接收到的数据操作不是针对目标存储位置的数据操作的情况下,通过创建的处理线程对当前接收到的数据操作进行处理;在当前接收到的数据操作为针对目标存储位置的数据操作的情况下,通过创建的处理线程将目标事务放入目标存储位置对应的执行等候队列;使得只有包含针对目标存储位置的数据操作的目标事务才会使用本申请实施例的方法来处理,其他事务走正常的加解锁流程,提升了事务处理效率。
在一些实施例中,本申请实施例提供的数据处理方法,还包括:创建的处理线程接收到执行等候队列中上一个待处理事务的处理线程发送的授权指令后,进行目标事务中针对目标存储位置的数据操作;在创建的线程完成对应的数据操作后,向执行等候队列中下一个待处理事务的处理线程发送授权指令,并向客户端发送操作完成指令,以指示客户端继续发送排在目标数据操作之后的待处理数据操作,目标数据操作为目标事务中针对目标存储位置的数据操作;通过创建的处理线程对客户端发送的待处理数据操作进行处理。
其中,通过创建的处理线程将目标事务放入目标存储位置对应的执行等候队列后,等待执行等候队列中该目标事务的上一个待处理事务的处理线程发送授权指令,在接收到上一个待处理事务的处理线程发送的授权指令后,进行目标事务中针对目标存储位置的数据操作;在完成对应的数据操作后,向执行等候队列中下一个待处理事务的处理线程发送授权指令,并向客户端发送操作完成指令,即上文中的处理完成消息,客户端接收到该操作完成指令后,继续发送排在目标数据操作之后的待处理数据操作,比如,上文中第二数据操作和第三个数据操作,目标数据操作为目标事务中针对目标存储位置的数据操作,处理线程每次接收到待处理数据操作后,执行待处理数据操作对应的处理。
下面举例说明:
假设客户端1向数据库发送了连接建立请求,数据库接收到该连接建立请求后,针对该连接建立请求创建处理线程1,客户端1后续向处理线程1发送的目标事务1中包括开始操作、针对存储地址A的数据操作、针对目标存储位置的数据操作、针对存储地址B的数据操作以及提交操作,处理线程1接收到开始操作后,执行开始操作对应的处理,处理完成后,向客户端1返回处理完成消息;客户端1接收到该消息后,向处理线程1发送针对存储地址A的数据操作,处理线程1经过判断,该数据操作并不是针对目标存储位置的,则执行该数据操作对应的处理,处理完成后,向客户端1返回处理完成消息;客户端1接收到该消息后,继续向处理线程1发送针对目标存储位置的数据操作,处理线程1经过判断,该数据操作是针对目标存储位置的,则将目标事务1放入目标存储位置对应的执行等候队列。假设执行等候队列中排在目标事务1的前一个目标事务为目标事务0,目标事务0的处理线程0在完成目标事务0中针对目标存储位置的数据操作后,处理线程0会向处理线程1发送授权指令,处理线程1接收到授权指令后,进行目标事务1中针对目标存储位置的数据操作,在完成该数据操作后,向执行等候队列中排在目标事务1之后的目标事务2的处理线程2发送授权指令,并向客户端1返回处理完成消息;客户端1接收到该消息后,继续向处理线程1发送针对存储地址B的数据操作以及提交操作,处理线程1经过判断,该数据操作并不是针对目标存储位置的,则执行该数据操作对应的处理,处理完成后,向客户端1返回处理完成消息;客户端1接收到该消息后,继续向处理线程1发送提交操作,处理线程1执行提交操作对应的处理。
上述实施例中,多个包含针对目标存储位置的数据操作的目标事务,只有针对目标存储位置的数据操作需要等待前一个目标事务处理完,其他数据操作均可并行,提升了事务处理效率。
在一些实施例中,依次授权目标待处理事务之后的下一个待处理事务的处理线程,进行对应待处理事务中针对目标存储位置的数据操作,包括:通过目标线程授权目标待处理事务之后的下一个第一待处理事务的第一处理线程,进行第一待处理事务中针对目标存储位置的数据操作;在第一处理线程针对目标存储位置的数据操作完成后,通过第一处理线程授权第一待处理事务之后的下一个第二待处理事务的第二处理线程,进行第二待处理事务中针对目标存储位置的数据操作,在第二处理线程针对目标存储位置的数据操作完成后,继续执行授权过程,直至授权过程被停止。
其中,可针对目标数据所处的目标存储位置创建一个执行等候队列,通过上述实施例提供的方式向执行等候队列放入目标事务。可以将执行等候队列中位于队首的事务作为目标待处理事务,将目标待处理事务的处理线程作为目标线程。
在具体实现中,在目标线程完成目标待处理事务中针对目标存储位置的数据操作后,通过目标线程授权执行等候队列中排在目标待处理事务之后的下一个待处理事务(第一待处理事务)的处理线程(第一处理线程),进行第一待处理事务中针对目标存储位置的数据操作;在第一处理线程完成目标存储位置的数据操作完成后,通过第一处理线程授权执行等候队列中排在第一待处理事务之后的下一个待处理事务(第二待处理事务)的处理线程(第二处理线程),进行第二待处理事务中针对目标存储位置的数据操作,在第二处理线程针对目标存储位置的数据操作完成后,按照执行等候队列中待处理事务的排列顺序,继续执行授权过程,直至授权过程被停止。
示例性的,参见表1所示,假设待处理事务有3个,分别为事务T1、事务T2和事务T3,事务T1、事务T2和事务T3各自包含的操作如表1所示:
表1
事务T1 | 事务T2 | 事务T3 |
BEGIN; | BEGIN; | BEGIN; |
UPDATE t1 SET val = val + 1 where ID =1; (热点行更新) | UPDATE t1 SET val = val + 1 where ID =1; (热点行更新) | UPDATE t1 SET val = val + 1 where ID =1; (热点行更新) |
UPDATE t1 SET val = val + 1 where ID =10; | UPDATE t1 SET val = val + 1 where ID =100; | UPDATE t1 SET val = val + 1 where ID =1000; |
UPDATE t1 SET val = val + 1 where ID =20; | UPDATE t1 SET val = val + 1 where ID =200; | UPDATE t1 SET val = val + 1 where ID =2000; |
COMMIT; | COMMIT; | COMMIT; |
表1中,BEGIN代表开始操作,COMMIT代表提交操作,热点行为本申请实施例中的目标存储位置,目标存储位置的ID为1,事务T1中开始操作之后的第一个数据操作为将热点行处的数据加1,第二个数据操作为将ID = 10的存储位置处的数据加1,第三个数据操作为将ID = 20的存储位置处的数据加1。事务T1中开始操作之后的第一个数据操作为将热点行处的数据加1,第二个数据操作为将ID = 100的存储位置处的数据加1,第三个数据操作为将ID = 200的存储位置处的数据加1。事务T1中开始操作之后的第一个数据操作为将热点行处的数据加1,第二个数据操作为将ID = 1000的存储位置处的数据加1,第三个数据操作为将ID = 2000的存储位置处的数据加1。
在一些实施例中,由于事务T1、事务T2和事务T3都包含针对热点行的数据操作,参见图5所示,事务T1的处理线程在处理事务T1中的第一个数据操作时,会将热点行锁定,在接收到提交操作,并针对该提交操作做提交处理时才会释放热点行,这时事务T2的处理线程才能将热点行锁定,并处理事务T2中的第一个数据操作。同样的,事务T3的处理线程也需要等待事务T2的处理线程释放热点行,这种方式事务处理效率较低。
在本申请实施例中,参见图6所示,事务T1的处理线程在处理完T1中的第一个数据操作后,可直接向事务T2的处理线程发送授权指令,事务T2的处理线程接收到授权指令,便可执行事务T2中的第一个数据操作,同样的,事务T2的处理线程处理完T2中的第一个数据操作后,可直接向事务T3的处理线程发送授权指令,事务T3的处理线程接收到授权指令,便可执行事务T3中的第一个数据操作,也就是说,事务T2的处理线程无需等待事务T1的处理线程释放热点行,事务T3的处理线程也无需等待事务T2的处理线程释放热点行,和图5所示处理方式相比,极大地提升了包含针对热点行的数据操作的事务的处理效率。
上述实施例中,被授权的处理线程无需等待前一个待处理事务被提交,便可开始进行针对目标存储位置的数据操作,提升了包含针对目标存储位置的数据操作的事务的处理效率。
在一些实施例中,目标待处理事务之后的下一个待处理事务的处理线程,进行对应待处理事务中针对目标存储位置的数据操作,包括:目标待处理事务之后的下一个待处理事务的处理线程读取目标存储位置处的当前数据;基于当前数据进行对应待处理事务中针对目标存储位置的数据操作。
其中,执行等候队列中某个待处理事务的处理线程接收到授权指令后,先读取目标存储位置处的当前数据,基于当前数据进行该待处理事务中针对目标存储位置的数据操作。
示例性的,某个待处理事务中针对目标存储位置的数据操作为将目标存储位置处的数据加一,该待处理事务的处理线程接收到授权指令后,先读取目标存储位置处的当前数据,然后将当前数据加一,便完成了待处理事务中针对目标存储位置的数据操作。
上述实施例中,某个待处理事务的处理线程接收到授权指令后,先读取目标存储位置处的当前数据;基于当前数据进行该待处理事务中针对目标存储位置的数据操作。可以保证该待处理事务的处理线程是基于前一个待处理事务的处理线程的数据操作结果,来进行该待处理事务中针对目标存储位置的数据操作的,提升了数据操作结果的准确性。
在一些实施例中,本申请实施例提供的数据处理方法,还包括:在各处理线程接收到对应待处理事务包含的提交操作后,通过各处理线程触发提交请求;根据各处理线程针对目标存储位置进行数据操作的顺序,确定各处理线程各自对应的待处理事务的顺序标识;基于顺序标识,确定触发提交请求的各处理线程各自对应的待处理事务的提交顺序;基于提交顺序,对触发提交请求的各处理线程各自对应的待处理事务进行提交处理。
如前述实施例描述,每个待处理事务都包含开始操作、至少一个数据操作以及提交操作,处理线程接收到对应待处理事务包含的提交操作后,可通过本申请实施例的方式执行提交操作对应的处理。
在具体实现中,处理线程接收到对应待处理事务包含的提交操作后,可向数据库的服务层触发提交请求,服务层可基于预先获取的各待处理事务的顺序标识,确定触发提交请求的各处理线程各自对应的待处理事务的提交顺序,基于提交顺序,对触发提交请求的各处理线程各自对应的待处理事务进行提交处理。
如前述实施例所描述,执行等候队列中各待处理事务的处理线程是按照各待处理事务在执行等候队列中的排列顺序,来对目标存储位置进行数据操作的。因此,可根据各处理线程针对目标存储位置进行数据操作的顺序,确定各处理线程各自对应的待处理事务的顺序标识。
示例性的,假设待处理事务1的处理线程最先对目标存储位置进行数据操作,可确定待处理事务1的顺序标识为1,待处理事务2的处理线程第二个对目标存储位置进行数据操作,可确定待处理事务2的顺序标识为2,以此类推,便可得到各待处理事务的顺序标识。需要说明的是:该示例中,顺序标识从1开始递增仅仅是一种示例,还可从某一指定数值开始递增,或者按照指定间隔递增,本申请实施例对此不作限定。
其中,服务器可在各待处理事务的顺序标识中,查找触发提交请求的各处理线程各自对应的待处理事务的顺序标识,基于触发提交请求的各处理线程各自对应的待处理事务的顺序标识,确定触发提交请求的各处理线程各自对应的待处理事务的提交顺序。
示例性的,触发提交请求的各处理线程各自对应的待处理事务包括:待处理事务1、待处理事务2和待处理事务3,经查找,待处理事务2的顺序标识为1,待处理事务1的顺序标识为2,待处理事务3的顺序标识为3,则可确定待处理事务1、待处理事务2和待处理事务3的提交顺序为:待处理事务2→待处理事务1→待处理事务3。
其中,服务器在确定触发提交请求的各处理线程各自对应的待处理事务的提交顺序;基于提交顺序,对触发提交请求的各处理线程各自对应的待处理事务进行提交处理。
上述实施例中,在各处理线程接收到对应待处理事务包含的提交操作后,基于预先获取的各待处理事务的顺序标识,确定触发提交请求的各处理线程各自对应的待处理事务的提交顺序,基于提交顺序,对触发提交请求的各处理线程各自对应的待处理事务进行提交处理;保证了按照对目标存储位置进行数据操作的事务顺序,来进行提交处理,保证了事务处理准确性。
在一些实施例中,提交处理包括:准备阶段和提交阶段,提交阶段包括依次执行的刷新步骤、同步步骤和提交步骤;基于提交顺序,参见图7所示,对触发提交请求的各处理线程各自对应的待处理事务进行提交处理,包括:
步骤702,分别对触发提交请求的各处理线程各自对应的待处理事务,进行准备阶段的相关处理,得到准备完成的待处理事务。
步骤704,按照提交顺序,将准备完成的待处理事务存放至刷新步骤对应的刷新等候队列中;对刷新等候队列中的待处理事务进行刷新处理,得到刷新完成的待处理事务。
其中,提交处理包括:准备Prepare阶段和提交Commit阶段,Commit阶段包括依次执行的日志刷盘flush步骤、日志同步sync步骤和提交Commit步骤,每个步骤都对应一个队列,为方便说明,本申请实施例中,将Flush步骤对应的队列称为刷新等候队列,将Sync步骤对应的队列称为同步等候队列,将Commit步骤对应的队列称为提交等候队列。
在具体实现中,服务层可分别对触发提交请求的各处理线程各自对应的待处理事务,进行准备阶段的相关处理,得到准备完成的待处理事务。准备阶段的相关处理可以包括再次与触发提交请求的处理线程进行交互,以确认是否确定要提交。服务层得到准备完成的待处理事务后,按照触发提交请求的各处理线程各自对应的待处理事务的提交顺序,将准备完成的待处理事务存放至刷新步骤对应的刷新等候队列中;对刷新等候队列中的待处理事务进行刷新处理,得到刷新完成的待处理事务。
示例性的,触发提交请求的各处理线程各自对应的待处理事务包括:待处理事务1、待处理事务2和待处理事务3,待处理事务1、待处理事务2和待处理事务3的提交顺序为:待处理事务2→待处理事务1→待处理事务3。服务层可分别对待处理事务1、待处理事务2和待处理事务3进行准备阶段的相关处理,得到准备完成的待处理事务1、待处理事务2和待处理事务3,按照待处理事务2→待处理事务1→待处理事务3顺序,将准备完成的待处理事务1、待处理事务2和待处理事务3存放至刷新步骤对应的刷新等候队列中,按照排列顺序对刷新等候队列中的待处理事务进行刷新处理,得到刷新完成的待处理事务1、待处理事务2和待处理事务3。
步骤706,按照提交顺序,将刷新完成的待处理事务存放至同步步骤对应的同步等候队列中;对同步等候队列中的待处理事务进行同步处理,得到同步完成的待处理事务。
服务层得到刷新完成的待处理事务后,可按照提交顺序,将刷新完成的待处理事务存放至同步步骤对应的同步等候队列中;对同步等候队列中的待处理事务进行同步处理,得到同步完成的待处理事务。
接着上述示例,服务层得到刷新完成的待处理事务1、待处理事务2和待处理事务3后,可按照待处理事务2→待处理事务1→待处理事务3顺序,将刷新完成的待处理事务1、待处理事务2和待处理事务3存放至同步步骤对应的同步等候队列中,按照排列顺序对同步等候队列中的待处理事务进行同步处理,得到同步完成的待处理事务1、待处理事务2和待处理事务3。
步骤708,按照提交顺序,将同步完成的待处理事务存放至提交步骤对应的提交等候队列中;对提交等候队列中的待处理事务进行提交处理。
服务层得到同步完成的待处理事务后,可按照提交顺序,将同步完成的待处理事务存放至提交步骤对应的提交等候队列中;对提交等候队列中的待处理事务进行提交处理。
接着上述示例,服务层得到同步完成的待处理事务1、待处理事务2和待处理事务3后,可按照待处理事务2→待处理事务1→待处理事务3顺序,将同步完成的待处理事务1、待处理事务2和待处理事务3存放至提交步骤对应的提交等候队列中,按照排列顺序对提交等候队列中的待处理事务进行提交处理。
上述实施例中,考虑到提交处理包括:准备阶段和提交阶段,提交阶段包括依次执行的刷新步骤、同步步骤和提交步骤,每个步骤都对应一个队列,将各待处理事务按照对目标存储位置进行数据操作的顺序来放入上述队列中,可以保证提交处理是按照对目标存储位置进行数据操作的事务顺序来进行的,提升了事务处理准确性。
在一些实施例中,本申请实施例提供的数据处理方法,还包括:接收到事务回滚指令后,中止授权过程或者中止对目标存储位置的释放,并提取事务回滚指令中携带的待回滚事务;在数据库中查找被待回滚事务的处理线程进行过数据操作的各待处理存储位置;在各待处理存储位置包括目标存储位置的情况下,根据针对目标存储位置预先获取的待回滚事务列表,对目标存储位置处的数据进行回滚处理;在回滚处理完成后,重启授权过程或者重启对目标存储位置的释放。
其中,事务回滚指令可能是对象通过客户端触发的,也可能是在连接断开、连接超时等各种异常场景下,数据库主动触发的。
其中,数据库的服务层接收到事务回滚指令后,为了避免更多的事务被回滚掉,可先传递一个中止信号给数据存储引擎,数据存储引擎接收到该中止信号后,中止授权过程或者中止对目标存储位置的释放。事务回滚指令中携带的待回滚事务,数据库的服务层可从事务回滚指令中提取待回滚事务,基于数据库中各存储位置各自对应的数据操作日志,在各存储位置中查找被待回滚事务的处理线程进行过数据操作的各待处理存储位置。
其中,待回滚事务列表中的目标事务是按照对目标存储位置进行数据操作的顺序排列的,排在列表头部的目标事务为最先对目标存储位置进行数据操作的,排在列表尾部的目标事务为最后对目标存储位置进行数据操作的。
服务层可根据针对目标存储位置预先获取的待回滚事务列表,按照从列表尾部到列表头部的顺序,对目标存储位置处的数据进行回滚处理,直至待回滚事务被回滚;在回滚处理完成后,传递一个重启信号给数据存储引擎,数据存储引擎接收到该重启信号后,重启授权过程或者重启对目标存储位置的释放。
在具体实现中,假设待回滚事务列表中排在待回滚事务之后的目标事务有目标事务1和目标事务2,服务器层需要先回滚目标事务2,再回滚目标事务1,再回滚待回滚事务,回滚某个事务指的是将目标存储位置处的数据恢复为,该事务中针对目标存储位置的数据操作之前的值。示例性的,目标事务1中针对目标存储位置的数据操作为将目标存储位置处的数据加一,回滚目标事务1指的是将目标存储位置处的数据减一,使得目标存储位置处的数据恢复为没有被进行过目标事务1中的数据操作的状态。
示例性的,参见图8所示,待处理事务包括事务T1、事务T2、事务T3、事务T4和事务T5,事务T1的处理线程将目标存储位置处的目标数据从0更新成了1,事务T2的处理线程将目标存储位置处的目标数据从1更新成了2,事务T3的处理线程将目标存储位置处的目标数据从2更新成了3,事务T4的处理线程将目标存储位置处的目标数据从3更新成了4,事务T5的处理线程将目标存储位置处的目标数据从4更新成了5,也就是说,目标存储位置的数据操作顺序为事务T1→事务T2→事务T3→事务T4→事务T5,那么,在做事务提交处理时,也需要保证是按照这个顺序提交的,但是在回滚场景下,需要按照逆序回滚。
上述实施例中,针对目标存储位置维护有一个待回滚事务列表,这样,在接收到事务回滚指令后,便可依据待回滚事务列表中事务的排列顺序,来对目标存储位置处的数据进行回滚处理,保证的回滚处理的准确性。
在一些实施例中,待回滚事务列表的获取步骤,包括:
创建所述目标存储位置对应的初始事务列表;在第一目标事务的处理线程被授权进行所述第一目标事务中针对所述目标存储位置的数据操作,或者第一目标事务的处理线程将所述目标存储位置锁定的情况下,将所述第一目标事务放入所述初始事务列表;在所述第一目标事务的提交处理完成,或者所述第一目标事务已经被回滚的情况下,将所述第一目标事务从所述初始事务列表删除;将接收到所述事务回滚指令时目标存储位置对应的初始事务列表,作为所述目标存储位置对应待回滚事务列表。
其中,数据库在确定目标数据后,可针对目标数据所处的目标存储位置创建初始事务列表。数据库接收到客户端发送的连接建立请求后,会针对连接建立请求创建处理线程,由该处理线程接收并处理客户端后续发送的目标事务,该处理线程在判断当前接收到的数据操作为针对目标存储位置的数据操作的情况下,将目标事务放入目标存储位置对应的执行等候队列,具体过程参见前述实施例描述,可将执行等候队列中的任一目标事务作为第一目标事务。
如前述实施例所描述,执行等候队列中的目标事务可能会在接收到授权指令的情况下,进行目标事务中针对目标存储位置的数据操作;也可能在目标事务的处理线程称为目标线程的情况下,进行目标事务中针对目标存储位置的数据操作;本申请实施例中在第一目标事务的处理线程被授权进行第一目标事务中针对目标存储位置的数据操作,或者第一目标事务的处理线程将目标存储位置锁定的情况下,将第一目标事务放入初始事务列表,在第一目标事务的提交处理完成,或者第一目标事务已经被回滚的情况下,将第一目标事务从初始事务列表删除,这样初始事务列表中的事务将不停地更新,可将接收到事务回滚指令时的初始事务列表,作为目标存储位置对应待回滚事务列表。
上述实施例中,提供了待回滚事务列表的获取步骤,在数据库接收到事务回滚指令后,可依据该待回滚事务列表中事务的排列顺序,来对目标存储位置处的数据进行回滚处理,保证的回滚处理的准确性。
在一些实施例中,本申请实施例提供的数据处理方法,还包括:在接收到崩溃恢复指令后,查询各待处理事务各自对应的回滚日志中目标字段的值;根据各待处理事务各自对应的回滚日志中目标字段的值,构建目标存储位置对应活跃事务链表,基于活跃事务链表进行目标存储位置的崩溃恢复处理。
其中,目标字段可以为TRX_UNDO_TRX_NO这一字段。
如前述实施例描述,数据库可根据各处理线程针对目标存储位置进行数据操作的顺序,确定各处理线程各自对应的待处理事务的顺序标识,可将该顺序标识作为对应待处理事务的针对目标存储位置的操作顺序标识。在得到各待处理事务的操作顺序标识,针对每个待处理事务,可将该待处理事务的回滚日志中目标字段更新为第一预设值加该待处理事务的操作顺序标识,在数据库完成该待处理事务的提交处理后,将该待处理事务的回滚日志中目标字段更新为第二预设值加该待处理事务的提交序号。
其中,第一预设值可以为1,第二预设值可以为0,但这仅是一种示例,本申请实施例对此不作限定。
其中,数据库在得到活跃事务链表后,按照活跃事务链表中各待处理事务的顺序,按照从链表头部到链表尾部的顺序,依次处理各待处理事务,以实现目标存储位置的崩溃恢复处理。
上述实施例中,在接收到崩溃恢复指令后,可查询各待处理事务各自对应的回滚日志中目标字段的值;根据各待处理事务各自对应的回滚日志中目标字段的值,构建目标存储位置对应活跃事务链表,基于活跃事务链表进行目标存储位置的崩溃恢复处理。使得在发生数据库崩溃的情况下,目标存储位置的数据也能实现恢复。
在一些实施例中,根据各个目标事务各自对应的回滚日志中目标字段的值,构建目标存储位置对应活跃事务链表,包括:针对接收到的每个目标事务,根据当前目标事务对应的回滚日志中目标字段的值,确定当前目标事务是否完成提交处理;在未完成提交处理的情况下,根据当前目标事务对应的回滚日志中目标字段的值,确定当前目标事务针对目标存储位置的操作顺序标识;根据各目标事务各自对应的操作顺序标识,构建目标存储位置对应活跃事务链表。
其中,在数据库运行异常出现崩溃的情况下会触发崩溃恢复指令,这时数据可查询各待处理事务各自对应的回滚日志,针对每个待处理事务,从该待处理事务对应的回滚日志中提取目标字段的值,若目标字段的值是以第一预设值开头,则确定该待处理事务还未完成提交处理,则将该待处理事务放入目标存储位置对应活跃事务链表,若目标字段的值是以第二预设值开头,则确定该待处理事务已完成提交处理,则不会将该待处理事务放入目标存储位置对应活跃事务链表。
在具体实现中,若目标字段的值是以第一预设值开头,可提取目标字段中第一预设值之后的数值,该数值即为待处理事务针对目标存储位置的操作顺序标识,可按照各待处理事务各自对应的操作顺序标识,按照先后顺序将各待处理事务放入活跃事务链表。
上述实施例中,提供了如何构建目标存储位置对应活跃事务链表的方式,具体的,针对每个待处理事务,根据当前待处理事务对应的回滚日志中目标字段的值,确定当前待处理事务是否完成提交处理;在未完成提交处理的情况下,根据当前待处理事务对应的回滚日志中目标字段的值,确定当前待处理事务针对目标存储位置的操作顺序标识;根据各待处理事务各自对应的操作顺序标识,构建目标存储位置对应活跃事务链表。活跃事务链表可用于接收到崩溃恢复指令后,针对目标存储位置进行崩溃恢复处理,使得在发生数据库崩溃的情况下,目标存储位置的数据也能实现恢复。
在一些实施例中,本申请实施例提供的数据处理方法,还包括:在第二目标事务的执行被第三目标事务阻塞的情况下,确定第二目标事务和第三目标事务是否均包含针对目标存储位置的数据操作;在均包含的情况下,向第二目标事务的客户端返回错误码。
其中,目标事务之间可能会发生阻塞的情况,比如:目标事务2的执行需要等待目标事务1释放锁,如果目标事务1和目标事务2均包含针对目标存储位置的数据操作,无论是目标事务1的处理线程先执行针对目标存储位置的数据操作,还是目标事务2的处理线程先执行针对目标存储位置的数据操作,均会造成死锁,即事务阻塞。
其中,在第二目标事务的执行被第三目标事务阻塞的情况下,可判断第二目标事务和第三目标事务是否均包含针对目标存储位置的数据操作,在均包含的情况下,可以向第二目标事务的客户端返回错误码。对象可通过客户端触发事务回滚指令,数据库接收到事务回滚指令后,可对第二目标事务和第三目标事务做回滚处理。
上述实施例中,在一个目标事务的执行被另一个目标事务阻塞时,可进一步判断这两个目标事务是否均包含针对目标存储位置的数据操作,在均包含的情况下,向第二目标事务的客户端返回错误码,使得对象可以通过客户端触发事务回滚指令,从而解决事务阻塞问题。
在一些实施例中,目标数据为目标商品的商品库存量;通过目标线程将目标待处理事务中目标数据所处的目标存储位置锁定,并对目标数据进行目标待处理事务中针对目标存储位置的数据操作,包括:通过目标线程将目标待处理事务中商品库存量所处的目标存储位置锁定,并对商品库存量进行目标待处理事务中针对目标存储位置的数据操作。
其中,数据库可获取数据库中各个存储位置各自对应的数据更新频率,将数据更新频率大于预设阈值的存储位置,作为热点行,即目标存储位置,热点行处的目标数据可能为电商秒杀、直播带货等场景下目标商品的商品库存量。
在具体实现中,数据库中的处理线程接收到的目标事务包含针对热点行的数据操作的情况下,可将目标事务放入热点行对应的执行等候队列,可将执行等候队列中位于队首的事务作为目标待处理事务,将目标待处理事务的处理线程作为目标线程,通过目标线程将热点行锁定,并对热点行处的目标数据进行目标待处理事务中针对热点行的数据操作,在针对热点行的数据操作完成后,授权执行等候队列中下一个待处理事务的处理线程,进行对应待处理事务中针对热点行的数据操作,下一个待处理事务的处理线程完成对应的数据操作后,再授权执行等候队列中再下一个待处理事务的处理线程,进行对应待处理事务中针对热点行的数据操作,以此类推,直到授权过程被停止。
在目标线程接收到目标待处理事务包含的提交操作后,确定当前被授权的处理线程是否完成对应待处理事务中针对热点行的数据操作,在当前被授权的处理线程完成对应的数据操作的情况下,停止授权过程并通过目标线程将热点行释放,将当前被授权的处理线程对应的待处理事务的下一个待处理事务作为目标待处理事务,并返回将目标待处理事务的处理线程作为目标线程的步骤,直至各待处理事务均完成对应待处理事务中针对热点行的数据操作。
上述实施例中,提供了目标数据为目标商品的商品库存量的场景下,包含针对热点行的数据操作的各待处理事务如何执行的具体方式,这种方式下被授权的处理线程无需等待前一个待处理事务被提交,便可开始进行针对热点行的数据操作,提升了包含针对热点行的数据操作的事务的处理效率。
在一些实施例中,目标数据为目标账户的账户资源数值;通过目标线程将目标待处理事务中目标数据所处的目标存储位置锁定,并对目标数据进行目标待处理事务中针对目标存储位置的数据操作,包括:通过目标线程将目标待处理事务中账户资源数值所处的目标存储位置锁定,并对账户资源数值进行目标待处理事务中针对目标存储位置的数据操作。
如前述实施例描述,数据库可获取数据库中各个存储位置各自对应的数据更新频率,将数据更新频率大于预设阈值的存储位置,作为热点行,即目标存储位置,热点行处的目标数据可能为商品销售场景下目标账户的账户资源数值,目标账户可以为商家账户,该场景下事务处理方式和前述实施例类似,详细描述参见前述实施例的描述。
上述实施例中,提供了目标数据为目标账户的账户资源数值的场景下,包含针对热点行的数据操作的各待处理事务如何执行的具体方式,这种方式下被授权的处理线程无需等待前一个待处理事务被提交,便可开始进行针对热点行的数据操作,提升了包含针对热点行的数据操作的事务的处理效率。
需要说明的是,上述提供的应用场景只是用于对本申请的数据处理方法进行说明,本申请提供的数据处理方法的应用不局限于上述提供的应用场景。本申请实施例对应用场景不作限定。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据处理方法的数据处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据处理装置实施例中的具体限定可以参见上文中对于数据处理方法的限定,在此不再赘述。
在一个实施例中,如图9所示,提供了一种数据处理装置,包括:
授权模块,用于将目标待处理事务的处理线程作为目标线程,通过目标线程将目标待处理事务中目标数据所处的目标存储位置锁定,并对目标数据进行目标待处理事务中针对目标存储位置的数据操作;在针对目标存储位置的数据操作完成后,依次授权目标待处理事务之后的下一个待处理事务的处理线程,进行对应待处理事务中针对目标存储位置的数据操作;
确定模块,用于在目标线程接收到目标待处理事务包含的提交操作后,确定当前被授权的处理线程是否完成对应待处理事务中针对目标存储位置的数据操作,在当前被授权的处理线程完成对应的数据操作的情况下,停止授权过程并通过目标线程将目标存储位置释放,将当前被授权的处理线程对应的待处理事务的下一个待处理事务作为目标待处理事务,并返回将目标待处理事务的处理线程作为目标线程的步骤,直至各待处理事务均完成对应待处理事务中针对目标存储位置的数据操作。
在一些实施例中,授权模块,还用于根据数据库中各个存储位置各自对应的数据更新频率,确定目标数据;接收到客户端发送的连接建立请求后,针对连接建立请求创建处理线程,通过创建的处理线程接收客户端发送的目标事务;在目标事务包含针对目标数据所处的目标存储位置的数据操作的情况下,将目标事务放入目标存储位置对应的执行等候队列;将执行等候队列中位于队首的事务作为目标待处理事务。
在一些实施例中,目标事务包括:开始操作、至少一个数据操作以及提交操作;授权模块还用于通过创建的处理线程逐个接收开始操作、至少一个数据操作以及提交操作,并对接收到的操作进行处理;还用于在通过创建的处理线程对当前接收到的数据操作进行处理时,确定当前接收到的数据操作是否为针对目标存储位置的数据操作;在当前接收到的数据操作不是针对目标存储位置的数据操作的情况下,通过创建的处理线程对当前接收到的数据操作进行处理;在当前接收到的数据操作为针对目标存储位置的数据操作的情况下,通过创建的处理线程将目标事务放入目标存储位置对应的执行等候队列。
在一些实施例中,授权模块还用于创建的处理线程接收到执行等候队列中上一个待处理事务的处理线程发送的授权指令后,进行目标事务中针对目标存储位置的数据操作;在创建的线程完成对应的数据操作后,向执行等候队列中下一个待处理事务的处理线程发送授权指令,并向客户端发送操作完成指令,以指示客户端继续发送排在目标数据操作之后的待处理数据操作,目标数据操作为目标事务中针对目标存储位置的数据操作;通过创建的处理线程对客户端发送的待处理数据操作进行处理。
在一些实施例中,授权模块还用于通过目标线程授权目标待处理事务之后的下一个第一待处理事务的第一处理线程,进行第一待处理事务中针对目标存储位置的数据操作;在第一处理线程针对目标存储位置的数据操作完成后,通过第一处理线程授权第一待处理事务之后的下一个第二待处理事务的第二处理线程,进行第二待处理事务中针对目标存储位置的数据操作,在第二处理线程针对目标存储位置的数据操作完成后,继续执行授权过程,直至授权过程被停止。
在一些实施例中,授权模块还用于通过目标待处理事务之后的下一个待处理事务的处理线程读取目标存储位置处的当前数据;基于当前数据进行对应待处理事务中针对目标存储位置的数据操作。
在一些实施例中,确定模块还用于在各处理线程接收到对应待处理事务包含的提交操作后,通过各处理线程触发提交请求;根据各处理线程针对目标存储位置进行数据操作的顺序,确定各处理线程各自对应的待处理事务的顺序标识;基于顺序标识,确定触发提交请求的各处理线程各自对应的待处理事务的提交顺序;基于提交顺序,对触发提交请求的各处理线程各自对应的待处理事务进行提交处理。
在一些实施例中,提交处理包括:准备阶段和提交阶段,提交阶段包括依次执行的刷新步骤、同步步骤和提交步骤;确定模块还用于分别对触发提交请求的各处理线程各自对应的待处理事务,进行准备阶段的相关处理,得到准备完成的待处理事务;按照提交顺序,将准备完成的待处理事务存放至刷新步骤对应的刷新等候队列中;对刷新等候队列中的待处理事务进行刷新处理,得到刷新完成的待处理事务;按照提交顺序,将刷新完成的待处理事务存放至同步步骤对应的同步等候队列中;对同步等候队列中的待处理事务进行同步处理,得到同步完成的待处理事务;按照提交顺序,将同步完成的待处理事务存放至提交步骤对应的提交等候队列中;对提交等候队列中的待处理事务进行提交处理。
在一些实施例中,数据处理装置还包括回滚模块,用于接收到事务回滚指令后,中止授权过程或者中止对目标存储位置的释放,并提取事务回滚指令中携带的待回滚事务;在数据库中查找被待回滚事务的处理线程进行过数据操作的各待处理存储位置;在各待处理存储位置包括目标存储位置的情况下,根据针对目标存储位置预先获取的待回滚事务列表,对目标存储位置处的数据进行回滚处理;在回滚处理完成后,重启授权过程或者重启对目标存储位置的释放。
在一些实施例中,回滚模块具体用于创建所述目标存储位置对应的初始事务列表;在第一目标事务的处理线程被授权进行所述第一目标事务中针对所述目标存储位置的数据操作,或者第一目标事务的处理线程将所述目标存储位置锁定的情况下,将所述第一目标事务放入所述初始事务列表;在所述第一目标事务的提交处理完成,或者所述第一目标事务已经被回滚的情况下,将所述第一目标事务从所述初始事务列表删除;将接收到所述事务回滚指令时目标存储位置对应的初始事务列表,作为所述目标存储位置对应待回滚事务列表。
在一些实施例中,数据处理装置还包括恢复模块,用于在接收到崩溃恢复指令后,查询各待处理事务各自对应的回滚日志中目标字段的值;根据各待处理事务各自对应的回滚日志中目标字段的值,构建目标存储位置对应活跃事务链表,基于活跃事务链表进行目标存储位置的崩溃恢复处理。
在一些实施例中,恢复模块具体用于针对每个待处理事务,根据当前待处理事务对应的回滚日志中目标字段的值,确定当前待处理事务是否完成提交处理;在未完成提交处理的情况下,根据当前待处理事务对应的回滚日志中目标字段的值,确定当前待处理事务针对目标存储位置的操作顺序标识;根据各待处理事务各自对应的操作顺序标识,构建目标存储位置对应活跃事务链表。
在一些实施例中,数据处理装置还包括死锁处理模块,用于在第二目标事务的执行被第三目标事务阻塞的情况下,确定第二目标事务和第三目标事务是否均包含针对目标存储位置的数据操作;在均包含的情况下,向第二目标事务的客户端返回错误码。
在一些实施例中,目标数据为目标商品的商品库存量;授权模块具体用于通过目标线程将目标待处理事务中商品库存量所处的目标存储位置锁定,并对商品库存量进行目标待处理事务中针对目标存储位置的数据操作。
在一些实施例中,目标数据为目标账户的账户资源数值;授权模块具体用于通过目标线程将目标待处理事务中账户资源数值所处的目标存储位置锁定,并对账户资源数值进行目标待处理事务中针对目标存储位置的数据操作。
上述数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是数据库,其内部结构图可以如图10所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储待处理事务。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据处理方法。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的对象信息(包括但不限于对象设备信息、对象个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经对象授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random AccessMemory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (32)
1.一种数据处理方法,其特征在于,所述方法包括:
将目标待处理事务的处理线程作为目标线程,通过所述目标线程将所述目标待处理事务中目标数据所处的目标存储位置锁定,并对所述目标数据进行所述目标待处理事务中针对所述目标存储位置的数据操作;在针对所述目标存储位置的数据操作完成后,依次授权所述目标待处理事务之后的下一个待处理事务的处理线程,进行对应待处理事务中针对所述目标存储位置的数据操作;所述目标数据为数据库中更新频率满足预设条件的数据;
在所述目标线程接收到所述目标待处理事务包含的提交操作后,确定当前被授权的处理线程是否完成对应待处理事务中针对所述目标存储位置的数据操作,在当前被授权的处理线程完成对应的数据操作的情况下,停止授权过程并通过所述目标线程将所述目标存储位置释放,将所述当前被授权的处理线程对应的待处理事务的下一个待处理事务作为目标待处理事务,并返回将目标待处理事务的处理线程作为目标线程的步骤,直至各待处理事务均完成对应待处理事务中针对所述目标存储位置的数据操作。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据数据库中各个存储位置各自对应的数据更新频率,确定目标数据;
接收到客户端发送的连接建立请求后,针对所述连接建立请求创建处理线程,通过创建的处理线程接收所述客户端发送的目标事务;
在所述目标事务包含针对目标数据所处的目标存储位置的数据操作的情况下,将所述目标事务放入所述目标存储位置对应的执行等候队列;
将所述执行等候队列中位于队首的事务作为目标待处理事务。
3.根据权利要求2所述的方法,其特征在于,所述目标事务包括:开始操作、至少一个数据操作以及提交操作;
所述通过创建的处理线程接收所述客户端发送的目标事务,包括:
通过创建的处理线程逐个接收所述开始操作、所述至少一个数据操作以及所述提交操作,并对接收到的操作进行处理;
所述在所述目标事务包含针对目标数据所处的目标存储位置的数据操作的情况下,将所述目标事务放入所述目标存储位置对应的执行等候队列,包括;
在通过创建的处理线程对当前接收到的数据操作进行处理时,确定当前接收到的数据操作是否为针对所述目标存储位置的数据操作;
在当前接收到的数据操作不是针对所述目标存储位置的数据操作的情况下,通过创建的处理线程对当前接收到的数据操作进行处理;
在当前接收到的数据操作为针对所述目标存储位置的数据操作的情况下,通过创建的处理线程将所述目标事务放入所述目标存储位置对应的执行等候队列。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
创建的处理线程接收到所述执行等候队列中上一个待处理事务的处理线程发送的授权指令后,进行所述目标事务中针对所述目标存储位置的数据操作;
在创建的线程完成对应的数据操作后,向所述执行等候队列中下一个待处理事务的处理线程发送授权指令,并向所述客户端发送操作完成指令,以指示所述客户端继续发送排在目标数据操作之后的待处理数据操作,所述目标数据操作为所述目标事务中针对所述目标存储位置的数据操作;
通过创建的处理线程对所述客户端发送的待处理数据操作进行处理。
5.根据权利要求1所述的方法,其特征在于,所述依次授权所述目标待处理事务之后的下一个待处理事务的处理线程,进行对应待处理事务中针对所述目标存储位置的数据操作,包括:
通过所述目标线程授权所述目标待处理事务之后的下一个第一待处理事务的第一处理线程,进行第一待处理事务中针对所述目标存储位置的数据操作;
在第一处理线程针对所述目标存储位置的数据操作完成后,通过第一处理线程授权所述第一待处理事务之后的下一个第二待处理事务的第二处理线程,进行第二待处理事务中针对所述目标存储位置的数据操作,在第二处理线程针对所述目标存储位置的数据操作完成后,继续执行授权过程,直至授权过程被停止。
6.根据权利要求1所述的方法,其特征在于,所述目标待处理事务之后的下一个待处理事务的处理线程,进行对应待处理事务中针对所述目标存储位置的数据操作,包括:
通过所述目标待处理事务之后的下一个待处理事务的处理线程读取所述目标存储位置处的当前数据;基于所述当前数据进行对应待处理事务中针对所述目标存储位置的数据操作。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在各处理线程接收到对应待处理事务包含的提交操作后,通过各处理线程触发提交请求;
根据各处理线程针对所述目标存储位置进行数据操作的顺序,确定各处理线程各自对应的待处理事务的顺序标识;
基于所述顺序标识,确定触发提交请求的各处理线程各自对应的待处理事务的提交顺序;
基于所述提交顺序,对触发提交请求的各处理线程各自对应的待处理事务进行提交处理。
8.根据权利要求7所述的方法,其特征在于,所述提交处理包括:准备阶段和提交阶段,所述提交阶段包括依次执行的刷新步骤、同步步骤和提交步骤;
所述基于所述提交顺序,对触发提交请求的各处理线程各自对应的待处理事务进行提交处理,包括:
分别对触发提交请求的各处理线程各自对应的待处理事务,进行所述准备阶段的相关处理,得到准备完成的待处理事务;
按照所述提交顺序,将准备完成的待处理事务存放至所述刷新步骤对应的刷新等候队列中;对所述刷新等候队列中的待处理事务进行刷新处理,得到刷新完成的待处理事务;
按照所述提交顺序,将刷新完成的待处理事务存放至所述同步步骤对应的同步等候队列中;对所述同步等候队列中的待处理事务进行同步处理,得到同步完成的待处理事务;
按照所述提交顺序,将同步完成的待处理事务存放至所述提交步骤对应的提交等候队列中;对所述提交等候队列中的待处理事务进行提交处理。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收到事务回滚指令后,中止所述授权过程或者中止对所述目标存储位置的释放,并提取所述事务回滚指令中携带的待回滚事务;
在数据库中查找被所述待回滚事务的处理线程进行过数据操作的各待处理存储位置;
在各待处理存储位置包括所述目标存储位置的情况下,根据针对所述目标存储位置预先获取的待回滚事务列表,对所述目标存储位置处的数据进行回滚处理;在回滚处理完成后,重启所述授权过程或者重启对所述目标存储位置的释放。
10.根据权利要求9所述的方法,其特征在于,待回滚事务列表的获取步骤,包括:
创建所述目标存储位置对应的初始事务列表;
在第一目标事务的处理线程被授权进行所述第一目标事务中针对所述目标存储位置的数据操作,或者第一目标事务的处理线程将所述目标存储位置锁定的情况下,将所述第一目标事务放入所述初始事务列表;
在所述第一目标事务的提交处理完成,或者所述第一目标事务已经被回滚的情况下,将所述第一目标事务从所述初始事务列表删除;
将接收到所述事务回滚指令时目标存储位置对应的初始事务列表,作为所述目标存储位置对应待回滚事务列表。
11.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在接收到崩溃恢复指令后,查询各待处理事务各自对应的回滚日志中目标字段的值;
根据各待处理事务各自对应的回滚日志中目标字段的值,构建所述目标存储位置对应活跃事务链表,基于所述活跃事务链表进行所述目标存储位置的崩溃恢复处理。
12.根据权利要求11所述的方法,其特征在于,所述根据各待处理事务各自对应的回滚日志中目标字段的值,构建所述目标存储位置对应活跃事务链表,包括:
针对每个待处理事务,根据当前待处理事务对应的回滚日志中目标字段的值,确定当前待处理事务是否完成提交处理;
在未完成提交处理的情况下,根据当前待处理事务对应的回滚日志中目标字段的值,确定当前待处理事务针对所述目标存储位置的操作顺序标识;
根据各待处理事务各自对应的操作顺序标识,构建所述目标存储位置对应活跃事务链表。
13.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在第二目标事务的执行被第三目标事务阻塞的情况下,确定所述第二目标事务和所述第三目标事务是否均包含针对所述目标存储位置的数据操作;在均包含的情况下,向所述第二目标事务的客户端返回错误码。
14.根据权利要求1-13任一项所述的方法,其特征在于,所述目标数据为目标商品的商品库存量;
所述通过所述目标线程将所述目标待处理事务中目标数据所处的目标存储位置锁定,并对所述目标数据进行所述目标待处理事务中针对所述目标存储位置的数据操作,包括:
通过所述目标线程将所述目标待处理事务中所述商品库存量所处的目标存储位置锁定,并对所述商品库存量进行所述目标待处理事务中针对所述目标存储位置的数据操作。
15.根据权利要求1-13任一项所述的方法,其特征在于,所述目标数据为目标账户的账户资源数值;
所述通过所述目标线程将所述目标待处理事务中目标数据所处的目标存储位置锁定,并对所述目标数据进行所述目标待处理事务中针对所述目标存储位置的数据操作,包括:
通过所述目标线程将所述目标待处理事务中所述账户资源数值所处的目标存储位置锁定,并对所述账户资源数值进行所述目标待处理事务中针对所述目标存储位置的数据操作。
16.一种数据处理装置,其特征在于,所述装置包括:
授权模块,用于将目标待处理事务的处理线程作为目标线程,通过所述目标线程将所述目标待处理事务中目标数据所处的目标存储位置锁定,并对所述目标数据进行所述目标待处理事务中针对所述目标存储位置的数据操作;在针对所述目标存储位置的数据操作完成后,依次授权所述目标待处理事务之后的下一个待处理事务的处理线程,进行对应待处理事务中针对所述目标存储位置的数据操作,所述目标数据为数据库中更新频率满足预设条件的数据;
确定模块,用于在所述目标线程接收到所述目标待处理事务包含的提交操作后,确定当前被授权的处理线程是否完成对应待处理事务中针对所述目标存储位置的数据操作,在当前被授权的处理线程完成对应的数据操作的情况下,停止授权过程并通过所述目标线程将所述目标存储位置释放,将所述当前被授权的处理线程对应的待处理事务的下一个待处理事务作为目标待处理事务,并返回将目标待处理事务的处理线程作为目标线程的步骤,直至各待处理事务均完成对应待处理事务中针对所述目标存储位置的数据操作。
17.根据权利要求16所述的装置,其特征在于,所述授权模块,还用于根据数据库中各个存储位置各自对应的数据更新频率,确定目标数据;接收到客户端发送的连接建立请求后,针对所述连接建立请求创建处理线程,通过创建的处理线程接收所述客户端发送的目标事务;在所述目标事务包含针对目标数据所处的目标存储位置的数据操作的情况下,将所述目标事务放入所述目标存储位置对应的执行等候队列;将所述执行等候队列中位于队首的事务作为目标待处理事务。
18.根据权利要求17所述的装置,其特征在于,目标事务包括:开始操作、至少一个数据操作以及提交操作;所述授权模块,还用于通过创建的处理线程逐个接收所述开始操作、所述至少一个数据操作以及所述提交操作,并对接收到的操作进行处理;还用于在通过创建的处理线程对当前接收到的数据操作进行处理时,确定当前接收到的数据操作是否为针对所述目标存储位置的数据操作;在当前接收到的数据操作不是针对所述目标存储位置的数据操作的情况下,通过创建的处理线程对当前接收到的数据操作进行处理;在当前接收到的数据操作为针对所述目标存储位置的数据操作的情况下,通过创建的处理线程将所述目标事务放入所述目标存储位置对应的执行等候队列。
19.根据权利要求18所述的装置,其特征在于,所述授权模块,还用于创建的处理线程接收到所述执行等候队列中上一个待处理事务的处理线程发送的授权指令后,进行所述目标事务中针对所述目标存储位置的数据操作;在创建的线程完成对应的数据操作后,向所述执行等候队列中下一个待处理事务的处理线程发送授权指令,并向所述客户端发送操作完成指令,以指示所述客户端继续发送排在目标数据操作之后的待处理数据操作,所述目标数据操作为所述目标事务中针对所述目标存储位置的数据操作;通过创建的处理线程对所述客户端发送的待处理数据操作进行处理。
20.根据权利要求16所述的装置,其特征在于,所述授权模块,还用于通过所述目标线程授权所述目标待处理事务之后的下一个第一待处理事务的第一处理线程,进行第一待处理事务中针对所述目标存储位置的数据操作;在第一处理线程针对所述目标存储位置的数据操作完成后,通过第一处理线程授权所述第一待处理事务之后的下一个第二待处理事务的第二处理线程,进行第二待处理事务中针对所述目标存储位置的数据操作,在第二处理线程针对所述目标存储位置的数据操作完成后,继续执行授权过程,直至授权过程被停止。
21.根据权利要求16所述的装置,其特征在于,所述授权模块,还用于通过所述目标待处理事务之后的下一个待处理事务的处理线程读取所述目标存储位置处的当前数据;基于所述当前数据进行对应待处理事务中针对所述目标存储位置的数据操作。
22.根据权利要求16所述的装置,其特征在于,所述确定模块,还用于在各处理线程接收到对应待处理事务包含的提交操作后,通过各处理线程触发提交请求;根据各处理线程针对所述目标存储位置进行数据操作的顺序,确定各处理线程各自对应的待处理事务的顺序标识;基于所述顺序标识,确定触发提交请求的各处理线程各自对应的待处理事务的提交顺序;基于所述提交顺序,对触发提交请求的各处理线程各自对应的待处理事务进行提交处理。
23.根据权利要求22所述的装置,其特征在于,所述提交处理包括:准备阶段和提交阶段,所述提交阶段包括依次执行的刷新步骤、同步步骤和提交步骤;所述确定模块,还用于分别对触发提交请求的各处理线程各自对应的待处理事务,进行所述准备阶段的相关处理,得到准备完成的待处理事务;按照所述提交顺序,将准备完成的待处理事务存放至所述刷新步骤对应的刷新等候队列中;对所述刷新等候队列中的待处理事务进行刷新处理,得到刷新完成的待处理事务;按照所述提交顺序,将刷新完成的待处理事务存放至所述同步步骤对应的同步等候队列中;对所述同步等候队列中的待处理事务进行同步处理,得到同步完成的待处理事务;按照所述提交顺序,将同步完成的待处理事务存放至所述提交步骤对应的提交等候队列中;对所述提交等候队列中的待处理事务进行提交处理。
24.根据权利要求16所述的装置,其特征在于,所述数据处理装置还包括回滚模块,用于接收到事务回滚指令后,中止所述授权过程或者中止对所述目标存储位置的释放,并提取所述事务回滚指令中携带的待回滚事务;在数据库中查找被所述待回滚事务的处理线程进行过数据操作的各待处理存储位置;在各待处理存储位置包括所述目标存储位置的情况下,根据针对所述目标存储位置预先获取的待回滚事务列表,对所述目标存储位置处的数据进行回滚处理;在回滚处理完成后,重启所述授权过程或者重启对所述目标存储位置的释放。
25.根据权利要求24所述的装置,其特征在于,所述回滚模块,还用于创建所述目标存储位置对应的初始事务列表;在第一目标事务的处理线程被授权进行所述第一目标事务中针对所述目标存储位置的数据操作,或者第一目标事务的处理线程将所述目标存储位置锁定的情况下,将所述第一目标事务放入所述初始事务列表;在所述第一目标事务的提交处理完成,或者所述第一目标事务已经被回滚的情况下,将所述第一目标事务从所述初始事务列表删除;将接收到所述事务回滚指令时目标存储位置对应的初始事务列表,作为所述目标存储位置对应待回滚事务列表。
26.根据权利要求16所述的装置,其特征在于,所述数据处理装置还包括恢复模块,用于在接收到崩溃恢复指令后,查询各待处理事务各自对应的回滚日志中目标字段的值;根据各待处理事务各自对应的回滚日志中目标字段的值,构建所述目标存储位置对应活跃事务链表,基于所述活跃事务链表进行所述目标存储位置的崩溃恢复处理。
27.根据权利要求26所述的装置,其特征在于,所述恢复模块具体用于针对每个待处理事务,根据当前待处理事务对应的回滚日志中目标字段的值,确定当前待处理事务是否完成提交处理;在未完成提交处理的情况下,根据当前待处理事务对应的回滚日志中目标字段的值,确定当前待处理事务针对所述目标存储位置的操作顺序标识;根据各待处理事务各自对应的操作顺序标识,构建所述目标存储位置对应活跃事务链表。
28.根据权利要求16所述的装置,其特征在于,所述数据处理装置还包括死锁处理模块,用于在第二目标事务的执行被第三目标事务阻塞的情况下,确定所述第二目标事务和所述第三目标事务是否均包含针对所述目标存储位置的数据操作;在均包含的情况下,向所述第二目标事务的客户端返回错误码。
29.根据权利要求16所述的装置,其特征在于,所述目标数据为目标商品的商品库存量;所述授权模块具体用于通过所述目标线程将所述目标待处理事务中所述商品库存量所处的目标存储位置锁定,并对所述商品库存量进行所述目标待处理事务中针对所述目标存储位置的数据操作。
30.根据权利要求16所述的装置,其特征在于,所述目标数据为目标账户的账户资源数值;所述授权模块具体用于通过所述目标线程将所述目标待处理事务中所述账户资源数值所处的目标存储位置锁定,并对所述账户资源数值进行所述目标待处理事务中针对所述目标存储位置的数据操作。
31.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至15中任一项所述的方法的步骤。
32.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至15中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311333507.4A CN117076146B (zh) | 2023-10-16 | 2023-10-16 | 数据处理方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311333507.4A CN117076146B (zh) | 2023-10-16 | 2023-10-16 | 数据处理方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117076146A CN117076146A (zh) | 2023-11-17 |
CN117076146B true CN117076146B (zh) | 2024-01-30 |
Family
ID=88717555
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311333507.4A Active CN117076146B (zh) | 2023-10-16 | 2023-10-16 | 数据处理方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117076146B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112084206A (zh) * | 2020-09-15 | 2020-12-15 | 腾讯科技(深圳)有限公司 | 数据库的事务请求处理方法、相关设备及存储介质 |
CN113760483A (zh) * | 2020-06-29 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 执行任务的方法和装置 |
CN114356559A (zh) * | 2021-12-22 | 2022-04-15 | 青岛海信移动通信技术股份有限公司 | 一种多线程控制方法及终端设备 |
CN115220876A (zh) * | 2022-07-13 | 2022-10-21 | 中航金网(北京)电子商务有限公司 | 虚拟资源创建方法、装置、程序产品、介质及电子设备 |
CN116561137A (zh) * | 2022-01-28 | 2023-08-08 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10002031B2 (en) * | 2013-05-08 | 2018-06-19 | Nvidia Corporation | Low overhead thread synchronization using hardware-accelerated bounded circular queues |
CN115543643A (zh) * | 2022-09-29 | 2022-12-30 | 北京自如信息科技有限公司 | 分布式锁的重入执行方法、装置、设备及可读存储介质 |
-
2023
- 2023-10-16 CN CN202311333507.4A patent/CN117076146B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113760483A (zh) * | 2020-06-29 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 执行任务的方法和装置 |
CN112084206A (zh) * | 2020-09-15 | 2020-12-15 | 腾讯科技(深圳)有限公司 | 数据库的事务请求处理方法、相关设备及存储介质 |
CN114356559A (zh) * | 2021-12-22 | 2022-04-15 | 青岛海信移动通信技术股份有限公司 | 一种多线程控制方法及终端设备 |
CN116561137A (zh) * | 2022-01-28 | 2023-08-08 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
CN115220876A (zh) * | 2022-07-13 | 2022-10-21 | 中航金网(北京)电子商务有限公司 | 虚拟资源创建方法、装置、程序产品、介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN117076146A (zh) | 2023-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102392944B1 (ko) | 데이터 백업 방법, 저장 매체 및 컴퓨팅 기기 | |
US11429599B2 (en) | Method and apparatus for updating database by using two-phase commit distributed transaction | |
US10929393B2 (en) | Replica database query routing for database environments | |
AU2016244128B2 (en) | Processing database transactions in a distributed computing system | |
US9996427B2 (en) | Parallel backup for distributed database system environments | |
EP2565806B1 (en) | Multi-row transactions | |
US10915554B2 (en) | Database replication system | |
CN105512266A (zh) | 一种实现分布式数据库操作一致性的方法及装置 | |
US11681683B2 (en) | Transaction compensation for single phase resources | |
CN111522631A (zh) | 分布式事务处理方法、装置、服务器及介质 | |
CN113010549B (zh) | 基于异地多活系统的数据处理方法、相关设备及存储介质 | |
CN111414403A (zh) | 数据访问方法和装置、数据存储方法和装置 | |
CN110968603A (zh) | 一种数据访问方法及装置 | |
CN107797850B (zh) | 分布式事务处理的方法、装置与系统 | |
CN112084206A (zh) | 数据库的事务请求处理方法、相关设备及存储介质 | |
CN103064898B (zh) | 事务加锁、解锁方法及装置 | |
US11288263B2 (en) | Change service for shared database object | |
CN116561137A (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
CN117076146B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN114928620B (zh) | 用户信息同步方法、装置、设备、存储介质和程序产品 | |
CN116339626A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN115756768B (zh) | 基于saga的分布式事务处理方法、装置、设备及介质 | |
CN117076147B (zh) | 死锁检测方法、装置、设备和存储介质 | |
US20230333878A1 (en) | Request processing methods and apparatuses, computing device and storage medium | |
CN116541137A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |