CN111309805B - 数据库的数据读写方法及装置 - Google Patents
数据库的数据读写方法及装置 Download PDFInfo
- Publication number
- CN111309805B CN111309805B CN202010077018.7A CN202010077018A CN111309805B CN 111309805 B CN111309805 B CN 111309805B CN 202010077018 A CN202010077018 A CN 202010077018A CN 111309805 B CN111309805 B CN 111309805B
- Authority
- CN
- China
- Prior art keywords
- connection
- node
- read
- tablespace
- table space
- 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
- 238000000034 method Methods 0.000 title claims abstract description 100
- 230000015654 memory Effects 0.000 claims abstract description 112
- 238000012545 processing Methods 0.000 claims abstract description 29
- 230000008569 process Effects 0.000 claims description 42
- 230000005012 migration Effects 0.000 claims description 9
- 238000013508 migration Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 4
- 238000012216 screening Methods 0.000 claims description 4
- 239000000872 buffer Substances 0.000 description 41
- 238000010586 diagram Methods 0.000 description 17
- 238000005192 partition Methods 0.000 description 15
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据库的数据读写方法及装置,属于数据读写技术领域。所述方法包括:与客户端建立第一连接,并确定与第一连接对应的第一表空间,以及确定多个节点中与第一连接或第一表空间对应的第一节点;其中,第一连接接收客户端发送的读写请求;之后,加载第一表空间的数据至第一节点的内存中,并使用第一工作线程对第一连接上的读写请求进行处理,其中,第一工作线程由第一节点中的处理器生成。本申请可以解决数据读写效率较低的问题,提高了数据读写效率,本申请用于数据的读写。
Description
本申请要求于2019年12月13日提交的申请号为201911282832.6、发明名称为“一种数据库高性能架构及设置方法”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及数据读写技术领域,特别涉及一种数据库的数据读写方法及装置。
背景技术
计算机装置是一种数据读写装置,能够支持对数据进行读写操作。计算机装置通常包括处理器、内存和外存,被读写的数据往往是外存中的数据。计算机装置在接收到对外存中的数据的读写请求时,计算机装置需要通过处理器中的工作线程对该读写请求进行处理。比如,工作线程会将该数据从外存中加载至内存中进行读写。
随着科技的发展,包括多个处理器的计算机装置得到了广泛的应用。这种计算机装置可以按照该多个处理器划分为多个节点,每个节点均包括一个处理器和一部分内存。在这种场景下,计算机装置可以通过任一节点中的处理器中的工作线程对该读写请求进行处理。并且,工作线程可以将该读写请求所针对的数据加载至任一节点的内存中进行读写。
但是,在计算机装置划分为多个节点的情况下,节点中的工作线程会经常将数据加载至节点外的内存,从而导致处理器跨节点读写数据。由于跨节点读写数据的效率较低,因此,在计算机装置划分为多个节点的情况下,较难保证较高的数据读写效率。
发明内容
本申请提供了一种数据库的数据读写方法及装置,可以解决数据读写效率较低的问题,所述技术方案如下:
第一方面,提供了一种数据库的数据读写方法,所述方法用于计算机装置,所述计算机装置包括多个节点,所述多个节点中的每个节点包括处理器和内存,所述方法包括:首先,与客户端建立第一连接,该第一连接用于传输客户端发送的读写请求;确定与所述第一连接对应的第一表空间,以及确定所述多个节点中与所述第一连接或所述第一表空间对应的第一节点;其中,所述第一连接接收所述客户端发送的读写请求;之后,可以加载所述第一表空间的数据至所述第一节点的内存中,并使用第一工作线程对所述第一连接上的读写请求进行处理,其中,所述第一工作线程由所述第一节点中的处理器生成。
本申请实施例提供的数据读写方法中,客户端通过第一连接发送的读写请求会大概率的访问第一表空间。客户端与计算机装置在建立第一连接后,客户端需要访问的每个表空间均大概率的是第一表空间。因此,若将第一连接上的读写请求用于访问的表空间中的数据加载至第一节点,且采用第一节点中的第一工作线程对加载至第一节点的读写请求进行读写,则能够大概率的避免跨节点读写数据。
根据第一方面,在本申请一种可能的实现方式中,确定与所述第一连接对应的第一表空间,包括:首先使用初始工作线程对所述第一连接上的读写请求进行响应,并确定所述初始工作线程响应所述第一连接上的读写请求时所访问的表空间;再根据所述初始工作线程响应所述第一连接上的读写请求时所访问的表空间确定与所述第一连接对应的第一表空间。其中,所述初始工作线程运行在所述多个节点中的任一节点中。可以看出,本申请提供的数据读写方法可以根据初始工作线程响应第一连接上的读写请求时所访问的表空间,确定第一连接对应的第一表空间,从而使得第一表空间与第一连接上的读写请求所访问的表空间的关联性较大。
根据第一方面,在本申请另一种可能的实现方式中,所述根据所述初始工作线程响应所述第一连接上的读写请求时所访问的表空间确定与所述第一连接对应的第一表空间,包括:将所述初始工作线程响应所述第一连接上的读写请求的过程中访问的第一个表空间,确定为所述第一表空间;或者,将所述初始工作线程响应所述第一连接上的读写请求的过程中,在预定时长内访问频率最高的表空间,确定为所述第一表空间。
一方面,当计算机装置将上述第一个表空间确定为第一表空间时,计算机装置在使用初始工作线程为第一连接上的读写请求进行响应的过程中,仅需检测该第一连接上的读写请求需要访问的第一个表空间即可,因此计算机装置确定第一表空间的效率较高。另一方面,当计算机装置将上述访问频率最高的表空间确定为第一表空间时,第一表空间是计算机装置基于初始工作线程多次访问表空间的历史情况确定的,因此,确定出的第一表空间较为第一连接上的读写请求需要大概率访问的表空间。
根据第一方面,在本申请另一种可能的实现方式中,在所述使用第一工作线程对所述第一连接上的读写请求进行处理之前,所述方法还包括:确定所述初始工作线程位于所述第一节点之外的节点;将所述初始工作线程迁移至所述第一节点,其中,迁移后的所述初始工作线程为所述第一工作线程。通过对初始工作线程的迁移,使得确定第一表空间之前和确定第一表空间之后,对第一连接上的读写请求进行处理的工作线程一致,便于工作线程的管理。当初始工作线程所在的节点为第一节点时,计算机装置可以确定初始工作线程为第一工作线程即可,而无需对初始工作线程进行迁移。
根据第一方面,在本申请另一种可能的实现方式中,所述确定所述多个节点中与所述第一连接或所述第一表空间对应的第一节点,包括:根据所述第一连接的特征,确定所述第一节点,其中,所述第一连接的特征包括所述客户端的网际互连协议IP地址、使用所述客户端的用户的名称或者所述第一连接对应的应用程序的名称。可以看出,相同特征的连接确定出的第一节点相同,这就保证了同样特征的连接上的读写请求需要访问的表空间能够尽量加载至同一节点,便于后续对该表空间的数据的读写。
根据第一方面,在本申请另一种可能的实现方式中,在所述与客户端建立第一连接之前,所述方法还包括:创建所述第一表空间,其中,所述第一表空间携带第一标识符,所述第一标识符指示所述第一节点;此时,所述确定所述多个节点中与所述第一连接或所述第一表空间对应的第一节点,包括:根据所述第一表空间携带的所述第一标识符确定所述第一节点。在创建的第一表空间携带有第一标识符时,可以直接根据第一表空间携带的第一标识符确定第一节点,从而使确定出第一节点的效率较高。
根据第一方面,在本申请另一种可能的实现方式中,表空间携带的标识符也可以为表空间对应的节点中某一缓冲区的标识符。可以看做是,表空间与节点中的缓冲区存在对应关系。可选地,表空间中的数据可以用于加载至对应的缓冲区,当然表空间中的数据也可以不用于加载至对应的缓冲区,本申请实施例对此不作限定。在表空间携带的标识符为缓冲区的标识符时,计算机装置可以首先确定第一表空间或第一连接对应的第一缓冲区,之后再将第一缓冲区所在的节点确定为第一连接或第一表空间对应的第一节点。将表空间中的数据加载至节点中的缓冲区,能够便于计算机装置对加载至节点中的数据进行有效管理。
根据第一方面,在本申请另一种可能的实现方式中,所述计算机装置包括第一线程池和第二线程池,所述第一线程池中的工作线程用于处理携带所述第一标识符的连接上的读写请求,所述第二线程池中的工作线程用于处理未携带标识符的连接上的读写请求,在所述确定所述多个节点中与所述第一连接或所述第一表空间对应的第一节点之后,所述方法还包括:使所述第一连接携带所述第一标识符。之后,由于第一连接携带有用于指示第一节点的第一标识符,因此计算机装置便可以从第一节点的第一线程池中取出一个空闲工作线程作为第一工作线程,并使用该第一工作线程对第一连接上的读写请求进行响应。在需要使用初始工作线程对第一连接上的读写请求进行响应之前,由于初始工作线程未携带有用于指示任何节点的标识符,因此,计算机装置可以从第二线程池中取出一个空闲线程作为初始工作线程,并采用该初始工作线程对第一连接上的读写请求进行响应。在线程池模式下,计算机装置在采用工作线程响应连接上的读写请求时,需要满足相应地线程池中具有空闲工作线程的条件,从而能够保证计算机装置有序地对多个连接上的读写请求进行处理。
根据第一方面,在本申请另一种可能的实现方式中,计算机装置还可以检测在目标时长内访问第一表空间的工作线程的数量是否小于第一数量阈值,若目标时长内访问第一表空间的工作线程的数量小于第一数量阈值,则计算机装置可以将第一表空间中的全部数据迁移至第二表空间。该第二表空间可以为除第一表空间之外的任一表空间,可选地,在目标时长内访问该第二表空间的工作线程的数量可以大于或等于第一数量阈值。这样一来,计算机装置便将被访问频率较小的第一表空间中的数据迁移至被访问频率较高的第二表空间,从而避免存在被访问频率过低的表空间。
根据第一方面,在本申请另一种可能的实现方式中,计算机装置还可以检测在目标时长内访问第一表空间的工作线程的数量是否大于第二数量阈值,第二数量阈值可以大于上述第一数量阈值。若目标时长内访问第一表空间的工作线程的数量大于第二数量阈值,则计算机装置可以将第一表空间中的至少部分数据迁移至第三表空间。该第三表空间可以为除第一表空间之外的任一表空间,可选地,在目标时长内访问该第三表空间的工作线程的数量可以小于或等于第二数量阈值。这样一来,计算机装置便将被访问频率较高的第一表空间中的至少部分数据迁移至被访问频率较低的第三表空间,从而避免第一表空间被访问频率过高。
根据第一方面,在本申请另一种可能的实现方式中,计算机装置还可以检测多个节点的负载。当确定第一节点的负载高于第一负载阈值,且第二节点的负载低于第二负载阈值时,计算机装置可以通过将第一节点对应的部分表空间的数据迁移至第二节点,并修改所迁移的表空间与节点之间的对应关系,来实现各个节点之间的负载均衡。
第二方面,提供了一种数据库的数据读写装置,所述数据读写装置包括:用于执行第一方面提供的任一种数据读写方法的各个模块。
第三方面,提供了一种计算机装置,所述计算机装置包括:处理器和存储器,所述存储器中存储有程序,所述处理器用于调用所述存储器中存储的程序,以使得所述计算机装置执行如第一方面提供的任一种数据库的数据读写方法。
第四方面,提供了一种计算机存储介质,所述存储介质内存储有计算机程序,当计算机程序在计算机装置上运行时,使该计算机装置执行如第一方面提供的任一种数据库的数据读写方法。
附图说明
图1为本申请实施例提供的一种计算机装置的结构示意图;
图2为本申请实施例提供的另一种计算机装置的结构示意图;
图3为本申请实施例提供的一种数据库的数据读写方法的流程图;
图4为本申请实施例提供的一种表空间与节点的对应关系示意图;
图5A为本申请实施例提供的一种数据读写过程示意图;
图5B为本申请实施例提供的另一种数据库的数据读写方法的流程图;
图6为本申请实施例提供的又一种数据库的数据读写方法的流程图;
图7为本申请实施例提供的另一种数据读写过程示意图;
图8为本申请实施例提供的另一种数据读写过程示意图;
图9为本申请实施例提供的另一种数据读写过程示意图;
图10为本申请实施例提供的另一种数据读写过程示意图;
图11为本申请实施例提供的另一种数据读写过程示意图;
图12为本申请实施例提供的另一种数据读写过程示意图;
图13为本申请实施例提供的另一种数据读写过程示意图;
图14为本申请实施例提供的一种数据库的数据读写装置的框图;
图15为依据本申请的实施例提供的计算机装置700的结构示意图。
具体实施方式
为使本申请的原理、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1为本申请实施例提供的一种计算机装置的结构示意图。计算机装置01可以为服务器或电脑等具有数据读写功能的任意设备。如图1所示,计算机装置01通常包括处理器011、内存012、外存013、总线104和输入/输出(input/output,I/O)接口105。其中,该处理器101、内存102、I/O接口105通过总线104通信连接,I/O接口105还与外存103连接。处理器101能够通过总线104调用内存102中存储的数据。
内存012和外存013均可以为计算机装置01中用于存储数据的结构。内存012也被称为内存储器或主存储器,其作用是用于暂时存放处理器中的运算数据,以及与外存交换的数据。外存013也称为外存储器或辅助存储器,其作用是用于永久存放数据,外存013可以为硬盘、软盘、光盘、U盘等。处理器011能够直接对内存012进行访问,但无法直接对外存013直接进行访问。处理器011在需要访问外存013中的数据时,通常需要先通过I/O接口105和总线104将外存013中的数据加载至内存012,之后处理器011才能访问加载至内存012中的该数据。并且,内存012存储数据的速度快于外存013存储数据的速度,但内存012的容量通常远小于外存013的容量,内存012中存储的数据通常在计算机装置01断电后无法保存,而外存013中存储的数据在计算机装置01断电后仍然能够保存。
计算机装置可以通过数据库来管理外存中的数据,该数据库可以为任一种数据库,比如,磁盘数据库或内存数据库等,本申请实施例对此不作限定。当然,计算机装置也可以不通过数据库来管理外存中的数据,本申请实施例对此不作限定。
示例地,数据库可以包括多个表空间,表空间对应外存中的一部分存储空间,且不同表空间对应的存储空间不同。表空间是一种逻辑存储概念,表空间中的数据实际上存储在表空间对应的存储空间中,且对每个表空间进行数据的读写,相当于是对该表空间在外存中对应的存储空间进行数据的读写。
数据库中存储的数据可以称为表数据,表数据可以包括至少一个页面,可以理解为表数据可以划分为至少一个页面,将该至少一个页面进行拼接,能够得到该表数据。比如,表数据可以记录有某一班级中各个学生的名字、年龄和性别。若该班级的学生分为四组,则该表数据可以包括与这四组学生一一对应的四个页面,每个页面可以包括对应的一组学生的名字、年龄和性别。或者,该表数据可以包括两个页面,其中,一个页面包括该班级中各个学生的名字和年龄,另一个页面包括该班级中各个学生的名字和性别。表数据与页面的关系还可以是其他关系,本申请实施例在此不做赘述。
数据库中的每个表空间可以对应至少一种业务,表空间用于存储对应的业务的数据。各个表空间对应的业务可以相同也可以不同,本申请实施例对此不作限定。
数据库还可以将计算机装置的内存中的某些存储区域命名为缓冲区。计算机装置在对某一表空间中的数据进行读写的过程中,处理器011需要通过其中的工作线程,先将该数据从外存中加载至内存012的缓冲区中,再对加载至内存012的缓冲区中的该数据进行读写。本申请实施例中的缓冲区可以为内存中的全局缓冲区,如系统全局区域(systemglobal area,SGA)管理的全局缓冲区:全局数据页面缓冲区(Data Buffer)、全局日志缓冲区(Log Buffer)、全局执行计划缓冲区(SQL Cache)、全局排序/物化缓冲区(Sort Area)或全局数据字典(元数据)缓冲区(Dictionary Cache)等。
图1所示出的计算机装置01仅包括一个处理器011和一个内存012,进一步地,图2为本申请实施例提供的另一种计算机装置的结构示意图,如图2所示,在图1的基础上,该计算机装置还可以包括多个处理器011和多个内存012,并且,多个处理器011和多个内存012组成多个节点,每个节点包括一个处理器011和一个内存012。
其中,节点也可以称为非一致性内存访问(non uniform memory access,NUMA)节点。每个节点中的处理器011和内存012之间通过总线连接,各个节点的处理器之间通过高速互联总线(比如快速路径互连(quick path interconnect,QPI)总线)连接,且该高速互联总线的传输速率低于节点内处理器和内存之间连接的总线的传输速率。需要说明的是,图2中仅示出了一个节点的处理器与其他节点的处理器的连接关系。
图2中每个节点中的处理器011均可以对外存中的数据进行读写。相关技术中,计算机装置可以通过任一节点的处理器中的工作线程,将表空间中的数据加载至该节点中的内存012,也可以将表空间中的数据加载至其他节点中的内存012。计算机装置在通过某一节点的处理器011的工作线程,将表空间中的数据加载至其他节点的内存012后,该处理器011再通过本地的工作线程读写加载至其他节点的内存012中的数据,就会导致跨节点读写数据的情况发生。
由于跨节点读写数据时需要通过较多总线对数据进行读写,并且,节点间的连接线(如上述高速互联总线)的数据传输速率较低,这样就会导致跨节点读写数据的效率较低,较难保证较高的数据读写效率。
本申请实施例提供了一种数据库的数据读写方法,能够降低跨节点读写数据的概率,提升数据读写的效率。
示例地,图3为本申请实施例提供的一种数据库的数据读写方法的流程图,该数据读写方法可以用于如图2所示的计算机装置。如图3所示,该数据读写方法可以包括:
步骤301、创建至少一个表空间,该至少一个表空间均具有对应的节点。
示例地,计算机装置可以基于表空间的创建指令创建表空间,该表空间的创建指令需要携带该表空间在外存中对应的文件,以便于后续写入该表空间中的数据可以存储在该表空间对应的文件中。
在本申请一种可能的实现方式中,每个表空间对应一种业务,该表空间仅用于存储对应的业务的数据。比如,企业可以为每个员工创建一个表空间,每个员工的表空间均用于存储该员工处理过的数据,这可以看做是该表空间对应的业务为存储该员工处理过的数据。计算机装置可以根据该表空间对应的业务,在计算机装置中筛选一个节点作为该表空间对应的节点。比如,计算机装置可以基于表空间对应的业务的特征,采用哈希(hash)、轮询调度(round-robin)或者其他方式,在计算机装置中筛选该表空间对应的节点。这样一来,对应相同业务的表空间对应的节点相同。示例地,如图4所示,假设表空间1对应业务1,表空间2对应业务2,表空间3对应业务3。计算机装置可以根据业务1的特征,选择节点1作为表空间1对应的节点;根据业务2的特征,选择节点2作为表空间2对应的节点;根据业务3的特征,选择节点3作为表空间3对应的节点。可选地,计算机装置也可以不是基于表空间对应的业务的特征,在计算机装置中筛选表空间对应的节点,比如,计算机装置可以在计算机装置中随机筛选表空间对应的节点,本申请实施例对此不作限定。
计算机装置创建的表空间可以携带有标识符,且该标识符用于指示该表空间对应的节点。相应地,表空间的创建指令也需要携带有标识符。例如,表空间的创建指令可以为create tablespace<spc_numa_x><datafile>numa x。其中,“create tablespace<spc_numa_x>”表示创建表空间<spc_numa_x>,“<spc_numa_x>”表示创建的表空间的名称,<datafile>表示该表空间在外存中对应的文件名,“numa x”为标识符,表示该表空间在计算机装置的多个节点中对应的节点。
进一步地,步骤301中创建的至少一个表空间可以包括:读写表空间和只读表空间,读写表空间支持读操作和写操作,而只读表空间仅支持读操作,且不支持写操作。创建的读写表空间可以对应多个节点中的一个节点,不同读写表空间对应的节点可以相同也可以不同,只读表空间对应多个节点中的全部节点。如图4中的表空间1、2和3均为读写表空间,分别对应一个节点,而表空间4为只读表空间,同时对应节点1、2、3和4。每个表空间中的数据用于加载至对应的节点中,因此,读写表空间只会被加载至一个节点,而只读表空间能够被加载至多个节点中的任一节点。
示例地,上述表空间的创建指令可以为读写表空间的创建指令,只读表空间的创建指令可以为:create tablespace<spc_numa_x><datafile>numa replication。其中,“create tablespace<spc_numa_x>”表示创建表空间<spc_numa_x>,“<spc_numa_x>”表示创建的表空间的名称,<datafile>表示该表空间在外存中对应的文件名,“numareplication”为标识符,该标识符用于表示该表空间对应计算机装置的所有节点。
需要说明的是,本申请实施例中以表空间在被读写时,表空间中的数据用于加载至表空间对应的节点中为例。当然,表空间中的数据也可以不用于加载至表空间对应的节点,本申请实施例对此不作限定。
步骤302、与客户端建立第一连接,其中,该第一连接用于传输客户端发送的读写请求。
在创建上述至少一个表空间之后,计算机装置可以根据客户端发送的连接请求,与客户端建立第一连接。该第一连接可以为任一种通信连接,如传输控制协议(transmission control protocol,TCP)连接、超文本传输协议(hypertext transportprotocol,HTTP)连接等。计算机装置与客户端建立的连接也可以称为会话(session)。
计算机装置能够通过该第一连接接收客户端发送的至少一个读写请求,该至少一个读写请求可以包括访问第一表空间的读写请求。第一连接传输的读写请求均为同一业务的读写请求,且这些读写请求都是访问第一表空间的读写请求,该第一表空间对应的节点可以是根据该业务的特征确定出来的。
步骤303、确定与第一连接对应的第一表空间。
在本申请实施例中,每个表空间对应一种业务,该表空间仅用于存储对应的业务的数据,且不同业务对应的表空间不同。在步骤303中,计算机装置可以将第一连接对应的业务所对应的表空间确定为第一表空间。
步骤304、确定多个节点中与第一表空间对应的第一节点。
如步骤301中所述,计算机装置创建的每个表空间均具有对应的节点,因此,在步骤304中,计算机装置可以获取到表空间与节点的对应关系,并基于该对应关系查找第一表空间对应的第一节点。
其中,计算机装置在步骤301中创建表空间的过程中,可以得到表空间与节点的对应关系。计算机装置可以将该对应关系存储在计算机装置本地,当然也可以存储在计算机装置外部的其他设备上,只要计算机装置在步骤303中能够获取到该对应关系即可。
例如,图4中表空间与节点的对应关系可以如表1所示,表空间1对应节点1,表空间2对应节点2,表空间3对应节点3,表空间4对应节点1、2和3。若第一表空间为表空间3,则在步骤304中,计算机装置可以将表空间3对应的节点3确定为第一节点。
表1
表空间 | 节点 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 1、2、3 |
步骤305、加载第一表空间的数据至第一节点的内存中。
在确定第一表空间和第一节点后,计算机装置可以将第一表空间中的数据加载至第一节点的内存中。
步骤306、使用第一工作线程对第一连接上的读写请求进行处理,其中,第一工作线程由第一节点中的处理器生成。
计算机装置可以使用第一节点中的处理器生成的第一工作线程,固定对第一连接上的读写请求进行处理。并且无论第一连接上会有多少读写请求,均由该第一工作线程进行处理。
本申请实施例中第一表空间中的数据可以被加载至第一节点中,第一连接上的读写请求用于访问第一表空间,且计算机装置能够采用第一节点中的处理器生成的第一工作线程对该读写请求进行处理。这样一来,就使得第一工作线程和被读写的第一表空间中的数据均位于第一节点中,避免了跨节点读写数据,提高了数据读写效率。
示例地,如图5A所示,第一连接上的读写请求1、2、3和4均用于访问第一表空间(表空间1),且第一表空间(表空间1)对应的第一节点为节点1。计算机装置会将表空间1中的数据加载至节点1的内存(内存1)中。在采用节点1中的处理器生成的第一工作线程(线程1)对这些读写请求进行处理的过程中,线程1能够对加载至内存1中的该表空间1中的数据进行读写。可以看出,第一连接上的读写请求用于访问的数据被加载至的内存1与读写该数据的线程1均位于同一节点1上,因此,避免了线程1跨节点读写数据。
在本申请实施例中,每种业务特征的连接传输的读写请求可以仅用于访问该业务特征对应的表空间,且每种业务特征对应的表空间对应计算机装置中的同一节点。比如,假设上述业务特征为客户端的IP地址,每个客户端用于访问其IP地址对应的表空间,且不会对其他客户端的IP地址对应的表空间进行访问。在基于第一连接的特征确定第一节点后,可以认为该第一连接上的每个读写请求用于访问的表空间(如第一表空间)对应的节点均为该第一节点。若将第一连接上的每个读写请求用于访问的表空间中的数据均加载至第一节点,且采用第一节点中的工作线程对加载至第一节点的读写请求进行读写,则能够完全避免跨节点读写数据。
图5B为本申请实施例提供的另一种数据库的数据读写方法的流程图,该数据读写方法可以用于如图2所示的计算机装置。如图5B所示,该数据读写方法可以包括:
步骤501、创建至少一个表空间。
与步骤301不同的是,步骤501中计算机装置创建的表空间不具有对应的节点。
步骤502、与客户端建立第一连接,其中,该第一连接用于传输客户端发送的读写请求。
步骤502可以参考步骤302,本申请实施例在此不做赘述。
步骤503、确定与第一连接对应的第一表空间。
步骤503可以参考步骤303,本申请实施例在此不做赘述。
步骤504、确定多个节点中与第一连接对应的第一节点。
可选地,计算机装置可以根据第一连接的特征确定第一节点。其中,第一连接的特征可以包括:客户端的网际互连协议(internet protocol,IP)地址,使用所述客户端的用户的名称,或者第一连接对应的应用程序的名称等。
示例地,计算机装置可以基于第一连接的特征,在计算机装置中筛选一个节点作为第一节点,该筛选过程可以参考步骤301中计算机基于表空间对应的业务的特征筛选节点的过程,本申请实施例在此不作赘述。
步骤505、加载第一表空间的数据至第一节点的内存中。
步骤505可以参考步骤305,本申请实施例在此不做赘述。
步骤506、使用第一工作线程对第一连接上的读写请求进行处理,其中,第一工作线程由第一节点中的处理器生成。
步骤506可以参考步骤306,本申请实施例在此不做赘述。
本申请实施例中第一表空间中的数据可以被加载至第一节点中,第一连接上的读写请求用于访问第一表空间,且计算机装置能够采用第一节点中的处理器生成的第一工作线程对该读写请求进行处理。这样一来,就使得第一工作线程和被读写的第一表空间中的数据均位于第一节点中,避免了跨节点读写数据,提高了数据读写效率。
再示例地,图6为本申请实施例提供的又一种数据库的数据读写方法的流程图,该数据读写方法可以用于如图2所示的计算机装置。如图6所示,该数据读写方法可以包括:
步骤601、创建至少一个表空间。
在步骤601中,即创建的至少一个表空间既可以具有对应的节点(参考步骤S301),也可以没有对应的节点(参考步骤S501),本申请实施例不对此进行限定。
步骤602、与客户端建立第一连接,其中,该第一连接用于传输客户端发送的读写请求。
步骤602可以参考步骤302,但与步骤302不同的是,在本实施例中,步骤602中第一连接传输的读写请求可以包括用于访问一个或多个表空间的读写请求。步骤603、使用初始工作线程对第一连接上的读写请求进行响应,其中,初始工作线程运行在计算机装置的多个节点中的任一节点中。
在计算机装置与客户端建立第一连接后,计算机装置可以首先起一个初始工作线程(可以位于计算机装置中的任一节点上),之后再使用初始工作线程对第一连接上的读写请求进行响应。
其中,初始工作线程在对第一连接上的读写请求进行响应的过程中,会对该读写请求需要访问的表空间进行访问。需要说明的是,第一连接上的读写请求可以有至少一个,初始工作线程可以依次响应第一连接上的读写请求。
示例地,如图7所示,假设计算机装置包括节点1、2、3和4,且节点1具有线程1,节点2具有线程2,节点3具有线程3,节点4具有线程4。在计算机装置与客户端建立的第一连接后,计算机装置便可以将节点2上的线程2作为上述初始工作线程,并使用线程2依次对第一连接上的读写请求1、2、3和4进行响应。
步骤604、确定初始工作线程响应第一连接上的读写请求时所访问的表空间。
步骤605、根据初始工作线程响应第一连接上的读写请求时所访问的表空间确定与第一连接对应的第一表空间。
在初始工作线程对第一连接上的读写请求进行响应的过程中,计算机装置可以确定初始工作线程响应第一连接上的读写请求时所访问的表空间,之后,便可以根据这些表空间采用多种实现方式确定第一表空间。
在第一种实现方式中,计算机装置可以将初始工作线程响应第一连接上的读写请求的过程中访问的第一个表空间确定为第一表空间。可以看出,计算机装置在使用初始工作线程为第一连接上的读写请求进行响应的过程中,仅需检测该第一连接上的读写请求需要访问的第一个表空间即可。
比如,数据库中表空间以及表空间中的页面的关系如表2所示,若初始工作线程在响应第一连接上的读写请求的过程中,访问的第一个页面为页面4,则可以确定页面4所在的表空间2为初始工作线程访问的第一个表空间,并确定表空间2为上述第一表空间。
表2
表空间 | 页面 |
1 | 1、2、3 |
2 | 4、5 |
3 | 6 |
4 | 7、8 |
在第二种实现方式中,计算机装置可以将初始工作线程响应第一连接上的读写请求的过程中,在预定时长内访问频率最高的表空间,确定为第一表空间。可以看出,计算机装置在使用初始工作线程为第一连接上的读写请求进行响应的过程中,需要统计预定时长内该第一连接上的读写请求需要访问的表空间,并确定出这些表空间中访问频率最高的第一表空间即可。
比如,对于如表2所示的表空间,假设初始工作线程在响应第一连接上的读写请求的第一时长内,访问了表空间1、4和5。并且,如表3所示,在预定时长内,访问表空间1的频率为2次/分,访问表空间4的频率为3次/分,访问表空间5的频率为5次/分。可以看出,在初始工作线程响应第一连接上的读写请求的第一时长内,表空间5的被访问频率最高,此时计算机装置可以确定表空间5为上述第一表空间。
表3
表空间 | 在预定时长内访问表空间的频率(次/分) |
1 | 2 |
4 | 3 |
5 | 5 |
步骤606、确定第一连接或者第一表空间对应的第一节点。
由于在步骤601创建的至少一个表空间既可以具有对应的节点,也可以没有对应的节点,当创建的表空间具有对应的节点时,可以直接确定第一表空间对应的第一节点;当创建的表空间没有对应的节点时,可以参考步骤S504,根据第一连接的特征确定对应的第一节点。步骤607、确定初始工作线程位于第一节点之外的节点。
在确定第一节点之后,计算机装置需要判断初始工作线程是否位于第一节点之外的节点。本申请实施例中以初始工作线程位于第一节点之外的节点为例。
步骤608、将初始工作线程迁移至第一节点,其中,迁移后的初始工作线程为第一工作线程。
如图8所示,假设第一节点为节点1,而初始工作线程(线程2)所在的节点2与节点1不同,则计算机装置可以将线程2从节点2迁移至节点1。
需要说明的是,迁移前的初始工作线程和迁移后的初始工作线程(也即第一工作线程)可以为同一工作线程,但迁移前的初始工作线程并非位于第一节点中,且迁移后的初始工作线程(也即第一工作线程)位于第一节点中。
或者,迁移前的初始工作线程和迁移后的初始工作线程(也即第一工作线程)为不同的工作线程,计算机装置在迁移初始工作线程时,可以在第一节点中起一个工作线程,并将初始工作线程工作所需的数据均迁移至第一节点中的工作线程,从而使初始工作线程的功能转移至第一节点中的工作线程,得到迁移后的初始工作线程(也即第一工作线程)。
步骤609、加载第一表空间的数据至第一节点的内存中。
步骤609可以参考步骤305,本申请实施例在此不做赘述。
需要说明的是,初始工作线程在对第一连接上的读写请求进行响应的过程中,会对该读写请求需要访问的表空间进行访问。在该访问的过程中,第一表空间中的数据可能被加载至第一节点的内存中,也有可能未被加载至第一节点的内存中;若在该访问的过程中,第一表空间中的数据未被加载至第一节点的内存中,则可以执行步骤609,以确保第一表空间中的数据被加载至第一节点的内存中;若在该访问的过程中,第一表空间中的数据已被加载至第一节点的内存中,则可以无需执行步骤609。
步骤610、使用第一工作线程对第一连接上的读写请求进行处理,其中,第一工作线程由第一节点中的处理器生成。
步骤610可以参考步骤306,本申请实施例在此不做赘述。
在本申请一种可能的实现方式中,当初始工作线程所在的节点为第一节点时,计算机装置可以不执行步骤607和步骤608,且确定初始工作线程为第一工作线程,并直接执行步骤609即可。
在本申请另一种可能的实现方式中,计算机装置也可以不执行步骤607和步骤608,而是在步骤606之后,计算机装置直接在第一节点上另起一个工作线程,将该工作线程作为第一工作线程,执行步骤609即可。
如图9所示,假设初始工作线程(线程2)在迁移至节点1之前,对第一连接上的读写请求1进行响应,但还未对第一连接上的读写请求2、3和3进行响应。则在将初始工作线程(线程2)迁移至第一节点(节点1)得到第一工作线程后,便可以采用该第一工作线程(迁移至节点1中的线程2)依次对第一连接上的读写请求2、3和4进行响应。
可以看出,无论是否对初始工作线程进行迁移,本申请实施例中均需要采用第一节点上的第一工作线程对第一连接上的读写请求进行处理。
在本申请实施例中,客户端通过第一连接发送的读写请求会较大概率(如99%、98%或80%等)地访问第一表空间,且较小概率(如1%、2%或20%等)会访问其他表空间。相应的,客户端与计算机装置在建立第一连接后,客户端每次需要访问的表空间较大概率会是第一表空间。因此,若将第一连接上的读写请求用于访问的表空间中的数据加载至第一节点,且采用第一节点中的第一工作线程对加载至第一节点的读写请求进行读写,则能够较大概率避免跨节点读写数据。
以业务处理系统(Transaction Processing Performance Council,TPC-C)为例,TPC-C管理若干个分布在不同区域的商品仓库。假设每个仓库负责为10个销售点供货,其中每个销售点为3000个客户端提供服务。在这种场景下,供客户端访问的多个商品仓库的表数据可以划分为多个分区,并将这些分区分布在多个表空间中,每个商品仓库的分区所存储的各个表空间对应同一节点。每个客户端提交的订单中,约90%的产品在该客户端对应的仓库(也即为该客户端直接提供服务器的销售点对应的仓库)中有存货,且10%的产品在该仓库中没有存货,必须由其他仓库来供货。这样一来,每个客户端会大概率(约90%)的访问其对应的仓库的分区所在的表空间,因此,计算机装置可以将客户端需要访问的第一个表空间确定为第一表空间,并将该表空间对应的节点确定为第一节点。在确定第一节点后,可以认为该第一连接上的每个读写请求用于访问的表空间对应的节点均大概率的为该第一节点。采用第一表空间对应的第一节点中的第一工作线程对第一连接上的读写请求进行处理,能够大概率的避免跨节点读写数据。
可选地,在步骤606之后,若第一节点与初始工作线程所在的节点不同,则计算机装置也可以不执行步骤607至步骤608,而是将前述第一表空间对应的节点由上述第一节点变更为初始工作线程所在的节点,之后,再采用初始工作线程对该第一连接上的读写请求进行处理。这样一来,初始工作线程在处理第一连接上的读写请求时,可以将该读写请求访问的第一表空间中的数据加载至初始工作线程所在的节点,从而也能减小跨节点读写数据的概率。
步骤301中以表空间具有对应的节点,表空间携带的标识符为表空间对应的节点的标识符为例,可选地,表空间携带的标识符也可以为表空间对应的节点中某一缓冲区的标识符。可以看做是,表空间与节点中的缓冲区存在对应关系。可选地,表空间中的数据可以用于加载至对应的缓冲区,当然表空间中的数据也可以不用于加载至对应的缓冲区,本申请实施例对此不作限定。
在表空间携带的标识符为缓冲区的标识符时,表空间的创建指令可以为:createtablespace<spc_numa_x><datafile><buf_x>。其中,“create tablespace<spc_numa_x>”表示创建表空间<spc_numa_x>,“<spc_numa_x>”表示创建的表空间的名称,<datafile>表示该表空间在外存中对应的文件名,“<buf_x>”为表空间的标识符,且用于表示该表空间对应的缓冲区。
另外,在表空间携带的标识符为缓冲区的标识符时,节点中的缓冲区也携带有该缓冲区所在的节点的标识符。在创建表空间之前,还可以根据缓冲区创建指令,创建缓冲区。其中,该缓冲区的创建指令可以为:create database buffer<buf_x>numa x,“createdatabase buffer<buf_x>”表示创建缓冲区<buf_x>,“<buf_x>”为创建的缓冲区的名称,“numa x”为节点的标识符,用于表示创建的缓冲区所在的节点。
在表空间携带的标识符为缓冲区的标识符时,计算机装置在确定多个节点中与第一连接或第一表空间对应的第一节点时,可以首先确定与第一连接或第一表空间对应的第一缓冲区,之后再将第一缓冲区所在的节点确定为第一节点。
需要说明的是,数据库中每个页面在同一时刻仅能够被一个工作线程访问,因此,当多个工作线程均需要访问某一页面时,这些工作线程需要依次对该页面进行访问,导致这些工作线程访问该页面的效率较低。
为了提高各个工作线程访问页面的效率,可以对表空间中的表数据进行分区,得到多个分区,再将这些分区存储在至少一个表空间中。每个分区包括至少一个页面,分区中的页面可以是表数据中的页面,也可以是将表数据中的页面拆分后得到的页面。
比如,表数据包括页面1.1、页面1.2和页面1.3,在对表数据进行分区后得到分区2.1、分区2.2和分区2.3。其中,分区2.1包括页面2.11和页面2.12,分区2.2包括页面1.2,分区2.3包括页面1.3。页面1.1包括页面2.11和页面2.12。可以看出,在对表数据进行分区的过程中,页面1.1被分为页面2.11和页面2.12。这样一来,若工作线程a需要访问页面2.11,工作线程b需要访问页面2.12,则这两个工作线程可以同时对需要访问的页面进行访问。但是,若未对表数据进行分区,则由于页面2.11和页面2.12均属于页面1.1,因此,工作线程a和工作线程b需要依次对页面1.1进行访问。所以,通过对表数据进行分区,能够提高工作线程对页面的访问效率。
可选地,工作线程在对表数据进行分区时,可以采用任一种分区方式,比如哈希(hash)、顺序排布(range)或轮询调度(round-robin)等方式。
可选地,计算机装置还可以在适当的时机,对表空间中的数据进行迁移。
示例地,计算机装置还可以检测(如周期性地检测)在目标时长内访问第一表空间的工作线程的数量是否小于第一数量阈值,若目标时长内访问第一表空间的工作线程的数量小于第一数量阈值,则可以确定该第一表空间被访问的频率较低。此时,计算机装置可以将第一表空间中的全部数据迁移至第二表空间。该第二表空间可以为除第一表空间之外的任一表空间,可选地,在目标时长内访问该第二表空间的工作线程的数量可以大于或等于第一数量阈值。这样一来,计算机装置便将被访问频率较小的第一表空间中的数据迁移至被访问频率较高的第二表空间,从而避免存在被访问频率过低的表空间。
又示例地,计算机装置还可以检测(如周期性地检测)在目标时长内访问第一表空间的工作线程的数量是否大于第二数量阈值,第二数量阈值可以大于上述第一数量阈值。若目标时长内访问第一表空间的工作线程的数量大于第二数量阈值,则计算机装置可以确定该第一表空间被访问的频率过高。此时,计算机装置可以将第一表空间中的至少部分数据迁移至第三表空间。该第三表空间可以为除第一表空间之外的任一表空间,可选地,在目标时长内访问该第三表空间的工作线程的数量可以小于或等于第二数量阈值。这样一来,计算机装置便将被访问频率较高的第一表空间中的至少部分数据迁移至被访问频率较低的第三表空间,从而避免第一表空间被访问频率过高。
需要说明的是,当某一表空间被访问的频率过高时,各个工作线程访问该表空间的效率就会降低,而本申请实施例中通过将表空间中的至少部分数据进行迁移,能够降低表空间被访问的频率,从而提高各个工作线程访问表空间的效率。
可选地,计算机装置还支持节点间的负载均衡。示例地,计算机装置还可以检测多个节点的负载(与节点的内存消耗和/或工作线程密度相关)。当确定第一节点的负载高于第一负载阈值,且第二节点的负载低于第二负载阈值时,表明第一节点的负载较高,第二节点的负载较低。其中,第一负载阈值大于或等于第二负载阈值。此时,计算机装置可以通过将第一节点对应的部分表空间的数据迁移至第二节点,并修改所迁移的表空间与节点之间的对应关系,来实现各个节点之间的负载均衡。
示例地,计算机装置在确定第一节点的负载高于第一负载阈值,且第二节点的负载低于第二负载阈值时,可以立即将第一节点的内存中加载的第一节点对应的表空间中的数据迁移至第二节点的内存中。当然,计算机装置也可以不立即迁移这些数据,而是在每接收到针对这些数据中某一页面的读写请求之后,才将该页面迁移至第二节点的内存中。这样一来,能够减少在确定第一节点的负载高于第一负载阈值,且第二节点的负载低于第二负载阈值这一时刻的资源开销。
可选地,计算机装置还可以进入线程池模式。比如,当计算机装置与客户端建立的连接的数量大于计算机装置中工作线程的数量时,计算机装置还可以进入线程池模式。
示例地,计算机装置在线程池模式下可以维护第一节点的第一线程池,以及第二线程池。第一线程池中的工作线程用于处理携带第一标识符的连接上的读写请求,第二线程池中的工作线程用于处理未携带标识符的连接上的读写请求。
计算机装置在确定多个节点中与第一连接或第一表空间对应的第一节点之后,可以使第一连接携带第一标识符(指示第一节点的标识符)。之后,由于第一连接携带有用于指示第一节点的第一标识符,因此计算机装置便可以从第一节点的第一线程池中取出一个空闲工作线程作为第一工作线程,并使用该第一工作线程对第一连接上的读写请求进行响应。在需要使用初始工作线程对第一连接上的读写请求进行响应之前,由于初始工作线程未携带有用于指示任何节点的标识符,因此,计算机装置可以从第二线程池中取出一个空闲线程作为初始工作线程,并采用该初始工作线程对第一连接上的读写请求进行响应。
在工作线程对某一连接上的读写请求处理完毕后,如果工作线程是从某一线程池中取出的,则可以将该工作线程再加入该线程池。比如,在初始工作线程对第一连接上的读写请求处理完毕之后,可以将初始工作线程再加入第二线程池。在第一工作线程对第一连接上的读写请求处理完毕之后,可以将第一工作线程在加入第一线程池。
在线程池模式下,计算机装置在采用工作线程响应连接上的读写请求时,需要满足相应地线程池中具有空闲工作线程的条件,从而能够保证计算机装置有序地对多个连接上的读写请求进行处理。
综上所述,本申请实施例提供的数据读写方法中,客户端通过第一连接发送的读写请求会大概率的访问第一表空间。客户端与计算机装置在建立第一连接后,客户端需要访问的每个表空间均大概率的是第一表空间。因此,若将第一连接上的读写请求用于访问的表空间中的数据加载至第一节点,且采用第一节点中的第一工作线程对加载至第一节点的读写请求进行读写,则能够大概率的避免跨节点读写数据。
上文中结合图1至图13,详细描述了本申请所提供的数据库的数据读写方法,下面将结合图14描述本申请所提供的数据库的数据读写。
图14为本申请实施例提供的一种数据库的数据读写装置的框图,本申请实施例提供的计算机装置可以包括该数据读写装置。如图14所示,该数据读写装置包括:
建立模块1401,用于与客户端建立第一连接,其中,所述第一连接用于传输所述客户端发送的读写请求;
确定模块1402,用于:确定与所述第一连接对应的第一表空间;
确定计算机装置的多个节点中与所述第一连接或所述第一表空间对应的第一节点,所述多个节点中的每个节点包括处理器和内存。
处理模块1403,用于:加载所述第一表空间的数据至所述第一节点的内存中;
使用第一工作线程对所述第一连接上的读写请求进行处理,其中,所述第一工作线程由所述第一节点中的处理器生成。
综上所述,本申请实施例提供的数据读写装置中,客户端通过第一连接发送的读写请求会大概率的访问第一表空间。客户端与建立模块在建立第一连接后,客户端需要访问的每个表空间均大概率的是第一表空间。因此,若加载模块将第一连接上的读写请求用于访问的表空间中的数据加载至第一节点,且处理模块采用第一节点中的第一工作线程对加载至第一节点的读写请求进行读写,则能够大概率的避免跨节点读写数据。
上述数据读写装置还用于执行如图3、图5B和图6所示的数据读写方法中的其他步骤。比如,建立模块1401用于执行图3中的步骤302、图5B中的步骤502和图6中的步骤602;确定模块1402用于执行图3中的步骤303和304,图5B中的步骤503和504以及图6中的步骤603、604、605、606和607;处理模块1403用于执行图3中的步骤301、305和306,图5B中的步骤501、505和506以及图6中的步骤601、608、609和610。各个模块执行各个步骤的具体流程请见上文对图3、图5B和图6的介绍,此处不再赘述。
图15为依据本申请的实施例提供的计算机装置700的结构示意图。本实施例中的计算机装置700可以是上述各实施例中的计算机装置的其中一种具体实现方式。
如图15所示,该计算机装置700包括处理器701,处理器701与存储器705连接。处理器701可以为现场可编程门阵列(英文全称:Field Programmable Gate Array,缩写:FPGA),或数字信号处理器(英文全称:Digital Signal Processor,缩写:DSP)等计算逻辑或以上任意计算逻辑的组合。处理器701也可以为单核处理器或多核处理器。
存储器705可以是随机存取存储器(Random Access Memory,RAM)、闪存、只读存储器(Read Only Memory,ROM)、可擦除可编程只读存储器(Erasable Programmable ReadOnly Memory,EPROM)、带电可擦可编程只读存储器(Electrically ErasableProgrammable read only memory,EEPROM)、寄存器或者本领域熟知的任何其它形式的存储介质,存储器可以用于存储程序指令707,该程序指令707被处理器701执行时,处理器701执行上述实施例中的所述的方法。
连接线709用于在计算机装置的各部件之间传递信息,连接线709可以使用有线的连接方式或采用无线的连接方式,本申请并不对此进行限定。连接709还连接有网络接口704。
网络接口704使用例如但不限于电缆或电绞线一类的连接装置,来实现与其他设备或网络711之间的通信,网络接口704还可以通过无线的形式与网络711互连。
本申请实施例的一些特征可以由处理器701执行存储器705中的程序指令或者软件代码来完成/支持。存储器705上在加载的软件组件可以从功能或者逻辑上进行概括,例如,图15所示的建立模块1401、处理模块1402以及加载模块1403。
在本申请的一个实施例中,当存储器705加载程序指令后,处理器701执行存储器中的上述功能/逻辑模块相关的事务。
可选地,该计算机装置还可以包括辅助存储器702和输入/输出接口703,辅助存储器702用于辅助存储器705存储程序指令。输入/输出接口703用于与计算机装置700外部的设备进行交互,以获取外部设备输入的数据或向外部设备输出数据。
此外,图15仅仅是一个计算机装置700的例子,计算机装置700可能包含相比于图15展示的更多或者更少的组件,或者有不同的组件配置方式。同时,图15中展示的各种组件可以用硬件、软件或者硬件与软件的结合方式实施。例如,存储器和处理器可以在一个模块中实现,存储器中的指令可以是预先写入存储器的,也可以是后续处理器在执行的过程中加载的。
本申请实施例提供了一种计算机存储介质,所述存储介质内存储有计算机程序,所述计算机程序用于执行本申请提供的数据库的数据读写方法。
本申请实施例提供了一种包含指令的计算机程序产品,当计算机程序产品在计算机装置上运行时,使得计算机装置执行本申请实施例提供的任一数据读写方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机的可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者包含一个或多个可用介质集成的服务器、数据中心等数据存储装置。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质,或者半导体介质(例如固态硬盘)等。
在本申请中,术语“第一”和“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。术语“至少一个”指一个或多个,“多个”指两个或两个以上,除非另有明确的限定。
本申请实施例提供的方法实施例和装置实施例等不同类型的实施例均可以相互参考,本申请实施例对此不做限定。本申请实施例提供的方法实施例操作的先后顺序能够进行适当调整,操作也能够根据情况进行响应增减,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本申请的保护范围之内,因此不再赘述。
在本申请提供的相应实施例中,应该理解到,所揭露的装置等可以通过其它的构成方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元描述的部件可以是或者也可以不是物理单元,既可以位于一个地方,或者也可以分布到多个网络设备(例如终端设备)上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (16)
1.一种数据库的数据读写方法,其特征在于,所述方法用于计算机装置,所述计算机装置包括多个节点,所述多个节点中的每个节点包括处理器和内存,所述方法包括:
与客户端建立第一连接,其中,所述第一连接用于传输所述客户端发送的读写请求;
确定与所述第一连接对应的第一表空间;
确定所述多个节点中与所述第一连接或所述第一表空间对应的第一节点;其中,在所述第一节点与所述第一表空间对应时,基于表空间与节点的对应关系,查找所述第一表空间对应的所述第一节点;在所述第一节点与所述第一连接对应时,基于所述第一连接的特征,在所述多个节点中筛选所述第一节点;
加载所述第一表空间的数据至所述第一节点的内存中;
使用第一工作线程对所述第一连接上的读写请求进行处理,其中,所述第一工作线程由所述第一节点中的处理器生成。
2.根据权利要求1所述的方法,其特征在于,确定与所述第一连接对应的第一表空间,包括:
使用初始工作线程对所述第一连接上的读写请求进行响应,其中,所述初始工作线程运行在所述多个节点中的任一节点中;
确定所述初始工作线程响应所述第一连接上的读写请求时所访问的表空间;
根据所述初始工作线程响应所述第一连接上的读写请求时所访问的表空间确定与所述第一连接对应的第一表空间。
3.根据权利要求2所述的方法,其特征在于,所述根据所述初始工作线程响应所述第一连接上的读写请求时所访问的表空间确定与所述第一连接对应的第一表空间,包括:
将所述初始工作线程响应所述第一连接上的读写请求的过程中访问的第一个表空间,确定为所述第一表空间;或者,
将所述初始工作线程响应所述第一连接上的读写请求的过程中,在预定时长内访问频率最高的表空间,确定为所述第一表空间。
4.根据权利要求2或3所述的方法,其特征在于,在所述使用第一工作线程对所述第一连接上的读写请求进行处理之前,所述方法还包括:
确定所述初始工作线程位于所述第一节点之外的节点;
将所述初始工作线程迁移至所述第一节点,其中,迁移后的所述初始工作线程为所述第一工作线程。
5.根据权利要求1至3任一所述的方法,其特征在于,所述第一连接的特征包括所述客户端的网际互连协议IP地址、使用所述客户端的用户的名称或者所述第一连接对应的应用程序的名称。
6.根据权利要求1至3任一项所述的方法,其特征在于,在所述与客户端建立第一连接之前,所述方法还包括:
创建所述第一表空间,其中,所述第一表空间携带第一标识符,所述第一标识符指示所述第一节点;
所述确定所述多个节点中与所述第一连接或所述第一表空间对应的第一节点,包括:
根据所述第一表空间携带的所述第一标识符确定所述第一节点。
7.根据权利要求6所述的方法,其特征在于,所述计算机装置包括第一线程池和第二线程池,所述第一线程池中的工作线程用于处理携带所述第一标识符的连接上的读写请求,所述第二线程池中的工作线程用于处理未携带标识符的连接上的读写请求,
在所述确定所述多个节点中与所述第一连接或所述第一表空间对应的第一节点之后,所述方法还包括:
使所述第一连接携带所述第一标识符。
8.一种数据库的数据读写装置,其特征在于,所述数据读写装置包括:
建立模块,用于:与客户端建立第一连接,其中,所述第一连接用于传输所述客户端发送的读写请求;
确定模块,用于:确定与所述第一连接对应的第一表空间;
确定计算机装置的多个节点中与所述第一连接或所述第一表空间对应的第一节点,所述多个节点中的每个节点包括处理器和内存;其中,在所述第一节点与所述第一表空间对应时,基于表空间与节点的对应关系,查找所述第一表空间对应的所述第一节点;在所述第一节点与所述第一连接对应时,基于所述第一连接的特征,在所述多个节点中筛选所述第一节点;
处理模块,用于:加载所述第一表空间的数据至所述第一节点的内存中;
使用第一工作线程对所述第一连接上的读写请求进行处理,其中,所述第一工作线程由所述第一节点中的处理器生成。
9.根据权利要求8所述的数据读写装置,其特征在于,
所述确定模块用于:
使用初始工作线程对所述第一连接上的读写请求进行响应,其中,所述初始工作线程运行在所述多个节点中的任一节点中;
确定所述初始工作线程响应所述第一连接上的读写请求时所访问的表空间;
根据所述初始工作线程响应所述第一连接上的读写请求时所访问的表空间确定与所述第一连接对应的第一表空间。
10.根据权利要求9所述的数据读写装置,其特征在于,所述确定模块用于:
将所述初始工作线程响应所述第一连接上的读写请求的过程中访问的第一个表空间,确定为所述第一表空间;或者,
将所述初始工作线程响应所述第一连接上的读写请求的过程中,在预定时长内访问频率最高的表空间,确定为所述第一表空间。
11.根据权利要求9或10所述的数据读写装置,其特征在于,所述确定模块还用于:
确定所述初始工作线程位于所述第一节点之外的节点;
所述处理模块还用于:将所述初始工作线程迁移至所述第一节点,其中,迁移后的所述初始工作线程为所述第一工作线程。
12.根据权利要求8至10任一所述的数据读写装置,其特征在于,所述第一连接的特征包括所述客户端的网际互连协议IP地址、使用所述客户端的用户的名称或者所述第一连接对应的应用程序的名称。
13.根据权利要求8至10任一项所述的数据读写装置,其特征在于,
所述处理模块还用于:
创建所述第一表空间,其中,所述第一表空间携带第一标识符,所述第一标识符指示所述第一节点;
所述确定模块用于:
根据所述第一表空间携带的所述第一标识符确定所述第一节点。
14.根据权利要求13所述的数据读写装置,其特征在于,所述计算机装置包括第一线程池和第二线程池,所述第一线程池中的工作线程用于处理携带所述第一标识符的连接上的读写请求,所述第二线程池中的工作线程用于处理未携带标识符的连接上的读写请求;
所述处理模块还用于使所述第一连接携带所述第一标识符。
15.一种计算机装置,其特征在于,所述计算机装置包括:处理器和存储器,所述存储器中存储有程序,所述处理器用于调用所述存储器中存储的程序,以使得所述计算机装置执行如权利要求1至7任一项所述的数据库的数据读写方法。
16.一种计算机存储介质,其特征在于,所述存储介质内存储有计算机程序,当所述计算机程序在计算机装置上运行时,使所述计算机装置执行权利要求1至7任一项所述的数据库的数据读写方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP20899431.9A EP4057160A4 (en) | 2019-12-13 | 2020-10-10 | METHOD AND DEVICE FOR READING AND WRITING DATA FOR DATABASE |
PCT/CN2020/120216 WO2021114848A1 (zh) | 2019-12-13 | 2020-10-10 | 数据库的数据读写方法及装置 |
US17/837,496 US11868333B2 (en) | 2019-12-13 | 2022-06-10 | Data read/write method and apparatus for database |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2019112828326 | 2019-12-13 | ||
CN201911282832 | 2019-12-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111309805A CN111309805A (zh) | 2020-06-19 |
CN111309805B true CN111309805B (zh) | 2023-10-20 |
Family
ID=71161659
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010077018.7A Active CN111309805B (zh) | 2019-12-13 | 2020-01-23 | 数据库的数据读写方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11868333B2 (zh) |
EP (1) | EP4057160A4 (zh) |
CN (1) | CN111309805B (zh) |
WO (1) | WO2021114848A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111309805B (zh) * | 2019-12-13 | 2023-10-20 | 华为技术有限公司 | 数据库的数据读写方法及装置 |
CN113704254B (zh) * | 2021-07-30 | 2023-06-16 | 北京奇艺世纪科技有限公司 | 一种数据库的业务处理方法、装置、电子设备和存储介质 |
CN117076465B (zh) * | 2023-10-16 | 2024-04-05 | 支付宝(杭州)信息技术有限公司 | 一种数据关联查询方法及相关设备 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831223A (zh) * | 2012-08-23 | 2012-12-19 | 大唐移动通信设备有限公司 | 一种分布式数据库的管理方法和系统 |
CN104185841A (zh) * | 2013-03-12 | 2014-12-03 | 株式会社东芝 | 数据库系统、程序以及数据处理方法 |
CN105260376A (zh) * | 2015-08-17 | 2016-01-20 | 北京京东尚科信息技术有限公司 | 用于集群节点缩扩的方法、设备和系统 |
CN105354319A (zh) * | 2015-11-16 | 2016-02-24 | 天津南大通用数据技术股份有限公司 | 针对sn架构的mpp数据库集群的数据库连接池管理方法及系统 |
CN106060004A (zh) * | 2016-05-09 | 2016-10-26 | 深圳市永兴元科技有限公司 | 数据库访问方法及数据库代理节点 |
CN106339432A (zh) * | 2016-08-19 | 2017-01-18 | 上海巨数信息科技有限公司 | 一种按查询内容进行负载均衡的系统及其方法 |
CN106484311A (zh) * | 2015-08-31 | 2017-03-08 | 华为数字技术(成都)有限公司 | 一种数据处理方法及装置 |
CN106815251A (zh) * | 2015-11-30 | 2017-06-09 | 成都华为技术有限公司 | 分布式数据库系统、数据库访问方法及装置 |
CN107016039A (zh) * | 2017-01-06 | 2017-08-04 | 阿里巴巴集团控股有限公司 | 数据库写入的方法和数据库系统 |
CN107229635A (zh) * | 2016-03-24 | 2017-10-03 | 华为技术有限公司 | 一种数据处理的方法、存储节点及协调节点 |
CN109241193A (zh) * | 2018-09-26 | 2019-01-18 | 联想(北京)有限公司 | 分布式数据库的处理方法和装置,及服务器集群 |
CN109460426A (zh) * | 2018-11-05 | 2019-03-12 | 郑州云海信息技术有限公司 | 一种基于MongoDB的分级存储的系统及方法、路由节点 |
CN109889561A (zh) * | 2017-12-25 | 2019-06-14 | 新华三大数据技术有限公司 | 一种数据处理方法及装置 |
CN110300188A (zh) * | 2019-07-25 | 2019-10-01 | 中国工商银行股份有限公司 | 数据传输系统、方法和设备 |
CN110471977A (zh) * | 2019-08-22 | 2019-11-19 | 杭州数梦工场科技有限公司 | 一种数据交换方法、装置、设备、介质 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5758345A (en) * | 1995-11-08 | 1998-05-26 | International Business Machines Corporation | Program and method for establishing a physical database layout on a distributed processor system |
US6272491B1 (en) * | 1998-08-24 | 2001-08-07 | Oracle Corporation | Method and system for mastering locks in a multiple server database system |
US7281206B2 (en) * | 2001-11-16 | 2007-10-09 | Timebase Pty Limited | Maintenance of a markup language document in a database |
US7665089B1 (en) * | 2004-11-02 | 2010-02-16 | Sun Microsystems, Inc. | Facilitating distributed thread migration within an array of computing nodes |
US8224828B2 (en) * | 2009-12-22 | 2012-07-17 | Sap Ag | Multi-client generic persistence for extension fields |
CN102546782B (zh) * | 2011-12-28 | 2015-04-29 | 北京奇虎科技有限公司 | 一种分布式系统及其数据操作方法 |
JP6086463B2 (ja) * | 2014-05-05 | 2017-03-01 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | ピアツーピアデータ複製用の方法、デバイス、およびシステム、ならびにマスタノード切替え用の方法、デバイス、およびシステム |
US10452655B2 (en) * | 2015-10-23 | 2019-10-22 | Oracle International Corporation | In-memory cursor duration temp tables |
US10235440B2 (en) * | 2015-12-21 | 2019-03-19 | Sap Se | Decentralized transaction commit protocol |
US9996432B2 (en) * | 2016-02-03 | 2018-06-12 | International Business Machines Corporation | Automated local database connection affinity and failover |
US9948704B2 (en) * | 2016-04-07 | 2018-04-17 | International Business Machines Corporation | Determining a best fit coordinator node in a database as a service infrastructure |
CN111309805B (zh) | 2019-12-13 | 2023-10-20 | 华为技术有限公司 | 数据库的数据读写方法及装置 |
-
2020
- 2020-01-23 CN CN202010077018.7A patent/CN111309805B/zh active Active
- 2020-10-10 WO PCT/CN2020/120216 patent/WO2021114848A1/zh unknown
- 2020-10-10 EP EP20899431.9A patent/EP4057160A4/en active Pending
-
2022
- 2022-06-10 US US17/837,496 patent/US11868333B2/en active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102831223A (zh) * | 2012-08-23 | 2012-12-19 | 大唐移动通信设备有限公司 | 一种分布式数据库的管理方法和系统 |
CN104185841A (zh) * | 2013-03-12 | 2014-12-03 | 株式会社东芝 | 数据库系统、程序以及数据处理方法 |
CN105260376A (zh) * | 2015-08-17 | 2016-01-20 | 北京京东尚科信息技术有限公司 | 用于集群节点缩扩的方法、设备和系统 |
CN106484311A (zh) * | 2015-08-31 | 2017-03-08 | 华为数字技术(成都)有限公司 | 一种数据处理方法及装置 |
CN105354319A (zh) * | 2015-11-16 | 2016-02-24 | 天津南大通用数据技术股份有限公司 | 针对sn架构的mpp数据库集群的数据库连接池管理方法及系统 |
CN106815251A (zh) * | 2015-11-30 | 2017-06-09 | 成都华为技术有限公司 | 分布式数据库系统、数据库访问方法及装置 |
CN107229635A (zh) * | 2016-03-24 | 2017-10-03 | 华为技术有限公司 | 一种数据处理的方法、存储节点及协调节点 |
CN106060004A (zh) * | 2016-05-09 | 2016-10-26 | 深圳市永兴元科技有限公司 | 数据库访问方法及数据库代理节点 |
CN106339432A (zh) * | 2016-08-19 | 2017-01-18 | 上海巨数信息科技有限公司 | 一种按查询内容进行负载均衡的系统及其方法 |
CN107016039A (zh) * | 2017-01-06 | 2017-08-04 | 阿里巴巴集团控股有限公司 | 数据库写入的方法和数据库系统 |
CN109889561A (zh) * | 2017-12-25 | 2019-06-14 | 新华三大数据技术有限公司 | 一种数据处理方法及装置 |
CN109241193A (zh) * | 2018-09-26 | 2019-01-18 | 联想(北京)有限公司 | 分布式数据库的处理方法和装置,及服务器集群 |
CN109460426A (zh) * | 2018-11-05 | 2019-03-12 | 郑州云海信息技术有限公司 | 一种基于MongoDB的分级存储的系统及方法、路由节点 |
CN110300188A (zh) * | 2019-07-25 | 2019-10-01 | 中国工商银行股份有限公司 | 数据传输系统、方法和设备 |
CN110471977A (zh) * | 2019-08-22 | 2019-11-19 | 杭州数梦工场科技有限公司 | 一种数据交换方法、装置、设备、介质 |
Also Published As
Publication number | Publication date |
---|---|
EP4057160A4 (en) | 2023-01-04 |
CN111309805A (zh) | 2020-06-19 |
US11868333B2 (en) | 2024-01-09 |
US20220300477A1 (en) | 2022-09-22 |
EP4057160A1 (en) | 2022-09-14 |
WO2021114848A1 (zh) | 2021-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11349940B2 (en) | Server side data cache system | |
CN111309805B (zh) | 数据库的数据读写方法及装置 | |
US10891165B2 (en) | Frozen indices | |
CN104462225B (zh) | 一种数据读取的方法、装置及系统 | |
US20150127691A1 (en) | Efficient implementations for mapreduce systems | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
US11226778B2 (en) | Method, apparatus and computer program product for managing metadata migration | |
CN112632069B (zh) | 哈希表数据存储管理方法、装置、介质和电子设备 | |
US10613992B2 (en) | Systems and methods for remote procedure call | |
CN107153643B (zh) | 数据表连接方法及装置 | |
CN113419824A (zh) | 数据处理方法、装置、系统及计算机存储介质 | |
US10198180B2 (en) | Method and apparatus for managing storage device | |
US20180121474A1 (en) | Database rebalancing method | |
CN115129621B (zh) | 一种内存管理方法、设备、介质及内存管理模块 | |
CN110109931B (zh) | 一种用于防止rac实例间数据访问发生冲突的方法及系统 | |
CN114625762A (zh) | 一种元数据获取方法、网络设备及系统 | |
CN112084173A (zh) | 数据迁移方法和装置及存储介质 | |
CN110162395B (zh) | 一种内存分配的方法及装置 | |
US11977513B2 (en) | Data flow control in distributed computing systems | |
US9256648B2 (en) | Data handling in a cloud computing environment | |
CN112764897B (zh) | 任务请求的处理方法、装置、系统及计算机可读存储介质 | |
US20210149746A1 (en) | Method, System, Computer Readable Medium, and Device for Scheduling Computational Operation Based on Graph Data | |
CN112988874A (zh) | 一种数据处理方法、系统、计算设备及可读存储介质 | |
US9176910B2 (en) | Sending a next request to a resource before a completion interrupt for a previous request | |
CN116842299B (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 |