CN110069504B - 一种数据操作方法及设备 - Google Patents

一种数据操作方法及设备 Download PDF

Info

Publication number
CN110069504B
CN110069504B CN201710813987.2A CN201710813987A CN110069504B CN 110069504 B CN110069504 B CN 110069504B CN 201710813987 A CN201710813987 A CN 201710813987A CN 110069504 B CN110069504 B CN 110069504B
Authority
CN
China
Prior art keywords
data
scanned
scanning
session
starting point
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
Application number
CN201710813987.2A
Other languages
English (en)
Other versions
CN110069504A (zh
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 Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201710813987.2A priority Critical patent/CN110069504B/zh
Publication of CN110069504A publication Critical patent/CN110069504A/zh
Application granted granted Critical
Publication of CN110069504B publication Critical patent/CN110069504B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • 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

Landscapes

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

Abstract

本申请的目的是提供一种数据操作方法及设备,本申请通过获取数据更新请求,并根据该数据更新请求发起对应的会话;为该会话确定待扫描数据中对应的数据扫描起点位置,其中,不同的会话对应所述待扫描数据中不同的数据扫描起点位置,使得不同的会话从待扫描数据中的不同的数据扫描起点位置开始扫描,并在待扫描数据中扫描出满足数据更新请求的数据,避免了不同的会话从同一扫描起点位置开始扫描造成的锁冲突,进而还减少了对待扫描数据中的数据的冗余扫描;对满足数据更新请求的数据进行更新,达到了会话对满足数据更新请求的数据进行更新的目的。

Description

一种数据操作方法及设备
技术领域
本申请涉及计算机领域,尤其涉及一种数据操作方法及设备。
背景技术
在实际应用场景中,如图1所示,图1中从左到右排列的竖着长框用于指示数据库中的数据块1、数据块2及、……、数据块N,其中每个数据块中的按需排列的灰色的横着的条目用于指示数据块中对应保存的数据记录1、数据记录2、……、数据记录N;当多个SQL(Structured Query Language,结构化查询语言)请求并发地对数据库中的满足该SQL请求的少量数据记录进行数据更新操作,在该数据库中需要扫描满足该SQL请求的少量数据记录,并选取出该SQL请求中的会话对应的数据记录,并对该数据记录加锁并进行数据更新操作。如图1中所示,为了从该数据库中的数据块1至数据块N中扫描出满足各个SQL请求的少量数据记录,具体的扫描方法如下步骤所述:
每一个SQL请求的扫描会话按照数据库中的数据块1、数据块2、……、数据块N的顺序进行扫描,其中,数据块内按照数据记录1、数据记录2、……、数据记录N的顺序进行扫描,且每个SQL请求对应的扫描会话均是从同一个方向开始去查找符合该SQL请求的数据块中的数据记录,例如,对于SQL请求1而言的扫描会话1,会从数据块1中的数据记录1开始进行扫描,直至扫描到满足该SQL请求对应的数据记录;对于SQL请求2而言的扫描会话,也是从数据块1中的数据记录1开始进行扫描,直至扫描到满足该SQL请求对应的数据记录,……,对于SQL请求N而言的扫描会话N,会从数据块1中的数据记录1开始进行扫描,直至扫描到满足该SQL请求对应的数据记录;可见,每个SQL请求对应的扫描会话均是从同一起始点开始扫描,直至扫描到最后满足该SQL请求的数据记录(或者扫描到数据数中的最后终点:数据块N中的数据记录N),若对于SQL请求1而言,满足其SQL请求对应的数据记录为数据块2中的数据记录4,则需要从数据块1中的数据1开始按序扫描至数据块2中的数据块3,则没有找到对应的数据记录之前的所有扫描都是冗余扫描过程,导致冗余扫描浪费资源的输入输出IO以及CPU资源等。
现有技术中,每个SQL请求对应的会话通过静态或固定的扫描方式(例如,按照数据记录排列的一个方向进行扫描),从数据库中的少量数据记录中的同一个起点开始扫描,出现冗余扫描,进而导致IO(Input and Output)冗余和CPU(Central Processing Unit,中央处理器)冗余开销。
针对上述锁冲突的问题,现有技术通过在数据库中使用skip locked(跳过被上锁的数据)的方式,来对数据库中的满足SQL请求的少量数据记录进行扫描,例如,SQL请求1对应的扫描会话1在扫描数据块3中的数据记录4时,会锁定选择的数据块3中的数据记录4,防止别的SQL请求对应的扫描会话来对该数据块3中的数据记录4进行修改(即锁定),若SQL请求1对应的扫描会话1的扫描还没有结束(即锁还没有被释放),随后SQL请求3对应的扫描会话3在扫描数据库中的所有数据块及其数据记录的过程中,也在对数据块3中的数据块4进行扫描并锁定,则SQL请求3对应的扫描会话3可以认为SQL请求1对应的扫描会话1锁定的数据块3中的数据记录4是复合条件(即被锁定还没有释放锁),SQL请求3对应的扫描会话3则可以直接跳过被锁定的数据块3中的数据记录4,继续依序扫描其他的数据块对应的数据记录。但是即使使用了跳过被上锁的数据记录,但依然存在冗余扫描,增加了IO负担。
现有技术中还通过随机偏移量(offset random()limit)的方式来使SQL请求对应的扫描会话从符合条件的数据记录中扫描出对应的数据记录,由于该随机偏移量的方式只是提供了一个偏移量,并没有改变扫描数据记录的起点位置,对于数据库来说,仍需要扫描偏移量前的所有数据记录,比如偏移量是99,数据库仍需要从扫描数据记录的起点位置开始,扫描座位1~99的对应数据记录,仍然导致冗余扫描。
因此,采用现有技术中的数据扫描方式,导致冗余的扫描开销。
发明内容
本申请的一个目的是提供一种数据操作方法及设备,解决通过现有技术对数据进行更新过程中的冗余开销的问题。
根据本申请的一个方面,提供了一种数据操作方法,该方法包括:
获取数据更新请求,根据数据更新请求发起对应的会话;
为所述会话确定待扫描数据中对应的数据扫描起点位置,所述会话从所述数据扫描起点位置开始,在所述待扫描数据中扫描出满足所述数据更新请求的数据,其中,所述会话中的至少两个不同的会话对应所述待扫描数据中不同的数据扫描起点位置;
对满足所述数据更新请求的数据进行更新。
进一步地,上述方法中,所述待扫描数据中的数据依序排列;
所述会话从所述数据扫描起点位置开始,在所述待扫描数据中扫描出满足所述数据更新请求的数据,包括:
所述会话从所述数据扫描起点位置开始,在所述待扫描数据中分别按数据排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据。
进一步地,上述方法中,所述待扫描数据中包括数据块或数据记录,其中,所述数据块包括数据记录。
进一步地,上述方法中,所述待扫描数据中包括所述数据记录时,所述数据扫描起点位置包括数据记录扫描起点位置;
所述会话从数据扫描起点位置开始,在所述待扫描数据中分别按数据排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据,包括:
所述会话从数据记录扫描起点位置开始,在所述待扫描数据中分别按数据记录排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据记录。
进一步地,上述方法中,所述待扫描数据中包括所述数据块时,所述数据扫描起点位置包括数据块扫描起点位置和每个数据块中的数据记录扫描起点位置;
所述会话从所述数据扫描起点位置开始,在所述待扫描数据中分别按数据排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据,包括:
所述会话从所述数据块扫描起点位置开始,在所述待扫描数据中分别按数据块排列的正序和/或逆序两个方向轮询扫描数据块,其中,所述会话从数据块中的所述数据记录扫描起点位置开始,在数据块中分别按数据排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据记录。
进一步地,上述方法中,为所述会话确定待扫描数据中对应的数据扫描起点位置,所述会话从所述数据扫描起点位置开始,在所述待扫描数据中扫描出满足所述数据更新请求的数据,包括:
在待扫描数据中确定满足所述数据更新请求的扫描范围的;
为所述会话确定所述扫描范围内对应的数据扫描起点位置;
所述会话从所述数据扫描起点位置开始,在所述扫描范围内扫描出满足所述数据更新请求的数据。
进一步地,上述方法中,所述扫描范围内的数据存储于索引树中。
进一步地,上述方法中,所述待扫描数据存储于堆表中或双向链表中。
进一步地,上述方法中,所述为所述会话确定待扫描数据中对应的数据扫描起点位置,包括:
在扫描所述待扫描数据时,根据获取的用户提供的扫描提示信息,为所述会话随机确定所述待扫描数据中对应的数据扫描起点位置。
进一步地,上述方法中,所述对满足所述数据更新请求的数据进行更新,包括:
对满足所述数据更新请求的数据加锁并进行更新;
释放所述锁。
根据本申请的另一方面,还提供了一种数据操作设备,该设备包括:
获取装置,用于获取数据更新请求,根据数据更新请求发起对应的会话;
扫描装置,用于为所述会话确定待扫描数据中对应的数据扫描起点位置,所述会话从所述数据扫描起点位置开始,在所述待扫描数据中扫描出满足所述数据更新请求的数据,其中,所述会话中的至少两个不同的会话对应所述待扫描数据中不同的数据扫描起点位置;
更新装置,用于对满足所述数据更新请求的数据进行更新。
进一步地,上述设备中,所述待扫描数据中的数据依序排列;
所述扫描装置用于:
所述会话从所述数据扫描起点位置开始,在所述待扫描数据中分别按数据排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据。
进一步地,上述设备中,所述待扫描数据中包括数据块或数据记录,其中,所述数据块包括数据记录。
进一步地,上述设备中,所述待扫描数据中包括所述数据记录时,所述数据扫描起点位置包括数据记录扫描起点位置;
所述扫描装置用于:
所述会话从数据记录扫描起点位置开始,在所述待扫描数据中分别按数据记录排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据记录。
进一步地,上述设备中,所述待扫描数据中包括所述数据块时,所述数据扫描起点位置包括数据块扫描起点位置和每个数据块中的数据记录扫描起点位置;
所述扫描装置用于:
所述会话从所述数据块扫描起点位置开始,在所述待扫描数据中分别按数据块排列的正序和/或逆序两个方向轮询扫描数据块,其中,所述会话从数据块中的所述数据记录扫描起点位置开始,在数据块中分别按数据排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据记录。
进一步地,上述设备中,所述扫描装置用于:
在待扫描数据中确定满足所述数据更新请求的扫描范围的;
为所述会话确定所述扫描范围内对应的数据扫描起点位置;
所述会话从所述数据扫描起点位置开始,在所述扫描范围内扫描出满足所述数据更新请求的数据。
进一步地,上述设备中,所述扫描范围内的数据存储于索引树中。
进一步地,上述设备中,所述待扫描数据存储于堆表中或双向链表中。
进一步地,上述设备中,所述扫描装置用于:
在扫描所述待扫描数据时,根据获取的用户提供的扫描提示信息,为所述会话随机确定所述待扫描数据中对应的数据扫描起点位置。
进一步地,上述设备中,所述更新装置用于:
对满足所述数据更新请求的数据加锁并进行更新;
释放所述锁。
根据本申请的另一个方面,提供了一种基于计算的设备,其中,该设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
获取数据更新请求,根据数据更新请求发起对应的会话;
为所述会话确定待扫描数据中对应的数据扫描起点位置,所述会话从所述数据扫描起点位置开始,在所述待扫描数据中扫描出满足所述数据更新请求的数据,其中,所述会话中的至少两个不同的会话对应所述待扫描数据中不同的数据扫描起点位置;
对满足所述数据更新请求的数据进行更新。
根据本申请的另一个方面,提供了一种存储可执行指令的非暂态计算机可读存储介质,在所述可执行指令由电子设备执行时,使得所述电子设备:
获取数据更新请求,根据数据更新请求发起对应的会话;
为所述会话确定待扫描数据中对应的数据扫描起点位置,所述会话从所述数据扫描起点位置开始,在所述待扫描数据中扫描出满足所述数据更新请求的数据,其中,所述会话中的至少两个不同的会话对应所述待扫描数据中不同的数据扫描起点位置;
对满足所述数据更新请求的数据进行更新。
与现有技术相比,本申请通过先获取数据更新请求,并根据该数据更新请求发起对应的会话;接着为所述会话确定待扫描数据中对应的数据扫描起点位置,其中,不同的会话对应所述待扫描数据中不同的数据扫描起点位置,使得不同的会话从所述待扫描数据中的不同的数据扫描起点位置开始扫描,并在所述待扫描数据中扫描出满足所述数据更新请求的数据,避免了不同的会话从同一扫描起点位置开始扫描造成的锁冲突,进而还减少了对待扫描数据中的数据的冗余扫描;最后,对满足所述数据更新请求的数据进行更新,达到了所述会话对满足所述数据更新请求的数据进行更新的目的。
进一步地,本申请中的所述待扫描数据中的数据依序排列;则所述会话从所述数据扫描起点位置开始,在所述待扫描数据中扫描出满足所述数据更新请求的数据,包括:所述会话从所述数据扫描起点位置开始,在所述待扫描数据中分别按数据排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据,能够使所述会话扫描到所述待扫描数据中的所有数据,进而避免了所述会话对待扫描数据中的数据的扫描遗漏。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1示出现有方案的一种数据更新过程中的数据扫描方法的示意图;
图2示出根据本申请一个方面的一种在堆表中进行数据更新的方法示意图;
图3示出根据本申请一个方面的一种通过索引树来对数据进行更新的方法的示意图;
图4示出根据本申请一个方面的一种数据操作设备的结构示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本申请提供了一种数据操作方法,该方法适用于数据库中的服务器端,该服务器端中同时存在多个会话并行地对数据库中的待扫描数据进行更新,其中该数据更新的方法包括:步骤S11、步骤S12和步骤S13,具体包括:
首先,所述步骤S11获取数据更新请求,并根据该数据更新请求发起对应的会话;
接着,所述步骤S12为所述会话确定待扫描数据中对应的数据扫描起点位置,其中,所述会话中的至少两个不同的会话对应所述待扫描数据中不同的数据扫描起点位置,使得不同的会话从所述待扫描数据中的不同的数据扫描起点位置开始扫描,并在所述待扫描数据中扫描出满足所述数据更新请求的数据,避免了不同的会话从同一扫描起点位置开始扫描造成的锁冲突,进而还减少了对待扫描数据中的数据的冗余扫描;例如,待扫描数据中的数据依序排列分别为:数据块1、数据块2、数据块3、……、数据块n,其中n为大于等于1的正整数,若所述会话的个数为2个,分别为会话1和会话2,分别对应的在待扫描数据中的扫描起点位置为数据块5中的数据记录2和数据块8中的数据记录4,使得该会话1和会话2能够从待扫描数据中的不同的起点位置开始扫描,避免了不同的会话从同一扫描起点位置开始扫描造成的锁冲突;又例如,待扫描数据中的数据依序排列分别为:数据块1、数据块2、数据块3、……、数据块n,其中n为大于等于1的正整数,若所述会话的个数为3个,分别为会话1、会话2和会话3,分别对应的在待扫描数据中的扫描起点位置为数据块2中的数据记录2、数据块3中的数据记录4和数据块6中的数据记录1,使得该会话1、会话2和会话3能够从待扫描数据中的不同的起点位置开始扫描,避免了不同的会话从同一扫描起点位置开始扫描造成的锁冲突。
最后,所述步骤S13对满足所述数据更新请求的数据进行更新,达到了所述会话对满足所述数据更新请求的数据进行更新的目的。
本申请一实施例中,所述步骤S11中的为所述会话确定待扫描数据中对应的数据扫描起点位置,包括:在扫描所述待扫描数据时,根据获取的用户提供的扫描提示信息,为所述会话随机确定所述待扫描数据中对应的数据扫描起点位置。其中,所述用户提供的扫描提示信息可以包括在数据库中的服务器端设置的SQL HINT(结构化查询语句提示)、事务参数及会话参数等,来作为当前数据库的服务器端能够使用本申请的数据更新的方法,例如,当服务器端设置有事务参数,则当前事务相关的所有SQL就采用本申请提供的数据更新的方法来对待扫描数据进行扫描并更新;又例如,当服务器端设置有会话参数,则当前的会话采用本申请提供的数据更新的方法来对待扫描数据进行扫描并更新,在所述步骤S12和所述步骤S13之前,需要根据获取的用户提供的扫描提示信息(例如SQL HINT、事务参数或会话参数等),随机地在该待扫描数据中为会话确定对应的数据扫描起点位置,实现对所述数据扫描起点位置的随机确定。
本申请一实施例中,所述待扫描数据中的数据依序排列;所述步骤S12中的会话从所述数据扫描起点位置开始,在所述待扫描数据中扫描出满足所述数据更新请求的数据,包括:所述会话从所述数据扫描起点位置开始,在所述待扫描数据中分别按数据排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据,能够使所述会话扫描到所述待扫描数据中的所有数据,进而避免了所述会话对待扫描数据中的数据的扫描遗漏。
需要说明的是,所述轮询扫描是指往待扫描数据的数据排列顺序的正序和/或逆序两个方向,先正序扫一条数据之后再逆序扫一条数据(或,先逆序扫一条数据之后再正序扫一条数据),依此两个方向轮询扫描。例如,超市结账处有结账通道20-结账通道44,从起点结账通道32开始,若始结账通道32有顾客在结账中,则继续扫描结账通道31,若始结账通道31有顾客在结账中,则继续扫描结账通道33,若始结账通道33有顾客在结账中,则继续扫描结账通道30,若始结账通道30有顾客在结账中,则继续扫描结账通道34,按照上述两个方向进行轮询扫描,直至找到对应的结账通道。
在本申请的一实施例中,所述待扫描数据存储于堆表中或双向链表中,即存储于堆表中或双向链表中的该待扫描数据中的数据是有相邻位置关系或相邻排序顺序的。下面以所述待扫描数据存储于堆表中为例,对所述步骤S11至所述步骤S13进行说明。
本申请一实施例中,如图2所示,所述待扫描数据存储于堆表中,该堆表中的数据依序排列,例如待扫描数据中的数据依序排列分别为:数据块1、数据块2、数据块3、……、数据块n,所述步骤S11在数据库中同时获取到来自用户设备(例如应用程序app)并发的数据更新请求(例如数据库中的SQL请求),所述步骤S11根据数据更新请求发起会话,不同的数据更新请求发起对应的会话,则有会话1、会话2及会话m;接着若在所述步骤S12中,为会话1确定的待扫描数据(堆表)中对应的数据扫描起点位置为数据块2,为会话2确定的待扫描数据(堆表)中对应的数据扫描起点位置为数据块4,则会话1从数据块2开始扫描,扫描完数据块2之后,接着扫描数据块3,若在数据块3中也没有扫描到满足所述会话1对应的数据更新请求的数据,则接着扫描数据块1,重复分别按照数据排列的正序(数据块2、数据块3、……数据块n)和逆序(数据块2、数据块1)两个方向轮询扫描出,直至扫描到满足所述会话1对应的数据更新请求的数据,通过不同的会话从不同的数据扫描起点位置开始,对待扫描数据中的所有数据进行正序和/或逆序两个方向的轮询式扫描,消除了重复冗余扫描待扫描数据中的数据的问题,保证了对待扫描数据的所有数据进行全部扫描,也避免了在扫描过程中的数据的遗漏;最后在所述步骤S13中对满足所述数据更新请求的数据加锁并进行更新后,完成对所述数据的加锁并更新,由于不同的会话扫描到的满足数据更新请求的数据是不同的数据,故也消除了在扫描更新过程中的锁冲突,之后释放所述锁,以使后续会话可以对所述数据进行加锁更新,进而避免该锁的占用和冲突。
本申请一实施例中,所述待扫描数据中包括数据块或数据记录,其中,所述数据块包括数据记录。
本申请的一实施例中,当所述待扫描数据存储于堆表中时,所述待扫描数据中包括数据块及其包括的数据记录,例如堆表中有按序排列的数据块1、数据块2、数据块3及数据块4,其中数据块1中包括数据记录1、数据记录2、数据记录3和数据记录4,数据块2中包括数据记录5、数据记录6、数据记录7和数据记录8,数据块3中包括数据记录9、数据记录10、数据记录11和数据记录12,数据块4中包括数据记录13、数据记录14、数据记录15和数据记录16;或,所述待扫描数据中包括数据记录,例如堆表中有按序排列的数据记录1、数据记录2、数据记录3、数据记录4、数据记录5、数据记录6、数据记录7、数据记录8、数据记录9、数据记录10、数据记录11、数据记录12、数据记录13、数据记录14、数据记录15和数据记录16。保证了存储于堆表中的待扫描数据中的数据是依序排列的,进而能够使得不同的会话能够从不同的数据扫描起点位置开始,从堆表中的待扫描数据中的数据的正序和/或逆序两个方面轮询扫描,使得扫描过程中避免了对待扫描数据中的数据的冗余扫描,进而解决了冗余扫描导致的CPU冗余开销和IO冗余开销,进一步地还能够有序且没有遗漏的对待扫描数据进行扫描,以得到满足会话对应的数据更新请求的数据。
本申请一实施例中,所述待扫描数据中包括所述数据记录时,所述数据扫描起点位置包括数据记录扫描起点位置;
所述步骤S12中的会话从数据扫描起点位置开始,在所述待扫描数据中分别按数据排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据,包括:
所述会话从数据记录扫描起点位置开始,在所述待扫描数据中分别按数据记录排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据记录。
本申请一实施例中,当存储于所述堆表中的所述待扫描数据中包括所述数据记录时,若所述待扫描数据中的依序排列的数据分别为数据记录1、数据记录2、数据记录3、数据记录4、……、数据记录99、数据记录100,所述步骤S11同时获取了3个数据更新请求,并根据该3个数据更新请求发起对应的会话1、会话2和会话3,根据数据会话请求为对应的会话在所述待扫描数据中确定对应的数据扫描起点位置,若会话1对应在所述待扫描数据中随机的选取的对应的数据扫描起点位置为数据记录扫描起点位置20,会话2对应在所述待扫描数据中随机的选取的对应的数据扫描起点位置为数据记录扫描起点位置45,及会话3对应在所述待扫描数据中随机的选取的对应的数据扫描起点位置为数据记录扫描起点位置86,则所述步骤S12分别将所述会话1从数据记录20开始,在所述待扫描数据中分别按照数据记录排列的正序(例如数据记录20、数据记录21、……、数据记录100)和逆序(例如数据记录19、数据记录18、……、数据记录1)两个方向轮询扫描,即会话1从数据记录20开始,若数据记录20不满足会话1对应的数据更新请求的数据记录,则再扫描数据记录19,若数据记录19仍不满足会话1对应的数据更新请求的数据记录,继续扫描数据记录21,若数据记录21仍不满足会话1对应的数据更新请求的数据记录,依以轮询扫描方式继续扫描待扫描数据中的所有数据记录,当扫描至数据记录1时仍不满足会话1对应的数据更新请求的数据记录,则继续扫描数据记录40,若数据记录40仍不满足会话1对应的数据更新请求的数据记录,且在所述待扫描数据中按照逆序进行扫描已经扫描至数据记录1没有可以扫描的数据记录了,故此时按照数据记录排列的正序方向继续扫描数据记录41及之后的所有数据记录,直至扫描到满足会话1对应的数据更新请求的数据记录;依照上述会话1从数据扫描起点位置(例如数据记录20)开始,在待扫描数据中按照数据记录排列的正序和/或逆序两个方向轮询扫描的扫描方式,会话2和会话3分别从对应的数据记录45和数据记录86开始,亦在待扫描数据记录中照数据记录排列的正序和/或逆序两个方向轮询扫描的上述扫描方式,直至会话2在待扫描数据中扫描到会话2对应的数据更新请求的数据,和会话3在待扫描数据中扫描到会话3对应的数据更新请求的数据,由于不同的会话对应以待扫描数据中的不同的数据记录作为数据记录扫描起点位置,消除了会话1至会话3并行扫描时可能出现的冗余扫描,又由于会话1至会话3分别对应的数据更新请求的数据记录不同,进而也消除了锁冲突的问题,避免了不同的会话同时都需要对同一数据记录进行加锁并更新的操作。
本申请一实施例中,所述待扫描数据中包括所述数据块时,所述数据扫描起点位置包括数据块扫描起点位置和每个数据块中的数据记录扫描起点位置;
所述步骤S12中的会话从所述数据扫描起点位置开始,在所述待扫描数据中分别按数据排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据,包括:
所述会话从所述数据块扫描起点位置开始,在所述待扫描数据中分别按数据块排列的正序和/或逆序两个方向轮询扫描数据块,其中,所述会话从数据块中的所述数据记录扫描起点位置开始,在数据块中分别按数据记录排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据记录。
本申请的一实施例中,当存储于所述堆表中的所述待扫描数据中包括所述数据块时,其中所述数据块包括数据记录,若存储于堆表中的所述待扫描数据中的依序排列的数据块分别为数据块1、数据块2、数据块3及数据块4,其中,若所述数据块1中对应的数据记录有{数据记录1、数据记录1、……、数据记录10},数据块2中对应的数据记录有{数据记录11、数据记录12、……、数据记录20},数据块3中对应的数据记录有{数据记录21、数据记录22、……、数据记录30},数据块4中对应的数据记录有{数据记录31、数据记录32、……、数据记录40},若所述步骤S11同时获取了2个数据更新请求,并根据该2个数据更新请求发起对应的会话1和会话2,根据数据会话请求为对应的会话在所述待扫描数据中确定对应的数据块扫描起点位置及对应的数据记录扫描起点位置;若所述步骤S11为会话1对应在所述待扫描数据中随机的选取的对应的数据扫描起点位置为数据块扫描起点位置2及数据块2中的数据记录扫描起点位置15,为会话2对应在所述待扫描数据中随机的选取的对应的数据扫描起点位置为数据块扫描起点位置3及数据块3中的数据记录扫描起点位置26,使得不同的会话对应待扫描数据中的不同的数据扫描起点位置,消除了不同的会话对待扫描数据中的数据的冗余扫描,减少会话开始扫描时可能导致的锁冲突。
接着本申请的上述实施例,所述步骤S12中的会话1和会话2同时并行在存储于堆表中的待扫描数据中进行扫描,其中,所述会话1将从数据块扫描起点位置2开始,并从所述数据块扫描起点位置2中的数据记录扫描起点位置15开始,在数据块扫描起点位置2中分别按照数据排列的正序(例如数据记录15、数据记录16、……、数据记录20)和逆序(例如数据记录14、数据记录13、……、数据记录1)两个方向轮询扫描,若在数据块扫描起点位置2中没有扫描到满足会话1对应的数据更新请求的数据记录,则按照数据块排列的正序(例如数据块2、数据块3、数据块4)和逆序(例如数据块1)两个方向轮询扫描数据块,即继续从数据块1中的数据记录扫描起点位置6开始,按照数据块1中的数据记录的正序和/或逆序两个方面轮询扫描,若在数据块1中仍没有扫描到满足会话1对应的数据更新请求中的数据记录,则继续从数据块3中的数据记录扫描起点位置26开始扫描,依此轮询扫描方式继续扫描待扫描数据,直至扫描到满足会话1对应的数据更新请求中的数据记录,实现为会话1找到满足数据更新请求的数据记录。
接着本申请的上述实施例,依照上述会话1从数据块扫描起点位置(例如数据块2)开始,在待扫描数据中按照数据记录排列的正序和/或逆序两个方向轮询扫描的扫描方式,且从数据块扫描起点位置中的数据记录扫描起点位置(例如数据记录扫描起点位置15)开始,按照数据记录排列的正序和/或逆序两个方向轮询扫描的扫描方式,会话2亦按照会话1的轮询扫描方式,从会话2对应的数据块扫描起点位置3开始,并从数据块扫描起点位置中的数据记录扫描起点位置26开始,分别从数据块和数据记录的正序和/或逆序另个方向扫描待扫描数据,直至扫描到满足会话2对应的数据更新请求的数据记录。由于不同的会话对应以待扫描数据中的不同的数据块中的不同的数据记录,或同一数据块中的不同的数据记录,来作为数据扫描起点位置,消除了会话1和会话2并行扫描时可能出现的冗余扫描,又由于会话1和会话2分别对应的数据更新请求的数据记录不同,进而也消除了锁冲突的问题,避免了不同的会话同时都需要对同一数据记录进行加锁并更新的操作。
本申请一实施例中,所述步骤S12中的为所述会话确定待扫描数据中对应的数据扫描起点位置,所述会话从所述数据扫描起点位置开始,在所述待扫描数据中扫描出满足所述数据更新请求的数据,包括:
在待扫描数据中确定满足所述数据更新请求的扫描范围的;
为所述会话确定所述扫描范围内对应的数据扫描起点位置;
所述会话从所述数据扫描起点位置开始,在所述扫描范围内扫描出满足所述数据更新请求的数据。
本申请一实施例中,所述在待扫描数据中确定的满足所述数据更新请求的扫描范围内的数据存储于索引树中,如图3所示,按照存储于堆表中的待扫描数据中的数据块中的按序排列的数据创建索引,得到存储于堆表中的待扫描数据中的所有数据的存储位置对应的索引树,其中,该索引树的叶子节点按序排列且记录所述数据在堆表中的存储位置及其对应的按序排列的数据的数据序列号,若该待扫描数据中的数据较少时,则索引树只有三层,包括存储按序排列的所有数据的存储位置及其对应的数据序列号,叶子节点的上层节点为分支节点,该分支节点存储该叶子节点的数据序列号的最值及该最值所属的分支节点,分支节点的上层节点为根节点,该根节点存储其下层的分支节点中的数据序列号的最值及其对应的分支节点;若存储于堆表中的待扫描数据较多时,则该索引树包括至少三层,并按照上述创建索引树的方法得到对应索引树。
本申请一实施例中,如图3所示,其中,分支节点之间的双箭头和叶子节点之间的双箭头均表示会话可以从某一分支节点或某一叶子节点或者某一分支节点中的某一叶子节点开始,在带扫描数据中分别按数据排列的正序和逆序两个方向轮询扫描出满足数据更新请求的数据,例如:若从某一分支节点M中的叶子节点P开始扫描,在所有带扫描的数据中可以分别按数据排列的正序(分支节点M中的叶子节点P+1、分支节点M叶子节点P+2、……、分支节点M叶子节点n、分支节点M+1叶子节点1、分支节点M+1叶子节点2、……直至分支节点n叶子节点n)和逆序(分支节点M中的叶子节点P-1、分支节点M叶子节点P-2、……、分支节点M叶子节点1、分支节点M-1叶子节点n、分支节点M-1叶子节点n-2、……直至分支节点1叶子节点1)两个方向轮询扫描,2得到满足数据更新请求的数据。
接着上述实施例,如图3中所示:当所述步骤S11中获取2个数据更新请求,分别为数据更新请求1和数据更新请求2,根据数据更新请求分别发起对应的会话1和会话2;接着所述步骤S12根据数据更新请求1在所述待扫描数据中为会话1确定满足数据更新请求1的扫描范围(例如会话1对应的扫描范围为分支节点1内的叶子节点5至叶子节点20),接着在所述扫描范围内为会话1随机确定对应的数据扫描起点位置(例如分支节点1下对应的叶子节点14),接着,所述步骤S12从所述数据扫描起点位置分支节点1下对应的叶子节点14开始,按照分支节点1下的叶子节点按序排列的正序(叶子节点14、叶子节点15、……、叶子节点20)和逆序(叶子节点13、叶子节点12、……、叶子节点1)两个方向轮询扫描该扫描范围内的所有叶子节点,即从所述数据扫描起点位置叶子节点14开始,若基于所述叶子节点14中记录的存储位置,在堆表中找不到满足所述数据更新请求1的数据,则继续先扫描所述数据扫描起点位置叶子节点14的正序的上一叶子节点13中记录的存储位置;若在叶子节点13中仍没有找到满足所述数据更新请求1的数据,则再扫描所述数据扫描起点位置叶子节点14的逆序的下一叶子节点15中记录的存储位置,若在叶子节点15中仍没有找到满足所述数据更新请求1的数据,重复上述轮询扫描步骤,直至基于叶子节点中的存储位置在所述堆表中找到满足所述数据更新请求1的数据;其中并行进行扫描的会话2从其对应的扫描范围数据扫描起点位置分支节点3中的对应的叶子节点n开始,依照上述会话1的按照扫描单位内的正序和/或逆序两个方向轮询扫描的方式,直至在会话2对应的扫描范围内的叶子节点中,扫描到其叶子节点中记录的存储位置在所述堆表中能够找到满足所述数据更新请求2的数据,通过确定的满足所述数据更新请求的扫描范围,以及上述会话1和会话2的轮询扫描方式,提高了会话快速地能够确定待扫描数据的扫描范围,进而在扫描范围内能够有效地快速地扫描出满足数据更新请求的数据,进而在所述步骤S13中,对快速扫描到的满足数据更新请求的数据加锁并进行更新,完成对所述数据的更新操作,之后释放所述锁,以便后续会话能够对该数据进行相应的加锁并更新。
接着本申请的上述实施例,由于不同的会话对应以待扫描数据中的不同的扫描范围,使得不同的会话能够尽快地查找到可能满足数据更新请求的数据的扫描范围,以提高扫描速度;又由于不同的会话在不同的扫描范围内随机的选取不同的数据扫描起点位置,或不同的会话在相同的扫描范围内随机的选取不同的数据扫描起点位置,并基于不同的会话对应的数据扫描起点位置按照数据的正序和/或逆序两个方向进行轮询扫描,消除了会话1和会话2并行扫描时可能出现的冗余扫描,进而节省了会话冗余扫描时对应的CPU负担及IO资源,又由于会话1和会话2分别选取的数据扫描起点位置以及会话1与会话2分别满足的数据更新请求的数据不同,进而也消除了锁冲突的问题,避免了不同的会话同时都需要对同一数据进行加锁并更新的操作。
接着上述所有实施例,本申请上述实施例中的所述步骤S13对满足所述数据更新请求的数据进行更新,包括:对满足所述数据更新请求的数据加锁并进行更新;释放所述锁,不仅实现了所述会话对满足所述数据更新请求的数据进行更新,还在对所述数据更新之后释放所述锁,以使后续会话能够对所述数据进行相应的操作。
图4根据本申请提供了一种数据操作设备的结构示意图,该设备适用于数据库中的服务器端,该服务器端中同时存在多个会话并行地对数据库中的待扫描数据进行更新,其中该数据更新的设备包括获取装置11、扫描装置12和更新装置13,具体包括:
首先,所述获取装置11用于获取数据更新请求,并根据该数据更新请求发起对应的会话;
接着所述扫描装置12用于:为所述会话确定待扫描数据中对应的数据扫描起点位置,其中,所述会话中的至少两个不同的会话对应所述待扫描数据中不同的数据扫描起点位置,使得不同的会话从所述待扫描数据中的不同的数据扫描起点位置开始扫描,并在所述待扫描数据中扫描出满足所述数据更新请求的数据,避免了不同的会话从同一扫描起点位置开始扫描造成的锁冲突,进而还减少了对待扫描数据中的数据的冗余扫描;例如,待扫描数据中的数据依序排列分别为:数据块1、数据块2、数据块3、……、数据块n,其中n为大于等于1的正整数,若所述会话的个数为2个,分别为会话1和会话2,分别对应的在待扫描数据中的扫描起点位置为数据块5中的数据记录2和数据块8中的数据记录4,使得该会话1和会话2能够从待扫描数据中的不同的起点位置开始扫描,避免了不同的会话从同一扫描起点位置开始扫描造成的锁冲突;又例如,待扫描数据中的数据依序排列分别为:数据块1、数据块2、数据块3、……、数据块n,其中n为大于等于1的正整数,若所述会话的个数为3个,分别为会话1、会话2和会话3,分别对应的在待扫描数据中的扫描起点位置为数据块2中的数据记录2、数据块3中的数据记录4和数据块6中的数据记录1,使得该会话1、会话2和会话3能够从待扫描数据中的不同的起点位置开始扫描,避免了不同的会话从同一扫描起点位置开始扫描造成的锁冲突。
最后,所述更新装置13用于:对满足所述数据更新请求的数据进行更新,达到了所述会话对满足所述数据更新请求的数据进行更新的目的。
本申请一实施例中,所述获取装置用于:在扫描所述待扫描数据时,根据获取的用户提供的扫描提示信息,为所述会话随机确定所述待扫描数据中对应的数据扫描起点位置。其中,所述用户提供的扫描提示信息可以包括在数据库中的服务器端设置的SQL HINT(结构化查询语句提示)、事务参数及会话参数等,来作为当前数据库的服务器端能够使用本申请的数据更新的方法,例如,当服务器端设置有事务参数,则当前事务相关的所有SQL就采用本申请提供的数据更新的方法来对待扫描数据进行扫描并更新;又例如,当服务器端设置有会话参数,则当前的会话采用本申请提供的数据更新的方法来对待扫描数据进行扫描并更新,在执行所述扫描装置12和更新装置13的步骤之前,所述获取装置11需要根据获取的用户提供的扫描提示信息(例如SQL HINT、事务参数或会话参数等),随机地在该待扫描数据中为会话确定对应的数据扫描起点位置,实现对所述数据扫描起点位置的随机确定。
本申请一实施例中,所述扫描装置12用于:会话从所述数据扫描起点位置开始,在所述待扫描数据中分别按数据排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据,能够使所述会话扫描到所述待扫描数据中的所有数据,进而避免了所述会话对待扫描数据中的数据的扫描遗漏。
需要说明的是,所述轮询扫描是指往待扫描数据的数据排列顺序的正序和/或逆序两个方向,先正序扫一条数据之后再逆序扫一条数据(或,先逆序扫一条数据之后再正序扫一条数据),依此两个方向轮询扫描。例如,超市结账处有结账通道20-结账通道44,从起点结账通道32开始,若始结账通道32有顾客在结账中,则继续扫描结账通道31,若始结账通道31有顾客在结账中,则继续扫描结账通道33,若始结账通道33有顾客在结账中,则继续扫描结账通道30,若始结账通道30有顾客在结账中,则继续扫描结账通道34,按照上述两个方向进行轮询扫描,直至找到对应的结账通道。
在本申请的一实施例中,所述待扫描数据存储于堆表中或双向链表中,即存储于堆表中或双向链表中的该待扫描数据中的数据是有相邻位置关系或相邻排序顺序的。下面以所述待扫描数据存储于堆表中为例,对所述获取装置11至所述更新装置13中的执行过程进行说明。
本申请一实施例中,如图2所示,所述待扫描数据存储于堆表中,该堆表中的数据依序排列,例如待扫描数据中的数据依序排列分别为:数据块1、数据块2、数据块3、……、数据块n,所述获取装置11在数据库中同时获取到来自用户设备(例如应用程序app)并发的数据更新请求(例如数据库中的SQL请求),所述获取装置11根据数据更新请求发起会话,不同的数据更新请求发起对应的会话,则有会话1、会话2及会话m;接着若在所述扫描装置12中,为会话1确定的待扫描数据(堆表)中对应的数据扫描起点位置为数据块2,为会话2确定的待扫描数据(堆表)中对应的数据扫描起点位置为数据块4,则会话1从数据块2开始扫描,扫描完数据块2之后,接着扫描数据块3,若在数据块3中也没有扫描到满足所述会话1对应的数据更新请求的数据,则接着扫描数据块1,重复分别按照数据排列的正序(数据块2、数据块3、……数据块n)和逆序(数据块2、数据块1)两个方向轮询扫描出,直至扫描到满足所述会话1对应的数据更新请求的数据,通过不同的会话从不同的数据扫描起点位置开始,对待扫描数据中的所有数据进行正序和/或逆序两个方向的轮询式扫描,消除了重复冗余扫描待扫描数据中的数据的问题,保证了对待扫描数据的所有数据进行全部扫描,也避免了在扫描过程中的数据的遗漏;最后在所述更新装置13中对满足所述数据更新请求的数据加锁并进行更新后,完成对所述数据的加锁并更新,由于不同的会话扫描到的满足数据更新请求的数据是不同的数据,故也消除了在扫描更新过程中的锁冲突,之后释放所述锁,以使后续会话可以对所述数据进行加锁更新,进而避免该锁的占用和冲突。
本申请一实施例中,所述待扫描数据中包括数据块或数据记录,其中,所述数据块包括数据记录。
本申请的一实施例中,当所述待扫描数据存储于堆表中时,所述待扫描数据中包括数据块及其包括的数据记录,例如堆表中有按序排列的数据块1、数据块2、数据块3及数据块4,其中数据块1中包括数据记录1、数据记录2、数据记录3和数据记录4,数据块2中包括数据记录5、数据记录6、数据记录7和数据记录8,数据块3中包括数据记录9、数据记录10、数据记录11和数据记录12,数据块4中包括数据记录13、数据记录14、数据记录15和数据记录16;或,所述待扫描数据中包括数据记录,例如堆表中有按序排列的数据记录1、数据记录2、数据记录3、数据记录4、数据记录5、数据记录6、数据记录7、数据记录8、数据记录9、数据记录10、数据记录11、数据记录12、数据记录13、数据记录14、数据记录15和数据记录16。保证了存储于堆表中的待扫描数据中的数据是依序排列的,进而能够使得不同的会话能够从不同的数据扫描起点位置开始,从堆表中的待扫描数据中的数据的正序和/或逆序两个方面轮询扫描,使得扫描过程中避免了对待扫描数据中的数据的冗余扫描,进而解决了冗余扫描导致的CPU冗余开销和IO冗余开销,进一步地还能够有序且没有遗漏的对待扫描数据进行扫描,以得到满足会话对应的数据更新请求的数据。
本申请一实施例中,所述待扫描数据中包括所述数据记录时,所述数据扫描起点位置包括数据记录扫描起点位置;
所述扫描装置12用于:
所述会话从数据记录扫描起点位置开始,在所述待扫描数据中分别按数据记录排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据记录。
本申请一实施例中,当存储于所述堆表中的所述待扫描数据中包括所述数据记录时,若所述待扫描数据中的依序排列的数据分别为数据记录1、数据记录2、数据记录3、数据记录4、……、数据记录99、数据记录100,所述获取装置11同时获取了3个数据更新请求,并根据该3个数据更新请求发起对应的会话1、会话2和会话3,根据数据会话请求为对应的会话在所述待扫描数据中确定对应的数据扫描起点位置,若会话1对应在所述待扫描数据中随机的选取的对应的数据扫描起点位置为数据记录扫描起点位置20,会话2对应在所述待扫描数据中随机的选取的对应的数据扫描起点位置为数据记录扫描起点位置45,及会话3对应在所述待扫描数据中随机的选取的对应的数据扫描起点位置为数据记录扫描起点位置86,则所述扫描装置12分别将所述会话1从数据记录20开始,在所述待扫描数据中分别按照数据记录排列的正序(例如数据记录20、数据记录21、……、数据记录100)和/或逆序(例如数据记录19、数据记录18、……、数据记录1)两个方向轮询扫描,即会话1从数据记录20开始,若数据记录20不满足会话1对应的数据更新请求的数据记录,则再扫描数据记录19,若数据记录19仍不满足会话1对应的数据更新请求的数据记录,继续扫描数据记录21,若数据记录21仍不满足会话1对应的数据更新请求的数据记录,依以轮询扫描方式继续扫描待扫描数据中的所有数据记录,当扫描至数据记录1时仍不满足会话1对应的数据更新请求的数据记录,则继续扫描数据记录40,若数据记录40仍不满足会话1对应的数据更新请求的数据记录,且在所述待扫描数据中按照逆序进行扫描已经扫描至数据记录1没有可以扫描的数据记录了,故此时按照数据记录排列的正序方向继续扫描数据记录41及之后的所有数据记录,直至扫描到满足会话1对应的数据更新请求的数据记录;依照上述会话1从数据扫描起点位置(例如数据记录20)开始,在待扫描数据中按照数据记录排列的正序和/或逆序两个方向轮询扫描的扫描方式,会话2和会话3分别从对应的数据记录45和数据记录86开始,亦在待扫描数据记录中照数据记录排列的正序和/或逆序两个方向轮询扫描的上述扫描方式,直至会话2在待扫描数据中扫描到会话2对应的数据更新请求的数据,和会话3在待扫描数据中扫描到会话3对应的数据更新请求的数据,由于不同的会话对应以待扫描数据中的不同的数据记录作为数据记录扫描起点位置,消除了会话1至会话3并行扫描时可能出现的冗余扫描,又由于会话1至会话3分别对应的数据更新请求的数据记录不同,进而也消除了锁冲突的问题,避免了不同的会话同时都需要对同一数据记录进行加锁并更新的操作。
本申请一实施例中,所述待扫描数据中包括所述数据块时,所述数据扫描起点位置包括数据块扫描起点位置和每个数据块中的数据记录扫描起点位置;
所述扫描装置12用于:
所述会话从所述数据块扫描起点位置开始,在所述待扫描数据中分别按数据块排列的正序和/或逆序两个方向轮询扫描数据块,其中,所述会话从数据块中的所述数据记录扫描起点位置开始,在数据块中分别按数据记录排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据记录。
本申请的一实施例中,当存储于所述堆表中的所述待扫描数据中包括所述数据块时,其中所述数据块包括数据记录,若存储于堆表中的所述待扫描数据中的依序排列的数据块分别为数据块1、数据块2、数据块3及数据块4,其中,若所述数据块1中对应的数据记录有{数据记录1、数据记录1、……、数据记录10},数据块2中对应的数据记录有{数据记录11、数据记录12、……、数据记录20},数据块3中对应的数据记录有{数据记录21、数据记录22、……、数据记录30},数据块4中对应的数据记录有{数据记录31、数据记录32、……、数据记录40},若所述获取装置11同时获取了2个数据更新请求,并根据该2个数据更新请求发起对应的会话1和会话2,根据数据会话请求为对应的会话在所述待扫描数据中确定对应的数据块扫描起点位置及对应的数据记录扫描起点位置;若所述获取装置11为会话1对应在所述待扫描数据中随机的选取的对应的数据扫描起点位置为数据块扫描起点位置2及数据块2中的数据记录扫描起点位置15,为会话2对应在所述待扫描数据中随机的选取的对应的数据扫描起点位置为数据块扫描起点位置3及数据块3中的数据记录扫描起点位置26,使得不同的会话对应待扫描数据中的不同的数据扫描起点位置,消除了不同的会话对待扫描数据中的数据的冗余扫描,减少会话开始扫描时可能导致的锁冲突。
接着本申请的上述实施例,所述扫描装置12中的会话1和会话2同时并行在存储于堆表中的待扫描数据中进行扫描,其中,所述会话1将从数据块扫描起点位置2开始,并从所述数据块扫描起点位置2中的数据记录扫描起点位置15开始,在数据块扫描起点位置2中分别按照数据排列的正序(例如数据记录15、数据记录16、……、数据记录20)和/或逆序(例如数据记录14、数据记录13、……、数据记录1)两个方向轮询扫描,若在数据块扫描起点位置2中没有扫描到满足会话1对应的数据更新请求的数据记录,则按照数据块排列的正序(例如数据块2、数据块3、数据块4)和/或逆序(例如数据块1)两个方向轮询扫描数据块,即继续从数据块1中的数据记录扫描起点位置6开始,按照数据块1中的数据记录的正序和/或逆序两个方面轮询扫描,若在数据块1中仍没有扫描到满足会话1对应的数据更新请求中的数据记录,则继续从数据块3中的数据记录扫描起点位置26开始扫描,依此轮询扫描方式继续扫描待扫描数据,直至扫描到满足会话1对应的数据更新请求中的数据记录,实现为会话1找到满足数据更新请求的数据记录。
接着本申请的上述实施例,依照上述会话1从数据块扫描起点位置(例如数据块2)开始,在待扫描数据中按照数据记录排列的正序和/或逆序两个方向轮询扫描的扫描方式,且从数据块扫描起点位置中的数据记录扫描起点位置(例如数据记录扫描起点位置15)开始,按照数据记录排列的正序和/或逆序两个方向轮询扫描的扫描方式,会话2亦按照会话1的轮询扫描方式,从会话2对应的数据块扫描起点位置3开始,并从数据块扫描起点位置中的数据记录扫描起点位置26开始,分别从数据块和数据记录的正序和/或逆序另个方向扫描待扫描数据,直至扫描到满足会话2对应的数据更新请求的数据记录。由于不同的会话对应以待扫描数据中的不同的数据块中的不同的数据记录,或同一数据块中的不同的数据记录,来作为数据扫描起点位置,消除了会话1和会话2并行扫描时可能出现的冗余扫描,又由于会话1和会话2分别对应的数据更新请求的数据记录不同,进而也消除了锁冲突的问题,避免了不同的会话同时都需要对同一数据记录进行加锁并更新的操作。
本申请一实施例中,所述扫描装置12用于:
在待扫描数据中确定满足所述数据更新请求的扫描范围的;
为所述会话确定所述扫描范围内对应的数据扫描起点位置;
所述会话从所述数据扫描起点位置开始,在所述扫描范围内扫描出满足所述数据更新请求的数据。
本申请一实施例中,所述在待扫描数据中确定的满足所述数据更新请求的扫描范围内的数据存储于索引树中,如图3所示,按照存储于堆表中的待扫描数据中的数据块中的按序排列的数据创建索引,得到存储于堆表中的待扫描数据中的所有数据的存储位置对应的索引树,其中,该索引树的叶子节点按序排列且记录所述数据在堆表中的存储位置及其对应的按序排列的数据的数据序列号,若该待扫描数据中的数据较少时,则索引树只有三层,包括存储按序排列的所有数据的存储位置及其对应的数据序列号,叶子节点的上层节点为分支节点,该分支节点存储该叶子节点的数据序列号的最值及该最值所属的分支节点,分支节点的上层节点为根节点,该根节点存储其下层的分支节点中的数据序列号的最值及其对应的分支节点;若存储于堆表中的待扫描数据较多时,则该索引树包括至少三层,并按照上述创建索引树的方法得到对应索引树。
本申请一实施例中,如图3所示,其中,分支节点之间的双箭头和叶子节点之间的双箭头均表示会话可以从某一分支节点或某一叶子节点或者某一分支节点中的某一叶子节点开始,在带扫描数据中分别按数据排列的正序和逆序两个方向轮询扫描出满足数据更新请求的数据,例如:若从某一分支节点M中的叶子节点P开始扫描,在所有带扫描的数据中可以分别按数据排列的正序(分支节点M中的叶子节点P+1、分支节点M叶子节点P+2、……、分支节点M叶子节点n、分支节点M+1叶子节点1、分支节点M+1叶子节点2、……直至分支节点n叶子节点n)和逆序(分支节点M中的叶子节点P-1、分支节点M叶子节点P-2、……、分支节点M叶子节点1、分支节点M-1叶子节点n、分支节点M-1叶子节点n-2、……直至分支节点1叶子节点1)两个方向轮询扫描,2得到满足数据更新请求的数据。
接着上述实施例,如图3中所示:当所述获取装置11中获取2个数据更新请求,分别为数据更新请求1和数据更新请求2,根据数据更新请求分别发起对应的会话1和会话2;接着所述扫描装置12根据数据更新请求1在所述待扫描数据中为会话1确定满足数据更新请求1的扫描范围(例如会话1对应的扫描范围为分支节点1内的叶子节点5至叶子节点20),接着在所述扫描范围内为会话1随机确定对应的数据扫描起点位置(例如分支节点1下对应的叶子节点14),接着,所述扫描装置12从所述数据扫描起点位置分支节点1下对应的叶子节点14开始,按照分支节点1下的叶子节点按序排列的正序(叶子节点14、叶子节点15、……、叶子节点20)和逆序(叶子节点13、叶子节点12、……、叶子节点1)两个方向轮询扫描该扫描范围内的所有叶子节点,即从所述数据扫描起点位置叶子节点14开始,若基于所述叶子节点14中记录的存储位置,在堆表中找不到满足所述数据更新请求1的数据,则继续先扫描所述数据扫描起点位置叶子节点14的正序的上一叶子节点13中记录的存储位置;若在叶子节点13中仍没有找到满足所述数据更新请求1的数据,则再扫描所述数据扫描起点位置叶子节点14的逆序的下一叶子节点15中记录的存储位置,若在叶子节点15中仍没有找到满足所述数据更新请求1的数据,重复上述轮询扫描步骤,直至基于叶子节点中的存储位置在所述堆表中找到满足所述数据更新请求1的数据;其中并行进行扫描的会话2从其对应的扫描范围数据扫描起点位置分支节点3中的对应的叶子节点n开始,依照上述会话1的按照扫描单位内的正序和/或逆序两个方向轮询扫描的方式,直至在会话2对应的扫描范围内的叶子节点中,扫描到其叶子节点中记录的存储位置在所述堆表中能够找到满足所述数据更新请求2的数据,通过确定的满足所述数据更新请求的扫描范围,以及上述会话1和会话2的轮询扫描方式,提高了会话快速地能够确定待扫描数据的扫描范围,进而在扫描范围内能够有效地快速地扫描出满足数据更新请求的数据,进而在所述更新装置13中,对快速扫描到的满足数据更新请求的数据加锁并进行更新,完成对所述数据的更新操作,之后释放所述锁,以便后续会话能够对该数据进行相应的加锁并更新。
接着本申请的上述实施例,由于不同的会话对应以待扫描数据中的不同的扫描范围,使得不同的会话能够尽快地查找到可能满足数据更新请求的数据的扫描范围,以提高扫描速度;又由于不同的会话在不同的扫描范围内随机的选取不同的数据扫描起点位置,或不同的会话在相同的扫描范围内随机的选取不同的数据扫描起点位置,并基于不同的会话对应的数据扫描起点位置按照数据的正序和/或逆序两个方向进行轮询扫描,消除了会话1和会话2并行扫描时可能出现的冗余扫描,进而节省了会话冗余扫描时对应的CPU负担及IO资源,又由于会话1和会话2分别选取的数据扫描起点位置以及会话1与会话2分别满足的数据更新请求的数据不同,进而也消除了锁冲突的问题,避免了不同的会话同时都需要对同一数据进行加锁并更新的操作。
综上所述,本申请通过先获取数据更新请求,并根据该数据更新请求发起对应的会话;接着为所述会话确定待扫描数据中对应的数据扫描起点位置,其中,不同的会话对应所述待扫描数据中不同的数据扫描起点位置,使得不同的会话从所述待扫描数据中的不同的数据扫描起点位置开始扫描,并在所述待扫描数据中扫描出满足所述数据更新请求的数据,避免了不同的会话从同一扫描起点位置开始扫描造成的锁冲突,进而还减少了对待扫描数据中的数据的冗余扫描;最后,对满足所述数据更新请求的数据进行更新,达到了所述会话对满足所述数据更新请求的数据进行更新的目的。
进一步地,本申请中的所述待扫描数据中的数据依序排列;则所述会话从所述数据扫描起点位置开始,在所述待扫描数据中扫描出满足所述数据更新请求的数据,包括:所述会话从所述数据扫描起点位置开始,在所述待扫描数据中分别按数据排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据,能够使所述会话扫描到所述待扫描数据中的所有数据,进而避免了所述会话对待扫描数据中的数据的扫描遗漏。
本申请提供的一种应用于购票系统对应的数据库中的服务器端,其中在购票系统中,购票者1、购票者2和购票者3同时并行地向购票系统的同一车次发送各自对应的购票请求,在购票系统所属的服务器端接收到来自上述3个购票者的购票请求后,购票系统基于购票请求发起对应的购票会话,例如购票请求1发起购票会话1,购票请求2发起购票会话2,及购票请求3发起购票会话3,接着,在购票系统对应的数据库中找到未出售的车票(即待扫描数据),该未出售的车票包括车次及其对应的座位信息(例如座位等级、座位序号及座位位置等),同时未出售的车票通过座位序号来体现。根据不同的购票会话对应的购票请求为不同的购票会话确定对应的未出售的车票范围(即扫描范围),例如,购票会话1对应的未出售的车票范围为车次G11中的座位35-座位48,购票会话2对应的未出售的车票范围为车次G11中的座位40-座位87,购票会话3对应的未出售的车票范围为车次G11中的座位44-座位92,接着,为了防止不同的购票会话同时扫描到该车次中的相同的未出售的车票,故继续为不同的购票会话在扫描范围内确定对应的车票扫描起点位置(即数据扫描起点位置),其中,购票会话1确定的车票扫描起点位置为作为座位42,购票会话2确定的车票扫描起点位置为作为座位64,购票会话3确定的车票扫描起点位置为作为座位78,之后,上述3个不同的购票会话并行地从对应的车票扫描起点位置开始,按照未出售的车票的座位序号的排列顺序的正序和/或逆序两个不同的方向进行轮询扫描,使不同的购票会话从不同的未出售的车票对应的座位开始进行扫描,消除了多个购票会话同时扫描一个座位时导致的锁冲突问题,又由于通过未出售的车票的座位序号的排列顺序的正序和/或逆序两个个不同的方向进行轮询扫描,消除了不同的购票会话在扫描过程中出现的冗余扫描,进而避免了冗余扫描导致的CPU资源的冗余消耗和IO资源的冗余浪费;当购票会话2扫描到的满足购票请求2的未出售车牌对应的座位(即数据)为座位71时,对座位71进行加锁并更新座位71的出售状态,此时若购票会话3亦扫描到满足购票请求3的未出售车票对应的座位亦座位71,为了防止发生锁冲突的情况,购票会话选择跳过被加锁的座位71,在直接跳过被加锁的未出售车票对应的座位71继续扫描未出售车票对应的座位70,不仅减少冗余扫描该座位71,还避免在座位71发生锁冲突。当上述3个购票会话均找到各自的购票请求对应的未出售车票对应的座位,则对该未出售车票对应的座位进行加锁并更新该座位的出售状态为已售出,并释放该锁。实现了在购票系统中的数据库中进行并行完成购票的操作。
接着上述所有实施例,本申请上述实施例中的所述更新装置13对满足所述数据更新请求的数据进行更新用于:对满足所述数据更新请求的数据加锁并进行更新;释放所述锁,不仅实现了所述会话对满足所述数据更新请求的数据进行更新,还在对所述数据更新之后释放所述锁,以使后续会话能够对所述数据进行相应的操作。
根据本申请的另一个方面,提供了一种基于计算的设备,其中,该设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
获取数据更新请求,根据数据更新请求发起对应的会话;
为所述会话确定待扫描数据中对应的数据扫描起点位置,所述会话从所述数据扫描起点位置开始,在所述待扫描数据中扫描出满足所述数据更新请求的数据,其中,所述会话中的至少两个不同的会话对应所述待扫描数据中不同的数据扫描起点位置;
对满足所述数据更新请求的数据进行更新。
根据本申请的另一个方面,提供了一种存储可执行指令的非暂态计算机可读存储介质,在所述可执行指令由电子设备执行时,使得所述电子设备:
获取数据更新请求,根据数据更新请求发起对应的会话;
为所述会话确定待扫描数据中对应的数据扫描起点位置,所述会话从所述数据扫描起点位置开始,在所述待扫描数据中扫描出满足所述数据更新请求的数据,其中,所述会话中的至少两个不同的会话对应所述待扫描数据中不同的数据扫描起点位置;
对满足所述数据更新请求的数据进行更新。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

Claims (20)

1.一种数据操作方法,其中,所述方法包括:
获取数据更新请求,根据数据更新请求发起对应的会话;
为所述会话确定待扫描数据中对应的数据扫描起点位置,所述会话从所述数据扫描起点位置开始,在所述待扫描数据中扫描出满足所述数据更新请求的数据,其中,所述会话中的至少两个不同的会话对应所述待扫描数据中不同的数据扫描起点位置;
对满足所述数据更新请求的数据进行更新;
所述为所述会话确定待扫描数据中对应的数据扫描起点位置,包括:
在扫描所述待扫描数据时,根据获取的用户提供的扫描提示信息,为所述会话随机确定所述待扫描数据中对应的数据扫描起点位置;所述用户提供的扫描提示信息包括在数据库中的服务器端设置的结构化查询语句提示、事务参数及会话参数中的至少一种。
2.根据权利要求1所述的方法,其中,所述待扫描数据中的数据依序排列;
所述会话从所述数据扫描起点位置开始,在所述待扫描数据中扫描出满足所述数据更新请求的数据,包括:
所述会话从所述数据扫描起点位置开始,在所述待扫描数据中分别按数据排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据。
3.根据权利要求1或2所述的方法,其中,所述待扫描数据中包括数据块或数据记录,其中,所述数据块包括数据记录。
4.根据权利要求3所述的方法,其中,所述待扫描数据中包括所述数据记录时,所述数据扫描起点位置包括数据记录扫描起点位置;
所述会话从数据扫描起点位置开始,在所述待扫描数据中分别按数据排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据,包括:
所述会话从数据记录扫描起点位置开始,在所述待扫描数据中分别按数据记录排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据记录。
5.根据权利要求3所述的方法,其中,所述待扫描数据中包括所述数据块时,所述数据扫描起点位置包括数据块扫描起点位置和每个数据块中的数据记录扫描起点位置;所述会话从所述数据扫描起点位置开始,在所述待扫描数据中分别按数据排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据,包括:
所述会话从所述数据块扫描起点位置开始,在所述待扫描数据中分别按数据块排列的正序和/或逆序两个方向轮询扫描数据块,其中,所述会话从数据块中的所述数据记录扫描起点位置开始,在数据块中分别按数据记录排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据记录。
6.根据权利要求1所述的方法,其中,为所述会话确定待扫描数据中对应的数据扫描起点位置,所述会话从所述数据扫描起点位置开始,在所述待扫描数据中扫描出满足所述数据更新请求的数据,包括:
在待扫描数据中确定满足所述数据更新请求的扫描范围;
为所述会话确定所述扫描范围内对应的数据扫描起点位置;
所述会话从所述数据扫描起点位置开始,在所述扫描范围内扫描出满足所述数据更新请求的数据。
7.根据权利要求6所述的方法,其中,所述扫描范围内的数据存储于索引树中。
8.根据权利要求1所述的方法,其中,所述待扫描数据存储于堆表中或双向链表中。
9.根据权利要求1所述的方法,其中,所述对满足所述数据更新请求的数据进行更新,包括:
对满足所述数据更新请求的数据加锁并进行更新;
释放所述锁。
10.一种数据操作设备,其中,所述设备包括:
获取装置,用于获取数据更新请求,根据数据更新请求发起对应的会话;
扫描装置,用于为所述会话确定待扫描数据中对应的数据扫描起点位置,所述会话从所述数据扫描起点位置开始,在所述待扫描数据中扫描出满足所述数据更新请求的数据,其中,所述会话中的至少两个不同的会话对应所述待扫描数据中不同的数据扫描起点位置;
更新装置,用于对满足所述数据更新请求的数据进行更新;
所述扫描装置具体用于:
在扫描所述待扫描数据时,根据获取的用户提供的扫描提示信息,为所述会话随机确定所述待扫描数据中对应的数据扫描起点位置;所述用户提供的扫描提示信息包括在数据库中的服务器端设置的结构化查询语句提示、事务参数及会话参数中的至少一种。
11.根据权利要求10所述的设备,其中,所述待扫描数据中的数据依序排列;
所述扫描装置用于:
所述会话从所述数据扫描起点位置开始,在所述待扫描数据中分别按数据排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据。
12.根据权利要求10或11所述的设备,其中,所述待扫描数据中包括数据块或数据记录,其中,所述数据块包括数据记录。
13.根据权利要求12所述的设备,其中,所述待扫描数据中包括所述数据记录时,所述数据扫描起点位置包括数据记录扫描起点位置;
所述扫描装置用于:
所述会话从数据记录扫描起点位置开始,在所述待扫描数据中分别按数据记录排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据记录。
14.根据权利要求12所述的设备,其中,所述待扫描数据中包括所述数据块时,所述数据扫描起点位置包括数据块扫描起点位置和每个数据块中的数据记录扫描起点位置;
所述扫描装置用于:
所述会话从所述数据块扫描起点位置开始,在所述待扫描数据中分别按数据块排列的正序和/或逆序两个方向轮询扫描数据块,其中,所述会话从数据块中的所述数据记录扫描起点位置开始,在数据块中分别按数据排列的正序和/或逆序两个方向轮询扫描出满足所述数据更新请求的数据记录。
15.根据权利要求10所述的设备,其中,所述扫描装置用于:
在待扫描数据中确定满足所述数据更新请求的扫描范围的;
为所述会话确定所述扫描范围内对应的数据扫描起点位置;
所述会话从所述数据扫描起点位置开始,在所述扫描范围内扫描出满足所述数据更新请求的数据。
16.根据权利要求15所述的设备,其中,所述扫描范围内的数据存储于索引树中。
17.根据权利要求10所述的设备,其中,所述待扫描数据存储于堆表中或双向链表中。
18.根据权利要求10所述的设备,其中,所述更新装置用于:
对满足所述数据更新请求的数据加锁并进行更新;
释放所述锁。
19.一种基于计算的设备,其中,该设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
获取数据更新请求,根据数据更新请求发起对应的会话;
为所述会话确定待扫描数据中对应的数据扫描起点位置,所述会话从所述数据扫描起点位置开始,在所述待扫描数据中扫描出满足所述数据更新请求的数据,其中,所述会话中的至少两个不同的会话对应所述待扫描数据中不同的数据扫描起点位置;
对满足所述数据更新请求的数据进行更新;
所述为所述会话确定待扫描数据中对应的数据扫描起点位置,包括:
在扫描所述待扫描数据时,根据获取的用户提供的扫描提示信息,为所述会话随机确定所述待扫描数据中对应的数据扫描起点位置;所述用户提供的扫描提示信息包括在数据库中的服务器端设置的结构化查询语句提示、事务参数及会话参数中的至少一种。
20.一种存储可执行指令的非暂态计算机可读存储介质,在所述可执行指令由电子设备执行时,使得所述电子设备:
获取数据更新请求,根据数据更新请求发起对应的会话;
为所述会话确定待扫描数据中对应的数据扫描起点位置,所述会话从所述数据扫描起点位置开始,在所述待扫描数据中扫描出满足所述数据更新请求的数据,其中,所述会话中的至少两个不同的会话对应所述待扫描数据中不同的数据扫描起点位置;
对满足所述数据更新请求的数据进行更新;
所述为所述会话确定待扫描数据中对应的数据扫描起点位置,包括:
在扫描所述待扫描数据时,根据获取的用户提供的扫描提示信息,为所述会话随机确定所述待扫描数据中对应的数据扫描起点位置;所述用户提供的扫描提示信息包括在数据库中的服务器端设置的结构化查询语句提示、事务参数及会话参数中的至少一种。
CN201710813987.2A 2017-09-11 2017-09-11 一种数据操作方法及设备 Active CN110069504B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710813987.2A CN110069504B (zh) 2017-09-11 2017-09-11 一种数据操作方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710813987.2A CN110069504B (zh) 2017-09-11 2017-09-11 一种数据操作方法及设备

Publications (2)

Publication Number Publication Date
CN110069504A CN110069504A (zh) 2019-07-30
CN110069504B true CN110069504B (zh) 2023-07-11

Family

ID=67364508

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710813987.2A Active CN110069504B (zh) 2017-09-11 2017-09-11 一种数据操作方法及设备

Country Status (1)

Country Link
CN (1) CN110069504B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030046611A1 (en) * 2001-09-04 2003-03-06 Igor Muttik Data scanning for updatable predefined properties
CN101833282A (zh) * 2010-04-30 2010-09-15 林定伟 一种人工智能控制系统及人工智能控制方法
CN105335475A (zh) * 2015-09-30 2016-02-17 中国科学院计算技术研究所 一种基于流式数据的局部性非聚簇索引方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030046611A1 (en) * 2001-09-04 2003-03-06 Igor Muttik Data scanning for updatable predefined properties
CN101833282A (zh) * 2010-04-30 2010-09-15 林定伟 一种人工智能控制系统及人工智能控制方法
CN105335475A (zh) * 2015-09-30 2016-02-17 中国科学院计算技术研究所 一种基于流式数据的局部性非聚簇索引方法及系统

Also Published As

Publication number Publication date
CN110069504A (zh) 2019-07-30

Similar Documents

Publication Publication Date Title
CN108648078B (zh) 一种交易预处理方法、装置及电子设备
US8996465B2 (en) Replicating data to a database
US8949535B1 (en) Cache updating
CN107179940B (zh) 一种任务执行的方法及装置
CN113761294B (zh) 数据管理方法、装置、存储介质以及电子设备
EP3082052A1 (en) Distributed data storage method, device and system
CN111291047A (zh) 一种时空数据存储方法、装置、存储介质及电子设备
US7908243B2 (en) Considering transient data also in reports generated based on data eventually stored in a data-warehouse
US20230281061A1 (en) Multi-phase distributed task coordination
CN110381077A (zh) 针对数字证书的处理方法和装置
WO2016101758A1 (zh) 一种跨集群的数据同步方法和装置
US20060229927A1 (en) Resolution of group membership for resources
CN113535226B (zh) 应用下载方法、终端、服务器、计算机设备以及存储介质
CN110069504B (zh) 一种数据操作方法及设备
US20180121487A1 (en) Method and system for committing transactions in a semi-distributed manner
CN111538566A (zh) 镜像文件处理方法、装置、系统、电子设备及存储介质
CN116484137A (zh) 数据还原方法、装置、及电子设备和存储介质
CN112948389B (zh) 基于md5的数据库表数据比对方法及设备
US20180107842A1 (en) Relationship-based image modification
CN114647663A (zh) 一种资源处理方法、装置、系统、电子设备及存储介质
CN112488856B (zh) 一种信息归类方法、设备、电子设备及存储介质
CN110515959B (zh) 数据一致性实现方法、装置及可读存储介质
CN115098043A (zh) 提高对象存储系统可用性的方法及装置
CN111310239B (zh) 一种数字信息批量分发方法、装置及电子设备
CN111324603B (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40010997

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant