CN110806942B - 数据处理的方法和装置 - Google Patents
数据处理的方法和装置 Download PDFInfo
- Publication number
- CN110806942B CN110806942B CN201911088786.6A CN201911088786A CN110806942B CN 110806942 B CN110806942 B CN 110806942B CN 201911088786 A CN201911088786 A CN 201911088786A CN 110806942 B CN110806942 B CN 110806942B
- Authority
- CN
- China
- Prior art keywords
- data
- write operation
- cpu core
- read operation
- target
- 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
- 238000003672 processing method Methods 0.000 title abstract description 10
- 239000012634 fragment Substances 0.000 claims abstract description 69
- 238000000034 method Methods 0.000 claims abstract description 30
- 238000012545 processing Methods 0.000 claims abstract description 29
- 230000015654 memory Effects 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000012790 confirmation Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012508 change request Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 239000002699 waste material Substances 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
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
本申请公开了一种数据处理的方法,属于数据处理技术领域。该方法包括:接收对数据库中的目标数据的操作请求;确定目标数据所属的数据分片;如果操作请求为写操作请求,确定数据分片对应的写操作CPU核,控制写操作CPU核根据写操作请求对目标数据进行写操作,其中,数据库中的数据分为不同的数据分片,每个数据分片对应有一个写操作CPU核,不同的数据分片对应的写操作CPU核不同;如果操作请求为读操作请求,确定目标读操作CPU核,当目标读操作CPU核处于空闲状态,控制目标读操作CPU核根据读操作请求对目标数据进行读操作。采用本申请,可以有效解决相关技术中浪费处理器资源的技术问题。
Description
技术领域
本申请涉及数据处理技术领域,具体涉及一种数据处理的方法和装置。
背景技术
在对数据库中的数据操作时,为了提高效率,我们希望多个操作可以并发执行。但是并发执行的操作之间可能会存在冲突。例如,读写冲突和写写冲突。读写冲突是指在对数据库中的数据进行写操作(即更改该数据)时,如果请求读取该数据,则由于写操作还未进行完,可能会导致读取到的数据错乱。写写冲突是指同时有两个操作请求请求对数据库中的数据进行写操作时,如果两个写操作同时执行,则可能会导致数据发生错乱。
相关技术中采用加锁的方式解决上述写写冲突和读写冲突。加锁是指当多个操作请求请求对同一数据进行操作时,某一操作请求对该数据加锁后,只允许该操作请求执行。而其余的操作请求,只能在后续争夺到锁资源之后,才能执行。
在实现本申请的过程中,发明人发现相关技术至少存在以下问题:
相关技术中加锁的方法,会导致各操作请求争夺锁资源,并且,当有操作请求锁定数据之后,其余操作请求也会周期性的去查看该数据是否解锁,从而浪费了大量的处理器资源。
发明内容
本申请实施例提供了一种数据处理的方法和装置,可以解决相关技术中存在的技术问题。所述数据处理的方法和装置的技术方案如下:
第一方面,提供了数据处理的方法,所述方法包括:
接收对数据库中的目标数据的操作请求;
确定所述目标数据所属的数据分片;
如果所述操作请求为写操作请求,确定所述数据分片对应的写操作CPU核,控制所述写操作CPU核根据所述写操作请求对所述目标数据进行写操作,其中,所述数据库中的数据分为不同的数据分片,每个数据分片对应有一个写操作CPU核,不同的数据分片对应的写操作CPU核不同;
如果所述操作请求为读操作请求,确定目标读操作CPU核,当所述目标读操作CPU核处于空闲状态时,控制所述目标读操作CPU核根据所述读操作请求对所述目标数据进行读操作,其中,所述目标读操作CPU核与各写操作CPU核为不同的CPU核。
在一种可能的实现方式中,所述控制所述写操作CPU核根据所述写操作请求对所述目标数据进行写操作,包括:
将所述写操作请求置于所述写操作CPU核对应的写操作请求队列中;
当所述写操作请求在所述写操作请求队列中处于第一位时,控制所述写操作CPU核从对应的写操作请求队列中获取所述写操作请求,根据所述写操作请求对所述目标数据进行写操作。
在一种可能的实现方式中,所述控制所述写操作CPU核根据所述写操作请求对所述目标数据进行写操作之前,还包括:
存储进行所述写操作之前的目标数据作为稳定版本的目标数据。
在一种可能的实现方式中,所有CPU核中包括一个读操作CPU核,所述确定目标读操作CPU核,包括:
确定所述读操作CPU核为所述目标读操作CPU核。
在一种可能的实现方式中,所有CPU核中包括多个读操作CPU核,所述确定目标读操作CPU核,包括:
确定所述多个读操作CPU核中的压力最小的读操作CPU核为所述目标读操作CPU核。
在一种可能的实现方式中,所述方法还包括:
当所述目标读操作CPU核不处于空闲状态时,确定所述目标数据所属的数据分片对应的写操作CPU核;
控制所述目标读操作CPU核和所述目标数据所属的数据分片对应的写操作CPU核中压力较小的CPU核,对所述目标数据进行读操作。
在一种可能的实现方式中,所述控制所述目标读操作CPU核根据所述读操作请求对所述目标数据进行读操作,包括:
当存在写操作CPU核对所述目标数据正在进行写操作时,所述目标读操作CPU核根据所述读操作请求对稳定版本的目标数据进行读操作,其中,所述稳定版本的目标数据是目标数据在进行所述正在进行的写操作前的数据。
在一种可能的实现方式中,所述接收对数据库中的目标数据的操作请求之前,还包括:
将各CPU核划分为多个写操作CPU核和至少一个读操作CPU核;
将所述数据库中的数据划分为多个数据分片;
将每个数据分片与一个写操作CPU核相对应,且每个数据分片对应的写操作CPU核不同。
在一种可能的实现方式中,所述将所述数据库中的数据划分为多个数据分片,包括:
按照数据的主键将所述数据库中的数据划分为多个数据分片。
第二方面,提供了一种数据处理的装置,所述装置包括:
接收模块,用于接收对数据库中的目标数据的操作请求;
确定模块,用于确定所述目标数据所属的数据分片;
写操作模块,用于如果所述操作请求为写操作请求,确定所述数据分片对应的写操作CPU核,控制所述写操作CPU核根据所述写操作请求对所述目标数据进行写操作,其中,所述数据库中的数据分为不同的数据分片,每个数据分片对应有一个写操作CPU核,不同的数据分片对应的写操作CPU核不同;
读操作模块,用于如果所述操作请求为读操作请求,确定目标读操作CPU核,当所述目标读操作CPU核处于空闲状态时,控制所述目标读操作CPU核根据所述读操作请求对所述目标数据进行读操作,其中,所述目标读操作CPU核与各写操作CPU核为不同的CPU核。
在一种可能的实现方式中,所述写操作模块,用于:
将所述写操作请求置于所述写操作CPU核对应的写操作请求队列中;
当所述写操作请求在所述写操作请求队列中处于第一位时,控制所述写操作CPU核从对应的写操作请求队列中获取所述写操作请求,根据所述写操作请求对所述目标数据进行写操作。
在一种可能的实现方式中,所述写操作模块,还用于:
存储进行所述写操作之前的目标数据作为稳定版本的目标数据。
在一种可能的实现方式中,所有CPU核中包括一个读操作CPU核,所述读操作模块,用于:
确定所述读操作CPU核为所述目标读操作CPU核。
在一种可能的实现方式中,所有CPU核中包括多个读操作CPU核,所述读操作模块,用于:
确定所述多个读操作CPU核中的压力最小的读操作CPU核为所述目标读操作CPU核。
在一种可能的实现方式中,所述读操作模块,还用于:
当所述目标读操作CPU核不处于空闲状态时,确定所述目标数据所属的数据分片对应的写操作CPU核;
控制所述目标读操作CPU核和所述目标数据所属的数据分片对应的写操作CPU核中压力较小的CPU核,对所述目标数据进行读操作。
在一种可能的实现方式中,所述读操作模块,用于:
当存在写操作CPU核对所述目标数据正在进行写操作时,所述目标读操作CPU核根据所述读操作请求对稳定版本的目标数据进行读操作,其中,所述稳定版本的目标数据是在进行所述正在进行的写操作前的目标数据。
在一种可能的实现方式中,所述装置还包括配置模块,用于:
将各CPU核划分为多个写操作CPU核和至少一个读操作CPU核;
将所述数据库中的数据划分为多个数据分片;
将每个数据分片与一个写操作CPU核相对应,且每个数据分片对应的写操作CPU核不同。
在一种可能的实现方式中,所述配置模块,用于:
按照数据的主键将所述数据库中的数据划分为多个数据分片。
第三方面,提供了一种服务器,所述服务器包括存储器和处理器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上述第一方面所述的数据处理的方法。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如上述第一方面所述的数据处理的方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
本申请实施例提供了一种数据处理的方法,该数据处理的方法将数据库中的数据分为不同的数据分片,并使不同的数据分片对应不同的写操作CPU核。从而,各写操作CPU核可以并发的执行多个写操作,并且不同写操作CPU核上执行的各写操作之间也不会发生写写冲突,从而,不必进行加锁,在一定程度上减少了处理器资源的浪费。
另外,分配专门的读操作CPU核进行读操作,也提高了读操作的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据处理的方法的流程图;
图2是本申请实施例提供的一种数据处理的装置的结构示意图;
图3是本申请实施例提供的一种服务器的结构示意图;
图4是本申请实施例提供的一种数据处理的过程示意图;
图5是本申请实施例提供的一种数据处理的方法的实施环境图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请实施例提供了一种数据处理的方法,该方法可以由服务器实现,其中,该服务器可以为单个服务器,也可以为服务器集群。
本申请实施例提供的数据处理的方法,可以应用在数据处理技术领域,具体的,可以应用在数据库或中间件上。图5为本申请实施例提供的数据处理的方法的实施环境图,在该实施环境中包括多个终端和服务器集群。当用户想要对数据库中的数据进行操作时,用户在终端上进行操作,触发终端向服务器发送对目标数据的操作请求。则服务器即可以接收对数据库中的目标数据的操作请求,然后,服务器确定目标数据所属的数据分片。如果操作请求为写操作请求,则确定数据分片对应的写操作处理器(central processing units,CPU)核,控制写操作CPU根据写操作请求对目标数据进行写操作;如果操作请求为读操作请求,则确定目标读操作CPU核,当目标读操作CPU核处于空闲状态时,控制目标读操作CPU核根据读操作请求对目标数据进行读操作。从而,完成对目标数据的读操作和/或写操作。在服务器完成相应的操作之后,还可以向终端返回相应的数据。例如,终端向服务器发送读操作请求,服务器完成读操作之后,向终端返回请求读取的数据。
如图1所示,数据处理的方法的处理流程可以包括如下步骤:
在步骤101中,接收对数据库中的目标数据的操作请求。
其中,该操作请求可以为读操作请求,也可以写操作请求。
在实施中,当用户想要读取数据或更改数据时,可以在服务器进行相应的操作,触发服务器发出对目标数据的操作请求。则服务器可以接收对数据库中的目标数据的操作请求。
需要说明的是,在接收对数据库中的目标数据的操作请求之前,需要对数据库中的数据进行分片,以及为每个数据分片配置相对应的写操作CPU核。具体过程可以如下所述:
将各CPU核划分为多个写操作CPU核和至少一个读操作CPU核。将数据库中的数据划分为多个数据分片。将每个数据分片与一个写操作CPU核相对应,且每个数据分片对应的写操作CPU核不同。
其中,CPU是计算机的中央处理器,CPU核是CPU中的核心芯片,用来完成所有的计算、接受/存储命令和处理数据等,是数值处理核心。写操作CPU核是指用于进行写操作的CPU核,其也可以进行读操作。读操作CPU核是指用于进行读操作的CPU核。
在实施中,在对各CPU核进行划分时,可以划分出一个读操作CPU核,也可以划分出多个读操作CPU核,具体数量可以根据对数据库中的数据进行读操作的频繁程度来决定,例如,对数据库中的数据进行读操作比较频繁,则可以划分出较多的读操作CPU核;对数据库中的数据进行读操作不太频繁,则划分出一个读操作CPU核即可。
对数据库中的数据进行分片处理,将数据库中的数据划分为多个数据分片。对数据库中的数据进行划分时,可以基于数据量,将数据库中的数据平均划分为多个数据分片。也可以基于对各数据进行写操作的频繁程度,将数据库中的数据划分为多个数据分片,使得对每个数据分片中的数据进行写操作的频繁程度相同。这样,可以使每个写操作CPU核的平均压力大致相同,从而,有利于处理器资源的合理分配。
例如,有数据1、数据2、数据3和数据4,这四个数据的数据量相同,对数据1的写操作的频繁程度,与对数据2、数据3和数据4的总的写操作的频繁程度相同。如果想要将四个数据划分为两个数据分片,则可以基于数据量进行数据划分,即每个数据分片包含两个数据;也可以基于对各数据进行写操作的频繁程度,即一个数据分片包含数据1,另一个数据分片包含数据2、数据3和数据4。
另外,为了便于后续确认数据属于哪个数据分片,可以生成各数据与数据分片的关系表,从而,可以通过该关系表查找出数据所属的数据分片。
最后,将每个数据分片与一个CPU核对应,也即,使一个CPU核负责一个数据分片,且不同CPU核负责的数据分片不同。
另外,为了便于后续确认数据分片对应的写操作CPU核,可以生成写操作CPU核与数据分片的关系表,该关系表可以跟数据与数据分片的关系表为不同的关系表,也可以为同一关系表,如表1所示。其中,表1为写操作CPU核、数据分片和数据三者的关系表。
表1
写操作CPU核 | 数据分片 | 数据 |
写操作CPU核1 | 数据分片1 | 数据1、数据2、数据3 |
写操作CPU核2 | 数据分片2 | 数据4、数据5、数据6 |
写操作CPU核3 | 数据分片3 | 数据7、数据8、数据9 |
需要说明的是,在进行CPU核划分和划分数据分片时,可以先对CPU核进行划分,也可以先对数据库中的数据进行分片处理,本申请对此不做限定。另外,在对数据进行划分时,可以按照数据的主键将数据库中的数据划分为多个数据分片。其中,主键是指一个或多个字段,它的值用于唯一地标识某一数据,各数据的主键均不相同。
在步骤102中,确定目标数据所属的数据分片。
在实施中,确定目标数据之后,可以在数据与数据分片的关系表中(如表1中),查找目标数据所属的数据分片。
在步骤103中,如果操作请求为写操作请求,确定数据分片对应的写操作CPU核,控制写操作CPU核根据写操作请求对目标数据进行写操作。如果操作请求为读操作请求,确定目标读操作CPU核,当目标读操作CPU核处于空闲状态时,控制目标读操作CPU核根据读操作请求对目标数据进行读操作。
其中,数据库中的数据分为不同的数据分片,每个数据分片对应有一个写操作CPU核,不同的数据分片对应的写操作CPU核不同。目标读操作CPU核与各写操作CPU核为不同的CPU核。
在实施中,根据操作请求的类型的不同,具体的处理也不同,下面将操作请求分为两种情况进行详细叙述。
第一种情况,操作请求为写操作请求,其中,写操作请求也可以称为更改请求,写操作请求包括插入请求、删除请求和更新请求等。
在实施中,如果操作请求为写操作请求,则需要首先确定目标数据所属的数据分片对应的写操作CPU核。具体的,可以通过查找写操作CPU核与数据分片的关系表(如表1),查找目标数据所属的数据分片对应的写操作CPU核。
确定目标数据所属的数据分片对应的写操作CPU核之后,控制写操作CPU核根据写操作请求对目标数据进行写操作。
在一种可能的实现方式中,可以采用写操作请求队列的方法进行写操作,则相应的处理过程可以如下所述,将写操作请求置于写操作CPU核对应的写操作请求队列中。当写操作请求在写操作请求队列中处于第一位时,控制写操作CPU核从对应的写操作请求队列中获取写操作请求,根据写操作请求对目标数据进行写操作。
其中,写操作请求队列中可以包含多个写操作请求,各写操作请求按时间顺序排序。
在实施中,写操作CPU核按照写操作请求队列中各写操作请求的排列顺序,依次获取各写操作请求,并根据各写操作请求进行写操作。
写操作请求在写操作CPU核对应的写操作请求队列中排队,写操作CPU核每次处理一个写操作请求。
另外,为了避免对目标数据进行读取时出现错乱,在控制写操作CPU核根据写操作请求对目标数据进行写操作之前,存储进行写操作之前的目标数据作为稳定版本的目标数据。
在对目标数据正在进行写操作时,如果此时读取该目标数据,由于目标数据不具有一致性(既包含部分更新前的数据,也包括部分更新后的数据),则此时读取会失败。因此,为了避免读取失败,在进行写操作前可以保存当前的目标数据作为稳定版本的目标数据,且在进行写操作时,该稳定版本的目标数据保持不变。这样,当有读操作请求请求读取该目标数据时,可以读取稳定版本的目标数据,稳定版本的目标数据具有一致性,所以读取不会失败。
第二种情况,操作请求为读操作请求。
在实施中,如果操作请求为读操作请求,则需要首先确定目标读操作CPU核。确定目标读操作CPU核的方式,根据预先配置的读操作CPU核的数量的不同而不同。
在一种可能的实现方式中,所有CPU核中包括一个读操作CPU核,则确定该读操作CPU核为目标读操作CPU核。
在另一种可能的实现方式中,所有CPU核中包括多个读操作CPU核,则确定所有读操作CPU核中的压力最小的读操作CPU核为目标读操作CPU核。
在确定目标读操作CPU核之后,在一种可能的实现方式中,可以直接由目标读操作CPU核对目标数据进行读操作,即无论目标读操作CPU核是否处于空闲状态,均由目标读操作CPU核对目标数据进行读操作。
在另一种可能的实现方式中,也可以根据目标读操作CPU核的压力状态来确定是否由目标读操作CPU核进行读操作。
在实施中,当目标读操作CPU核处于空闲状态时,控制目标读操作CPU核根据读操作请求对目标数据进行读操作。
当目标读操作CPU核不处于空闲状态时,确定目标数据所属的数据分片对应的写操作CPU核。控制目标读操作CPU核和目标数据所属的数据分片对应的写操作CPU核中压力较小的CPU核,对目标数据进行读操作。也即,对目标读操作CPU核的压力和写操作CPU核的压力进行对比,让压力较小的CPU核进行操作,从而,合理的分配处理器资源。例如,若写操作CPU核处于空闲状态,且目标读操作CPU核不处于空闲状态,可以由写操作CPU核根据读操作请求对目标数据进行读操作。
需要说明的是,在由写操作CPU核根据读操作请求对目标数据进行读操作时,如果写操作CPU核对应的写操作请求队列不为空(即写操作CPU核不处于空闲状态),读操作请求也不会进入到写操作请求队列中排队,而是写操作CPU核立即根据读操作请求对目标数据进行读操作,具体的,写操作CPU核交替的执行当前的写操作和读操作请求对应的读操作,以达到快速执行读操作的目的。
为了避免读取失败,当存在写操作CPU核对目标数据正在进行写操作时,目标读操作CPU核根据读操作请求对稳定版本的目标数据进行读操作,其中,稳定版本的目标数据是进行该正在进行的写操作之前的目标数据。
在实施中,数据库中对每个数据均可以维护稳定版本的目标数据和修改版本的目标数据。在对数据进行写操作时,先在修改版本的目标数据上进行操作,而稳定版本的目标数据保持不变,则此时,对目标数据进行读操作,可以读取稳定版本的目标数据,由于稳定版本的目标数据中的数据具有一致性,所以不会读取失败。当写操作完成后,可以对稳定版本的目标数据进行更新,使其与修改版本的目标数据保持一致。
本申请实施例提供的数据处理的方案,参照图4,当有读操作请求和写操作请求时,数据路由器将各写操作请求分配到对应的数据分片的写操作请求队列中,不同数据分片上的写操作请求可以同时处理,不会相互影响,充分利用多核处理器的性能,从而,解决了写写冲突。而读操作请求无需进入写操作请求队列,直接由读操作CPU核或写操作CPU核进行处理。在数据库中维护有一个稳定版本的数据,在对该数据进行写操作时,对应的稳定版本的数据不会改变,保持稳定版本的数据的一致性,使得对正在进行写操作的数据进行读取时,可以读取稳定版本的数据,从而,解决了读写冲突。
因此,本申请实施例所示的方案,实现了以无锁的方式消除写写冲突以及读写冲突。
基于相同的技术构思,本申请实施例还提供了一种数据处理的装置,该装置可以为上述实施例中的服务器,如图2所示,该装置包括:
接收模块201,用于接收对数据库中的目标数据的操作请求;
确定模块202,用于确定目标数据所属的数据分片;
写操作模块203,用于如果操作请求为写操作请求,确定数据分片对应的写操作CPU核,控制写操作CPU核根据写操作请求对目标数据进行写操作,其中,数据库中的数据分为不同的数据分片,每个数据分片对应有一个写操作CPU核,不同的数据分片对应的写操作CPU核不同;
读操作模块204,用于如果操作请求为读操作请求,确定目标读操作CPU核,当目标读操作CPU核处于空闲状态时,控制目标读操作CPU核根据读操作请求对目标数据进行读操作,其中,目标读操作CPU核与各写操作CPU核为不同的CPU核。
在一种可能的实现方式中,写操作模块203,用于:
将写操作请求置于写操作CPU核对应的写操作请求队列中;
当写操作请求在写操作请求队列中处于第一位时,控制写操作CPU核从对应的写操作请求队列中获取写操作请求,根据写操作请求对目标数据进行写操作。
在一种可能的实现方式中,写操作模块203,还用于:
存储进行写操作之前的目标数据作为稳定版本的目标数据。
在一种可能的实现方式中,所有CPU核中包括一个读操作CPU核,读操作模块204,用于:
确定读操作CPU核为目标读操作CPU核。
在一种可能的实现方式中,所有CPU核中包括多个读操作CPU核,读操作模块204,用于:
确定多个读操作CPU核中的压力最小的读操作CPU核为目标读操作CPU核。
在一种可能的实现方式中,读操作模块204,还用于:
当目标读操作CPU核不处于空闲状态时,确定目标数据所属的数据分片对应的写操作CPU核;
控制目标读操作CPU核和目标数据所属的数据分片对应的写操作CPU核中压力较小的CPU核,对目标数据进行读操作。
在一种可能的实现方式中,读操作模块204,用于:
当存在写操作CPU核对目标数据正在进行写操作时,目标读操作CPU核根据读操作请求对稳定版本的目标数据进行读操作,其中,稳定版本的目标数据是在进行正在进行的写操作前的目标数据。
在一种可能的实现方式中,装置还包括配置模块,用于:
将各CPU核划分为多个写操作CPU核和至少一个读操作CPU核;
将数据库中的数据划分为多个数据分片;
将每个数据分片与一个写操作CPU核相对应,且每个数据分片对应的写操作CPU核不同。
在一种可能的实现方式中,配置模块,用于:
按照数据的主键将数据库中的数据划分为多个数据分片。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
需要说明的是:上述实施例提供的数据处理的装置在进行数据处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据处理的装置与数据处理的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图3是本申请实施例提供的一种服务器的结构示意图,该服务器300可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processingunits,CPU)301和一个或一个以上的存储器302,其中,存储器302中存储有至少一条指令,该至少一条指令由处理器301加载并执行以实现上述数据处理的方法。
在示例性实施例中,还提供了一种计算机可读存储介质,存储介质中存储有至少一条指令,至少一条指令由处理器加载并执行以实现上述实施例中的页面展示测试的方法。例如,所述计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (4)
1.一种数据处理的方法,其特征在于,所述方法包括:
将CPU中的各CPU核划分为多个写操作CPU核和至少一个读操作CPU核,其中,所述读操作CPU核的数量与对数据库中的数据进行读操作的频繁程度相关;
按照对数据库中的数据进行写操作的频繁程度,将所述数据库中的数据划分为多个数据分片,使得每个数据分片中的数据进行写操作的频繁程度相同;
将每个数据分片与一个写操作CPU核相对应,且每个数据分片对应的写操作CPU核不同;
接收对数据库中的目标数据的操作请求,所述数据库中对每个数据均维护有稳定版本和修改版本;
确定所述目标数据所属的数据分片;
如果所述操作请求为写操作请求,确定所述数据分片对应的写操作CPU核,将所述写操作请求置于所述写操作CPU核对应的写操作请求队列中,当所述写操作请求在所述写操作请求队列中处于第一位时,控制所述写操作CPU核从对应的写操作请求队列中获取所述写操作请求,根据所述写操作请求对所述修改版本的目标数据进行写操作,当所述写操作完成后,对稳定版本的目标数据进行更新,使所述稳定版本的目标数据与修改版本的目标数据保持一致,其中,所述数据库中的数据分为不同的数据分片,每个数据分片对应有一个写操作CPU核,不同的数据分片对应的写操作CPU核不同;
如果所述操作请求为读操作请求且在所述读操作CPU核的数量为多个时,确定多个读操作CPU核中的压力最小的读操作CPU核为目标读操作CPU核,当所述目标读操作CPU核处于空闲状态时,控制所述目标读操作CPU核根据所述读操作请求对所述目标数据进行读操作,当存在写操作CPU核对所述目标数据正在进行写操作时,所述目标读操作CPU核根据所述读操作请求对稳定版本的目标数据进行读操作,其中,所述稳定版本的目标数据是进行所述写操作前的目标数据,所述目标读操作CPU核与各写操作CPU核为不同的CPU核;
当所述目标读操作CPU核不处于空闲状态时,确定所述目标数据所属的数据分片对应的写操作CPU核,控制所述目标读操作CPU核和所述目标数据所属的数据分片对应的写操作CPU核中压力小的CPU核,对所述目标数据进行读操作,在由所述目标数据对应的写操作CPU核根据所述读操作请求对目标数据进行读操作,且所述目标数据对应的写操作CPU核对应的写操作请求队列不为空时,所述目标数据对应的写操作CPU核交替的执行所述读操作请求和当前的写操作请求队列中的写操作请求。
2.一种数据处理的装置,其特征在于,所述装置包括:
配置模块,用于将CPU中的各CPU核划分为多个写操作CPU核和至少一个读操作CPU核,其中,所述读操作CPU核的数量与对数据库中的数据进行读操作的频繁程度相关;按照对数据库中的数据进行写操作的频繁程度,将所述数据库中的数据划分为多个数据分片,使得每个数据分片中的数据进行写操作的频繁程度相同;将每个数据分片与一个写操作CPU核相对应,且每个数据分片对应的写操作CPU核不同;
接收模块,用于接收对数据库中的目标数据的操作请求,所述数据库中对每个数据均维护稳定版本的数据和修改版本的数据;
确定模块,用于确定所述目标数据所属的数据分片;
写操作模块,用于如果所述操作请求为写操作请求,确定所述数据分片对应的写操作CPU核,将所述写操作请求置于所述写操作CPU核对应的写操作请求队列中,当所述写操作请求在所述写操作请求队列中处于第一位时,控制所述写操作CPU核从对应的写操作请求队列中获取所述写操作请求,根据所述写操作请求对所述修改版本的目标数据进行写操作,当所述写操作完成后,对稳定版本的目标数据进行更新,使所述稳定版本的目标数据与修改版本的目标数据保持一致,其中,所述数据库中的数据分为不同的数据分片,每个数据分片对应有一个写操作CPU核,不同的数据分片对应的写操作CPU核不同;
读操作模块,用于如果所述操作请求为读操作请求且在所述读操作CPU核的数量为多个时,确定多个读操作CPU核中的压力最小的读操作CPU核为目标读操作CPU核,当所述目标读操作CPU核处于空闲状态时,控制所述目标读操作CPU核根据所述读操作请求对所述目标数据进行读操作,当存在写操作CPU核对所述目标数据正在进行写操作时,所述目标读操作CPU核根据所述读操作请求对稳定版本的目标数据进行读操作,其中,所述稳定版本的目标数据是进行所述写操作前的目标数据,所述目标读操作CPU核与各写操作CPU核为不同的CPU核;当所述目标读操作CPU核不处于空闲状态时,确定所述目标数据所属的数据分片对应的写操作CPU核,控制所述目标读操作CPU核和所述目标数据所属的数据分片对应的写操作CPU核中压力小的CPU核,对所述目标数据进行读操作;
写操作模块,还用于在所述目标数据对应的写操作CPU核根据所述读操作请求对目标数据进行读操作,且所述目标数据对应的写操作CPU核对应的写操作请求队列不为空时,所述目标数据对应的写操作CPU核交替的执行所述读操作请求和当前的写操作请求队列中的写操作请求。
3.一种服务器,其特征在于,所述服务器包括存储器和处理器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如权利要求1所述的数据处理的方法。
4.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如权利要求1所述的数据处理的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911088786.6A CN110806942B (zh) | 2019-11-08 | 2019-11-08 | 数据处理的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911088786.6A CN110806942B (zh) | 2019-11-08 | 2019-11-08 | 数据处理的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110806942A CN110806942A (zh) | 2020-02-18 |
CN110806942B true CN110806942B (zh) | 2024-05-07 |
Family
ID=69501652
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911088786.6A Active CN110806942B (zh) | 2019-11-08 | 2019-11-08 | 数据处理的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110806942B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111414317B (zh) * | 2020-03-06 | 2022-11-25 | 苏州浪潮智能科技有限公司 | 一种io请求处理方法、装置、设备及可读存储介质 |
CN112231243B (zh) * | 2020-10-29 | 2023-04-07 | 海光信息技术股份有限公司 | 一种数据处理方法、处理器及电子设备 |
CN112732295B (zh) * | 2020-12-31 | 2022-11-01 | 东风汽车集团有限公司 | 一种基于多核ECU的Boot loader刷写方法、电子设备及存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7480908B1 (en) * | 2005-06-24 | 2009-01-20 | Azul Systems, Inc. | Segmented virtual machine transport mechanism |
CN101692655A (zh) * | 2009-10-23 | 2010-04-07 | 烽火通信科技股份有限公司 | 一种数据帧存储管理装置 |
CN103699495A (zh) * | 2013-12-27 | 2014-04-02 | 乐视网信息技术(北京)股份有限公司 | 数据切分的传输装置与系统 |
CN103838552A (zh) * | 2014-03-18 | 2014-06-04 | 北京邮电大学 | 4g宽带通信系统多核并行流水线信号的处理系统和方法 |
CN104133661A (zh) * | 2014-07-30 | 2014-11-05 | 西安电子科技大学 | 基于列存储的多核并行哈希分区优化方法 |
CN104834630A (zh) * | 2014-02-10 | 2015-08-12 | 瑞萨电子株式会社 | 运算控制装置、运算控制方法、存储有程序的非瞬时计算机可读介质以及OpenCL设备 |
CN105224255A (zh) * | 2015-10-14 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种存储文件管理方法及装置 |
CN106649857A (zh) * | 2016-12-30 | 2017-05-10 | 北京恒华伟业科技股份有限公司 | 一种基于读写分离的数据库操作方法及装置 |
CN107423425A (zh) * | 2017-08-02 | 2017-12-01 | 德比软件(上海)有限公司 | 一种对k/v格式的数据快速存储和查询方法 |
CN110119441A (zh) * | 2019-05-16 | 2019-08-13 | 厦门商集网络科技有限责任公司 | 基于汉字结构的文字点选验证码识别与填入方法 |
CN110231977A (zh) * | 2018-03-05 | 2019-09-13 | 中兴通讯股份有限公司 | 数据库的处理方法、装置、存储介质及电子装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8930633B2 (en) * | 2012-06-14 | 2015-01-06 | International Business Machines Corporation | Reducing read latency using a pool of processing cores |
EP3188002A4 (en) * | 2014-09-19 | 2018-01-24 | Huawei Technologies Co. Ltd. | Method and apparatus for reading and writing data, storage device and computer system |
-
2019
- 2019-11-08 CN CN201911088786.6A patent/CN110806942B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7480908B1 (en) * | 2005-06-24 | 2009-01-20 | Azul Systems, Inc. | Segmented virtual machine transport mechanism |
CN101692655A (zh) * | 2009-10-23 | 2010-04-07 | 烽火通信科技股份有限公司 | 一种数据帧存储管理装置 |
CN103699495A (zh) * | 2013-12-27 | 2014-04-02 | 乐视网信息技术(北京)股份有限公司 | 数据切分的传输装置与系统 |
CN104834630A (zh) * | 2014-02-10 | 2015-08-12 | 瑞萨电子株式会社 | 运算控制装置、运算控制方法、存储有程序的非瞬时计算机可读介质以及OpenCL设备 |
CN103838552A (zh) * | 2014-03-18 | 2014-06-04 | 北京邮电大学 | 4g宽带通信系统多核并行流水线信号的处理系统和方法 |
CN104133661A (zh) * | 2014-07-30 | 2014-11-05 | 西安电子科技大学 | 基于列存储的多核并行哈希分区优化方法 |
CN105224255A (zh) * | 2015-10-14 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种存储文件管理方法及装置 |
CN106649857A (zh) * | 2016-12-30 | 2017-05-10 | 北京恒华伟业科技股份有限公司 | 一种基于读写分离的数据库操作方法及装置 |
CN107423425A (zh) * | 2017-08-02 | 2017-12-01 | 德比软件(上海)有限公司 | 一种对k/v格式的数据快速存储和查询方法 |
CN110231977A (zh) * | 2018-03-05 | 2019-09-13 | 中兴通讯股份有限公司 | 数据库的处理方法、装置、存储介质及电子装置 |
CN110119441A (zh) * | 2019-05-16 | 2019-08-13 | 厦门商集网络科技有限责任公司 | 基于汉字结构的文字点选验证码识别与填入方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110806942A (zh) | 2020-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110806942B (zh) | 数据处理的方法和装置 | |
US8051422B2 (en) | Resource assignment method for query partioning based on processing cost of each partition | |
CN102945278B (zh) | 一种数据库记录重做日志的方法和装置 | |
CN106682215B (zh) | 一种数据处理方法和管理节点 | |
CN109379398B (zh) | 一种数据同步方法及装置 | |
WO2017050064A1 (zh) | 共享内存数据库的内存管理方法及装置 | |
CN115599747B (zh) | 一种分布式存储系统的元数据同步方法、系统及设备 | |
CN107070645B (zh) | 比较数据表的数据的方法和系统 | |
US11080261B2 (en) | Hybrid concurrency control | |
CN111143331A (zh) | 数据迁移方法、装置及计算机存储介质 | |
CN111984729A (zh) | 异构数据库数据同步方法、装置、介质和电子设备 | |
CN116088758A (zh) | 优化方法、装置、计算机设备、存储介质和程序产品 | |
CN110231977A (zh) | 数据库的处理方法、装置、存储介质及电子装置 | |
CN115599532A (zh) | 一种访问索引的方法以及计算机集群 | |
CN112541041A (zh) | 一种数据处理方法、装置、服务器及存储介质 | |
CN114785662B (zh) | 一种存储管理方法、装置、设备及机器可读存储介质 | |
CN115760405A (zh) | 交易执行方法、装置、计算机设备及介质 | |
CN115757421A (zh) | 数据处理系统和方法 | |
CN116010093A (zh) | 数据处理方法、装置、计算机设备和可读存储介质 | |
CN113760858B (zh) | 内存库数据动态迁移方法、装置、计算设备及存储设备 | |
CN111984510B (zh) | 调度系统的性能测试方法及装置 | |
CN113986846A (zh) | 数据处理方法、系统、设备及存储介质 | |
CN111782634A (zh) | 数据分布式存储方法、装置、电子设备及存储介质 | |
CN110837411A (zh) | 一种数据服务器端分区内部并发i/o调度方法及系统 | |
CN113127694A (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 | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20200218 Assignee: GUANGZHOU CUBESILI INFORMATION TECHNOLOGY Co.,Ltd. Assignor: GUANGZHOU HUADUO NETWORK TECHNOLOGY Co.,Ltd. Contract record no.: X2021440000031 Denomination of invention: Data processing method and device License type: Common License Record date: 20210125 |
|
GR01 | Patent grant | ||
GR01 | Patent grant |