CN116820786A - 数据库的数据访问方法和装置、电子设备、存储介质 - Google Patents
数据库的数据访问方法和装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN116820786A CN116820786A CN202311108662.6A CN202311108662A CN116820786A CN 116820786 A CN116820786 A CN 116820786A CN 202311108662 A CN202311108662 A CN 202311108662A CN 116820786 A CN116820786 A CN 116820786A
- Authority
- CN
- China
- Prior art keywords
- target
- access
- thread
- partition
- task
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000005192 partition Methods 0.000 claims abstract description 154
- 239000011159 matrix material Substances 0.000 claims description 33
- 238000004590 computer program Methods 0.000 claims description 7
- 238000004891 communication Methods 0.000 description 12
- 230000008901 benefit Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 238000012545 processing Methods 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
- 238000004806 packaging method and process Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提出的数据库的数据访问方法和装置、电子设备、存储介质,涉及数据库技术领域。该方法包括:基于对所述数据库的查询请求,确定待分配协程任务,所述数据库包括多个分区;获取所述待分配协程任务对各个所述分区的目标访问次数;获取多个候选线程对各个所述分区的访问偏好度;基于所述目标访问次数和所述访问偏好度,预测所述待分配协程任务分配给所述候选线程的分配分数;基于所述分配分数,从多个所述候选线程确定目标线程;将所述待分配协程任务分配至所述目标线程,由所述目标线程基于所述待分配协程任务访问所述分区。本申请实施例提高了数据库的访问效率。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及一种数据库的数据访问方法和装置、电子设备、存储介质。
背景技术
随着大数据和互联网的快速发展,数据并发查询和分析效率是衡量数据库***的一项重要指标。现代数据库***为提高并发率,采用多线程执行用户查询请求,不可避免的引入了跨线程或进程间数据访问竞争。在极端场景下,大量用户同时需要读取修改的数据集中在某一区域时,线程间竞争带来的等待和切换成本极大消耗计算资源,导致数据库***性能瓶颈的出现。
因此,如何提供一种数据库的数据访问方法,提高数据库的访问效率,成为了亟待解决的技术问题。
发明内容
本申请实施例的主要目的在于提出的数据库的数据访问方法和装置、电子设备及存储介质,能够提高数据库的访问效率。
为实现上述目的,本申请实施例的第一方面提出了一种数据库的数据访问方法,所述数据库包括多个分区,所述数据访问方法包括:
基于对所述数据库的查询请求,确定待分配协程任务;
获取所述待分配协程任务对各个所述分区的目标访问次数;
获取多个候选线程对各个所述分区的访问偏好度;
基于所述目标访问次数和所述访问偏好度,预测所述待分配协程任务分配给所述候选线程的分配分数;
基于所述分配分数,从多个所述候选线程确定目标线程;
将所述待分配协程任务分配至所述目标线程,由所述目标线程基于所述待分配协程任务访问所述分区。
可选地,所述获取多个候选线程对各个所述分区的访问偏好度,包括:
基于多个所述分区和多个所述候选线程,构建访问偏好矩阵;其中,所述访问偏好矩阵中的各个元素用于指示所述候选线程对所述分区的访问偏好度;
从所述访问偏好矩阵获取所述访问偏好度。
可选地,在所述将所述待分配协程任务分配至所述目标线程之后,所述数据访问方法还包括:
针对所述访问偏好矩阵中所述目标线程对应的元素,获取初始值;
获取所述目标线程的已分配的所述待分配协程任务对各个分区的已有访问次数;
基于所述已有访问次数与所述目标访问次数进行求和,得到所述目标线程对各个所述分区的第一总分区访问次数;
将所述初始值与所述已有访问次数进行相乘,且将相乘结果与所述目标访问次数进行求和,得到所述目标线程对单个所述分区的第一单个分区访问次数;
基于所述第一单个分区访问次数与所述第一总分区访问次数之间的比值,得到第一目标更新值;
基于所述第一目标更新值替换所述初始值,以更新所述访问偏好矩阵。
可选地,在基于所述目标更新值替换所述初始值,以更新所述访问偏好矩阵之后,所述数据访问方法还包括:
响应于所述待分配协程任务对所述数据库的访问结束,基于所述已有访问次数与所述目标访问次数进行相减,得到所述目标线程对各个所述分区的第二总分区访问次数;
将所述第一目标更新值与所述已有访问次数进行相乘,且将相乘结果与所述目标访问次数进行相减,得到所述目标线程对单个所述分区的第二单个分区访问次数;
基于所述第二单个分区访问次数与所述第二总分区访问次数之间的比值,得到第二目标更新值;
基于所述第二目标更新值替换所述第一目标更新值,以更新所述访问偏好矩阵。
可选地,所述基于所述目标访问次数和所述访问偏好度,预测所述待分配协程任务分配给所述候选线程的分配分数,包括:
获取所述待分配协程任务的目标负载,获取所述候选线程的已有负载;
基于所述目标负载和所述已有负载,确定第一分数;
基于所述目标访问次数与所述访问偏好度进行相乘,确定第二分数;
基于所述第二分数和所述第一分数进行相减,确定所述分配分数。
可选地,所述基于所述目标负载,确定第一分数,包括:
将所述目标负载和所述已有负载进行求和,得到总负载;
获取所有的所述候选线程的平均已有负载;
将所述总负载与所述平均已有负载进行相减,确定第一分数。
可选地,多个所述候选线程按顺序设置线程编号;
所述基于所述分配分数,从多个所述候选线程确定目标线程,包括:
基于所述分配分数,对多个所述候选线程进行排列;
基于排列结果,获取最大的所述分配分数对应的所述线程编号;
如果所述线程编号为多个所述线程编号,则将多个所述线程编号中最小的所述线程编号对应的所述候选线程作为所述目标线程。
为实现上述目的,本申请实施例的第二方面提出了一种数据库的数据访问装置,所述数据库包括多个分区,所述数据访问装置包括:
第一确定模块,用于基于对所述数据库的查询请求,确定待分配协程任务;
第一获取模块,用于获取所述待分配协程任务对各个所述分区的目标访问次数;
第二获取模块,用于获取多个候选线程对各个所述分区的访问偏好度;
预测模块,用于基于所述目标访问次数和所述访问偏好度,预测所述待分配协程任务分配给所述候选线程的分配分数;
第二确定模块,用于基于所述分配分数,从多个所述候选线程确定目标线程;
分配模块,用于将所述待分配协程任务分配至所述目标线程,由所述目标线程基于所述待分配协程任务访问所述分区。
为实现上述目的,本申请实施例的第三方面提出了一种电子设备,所述电子设备包括存储器、处理器、所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的方法。
为实现上述目的,本申请实施例的第四方面提出了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的方法。
本申请提出的数据库的数据访问方法和装置、电子设备、存储介质,本申请不直接让线程基于对数据库的查询请求访问数据库的分区,而是先基于对数据库的查询请求,确定待分配协程任务,然后获取待分配协程任务对各个分区的目标访问次数和获取多个候选线程对各个分区的访问偏好度。其中,目标访问次数可以衡量待分配协程任务对各个分区的访问频率,而访问偏好度可以衡量候选线程对各个分区的访问频率。然后基于目标访问次数和访问偏好度,预测待分配协程任务分配给候选线程的分配分数,基于分配分数,从多个候选线程确定目标线程,将待分配协程任务分配至目标线程,由目标线程基于待分配协程任务访问分区。其中,某个候选线程的分配分数越高,说明该候选线程对分区的访问频率与待分配协程任务对分区的访问频率越匹配。这样一来,本申请可以将访问相同分区的待分配协程任务分配给同一目标线程,减少每个线程访问的数据重叠度,从而减少线程间竞争带来的等待和切换成本极大消耗计算资源,进而能够提高数据库的访问效率。
附图说明
图1是本申请一个实施例提供的数据库的数据访问方法的流程图;
图2是图1中的步骤103获取访问偏好度的流程图;
图3是图1中的步骤104确定分配分数的流程图;
图4是图3中的步骤302的确定第一分数的流程图;
图5是本申请一个实施例提供的更新访问偏好矩阵的第一个流程图;
图6是本申请一个实施例提供的更新访问偏好矩阵的第二个流程图;
图7是本申请一个实施例提供的数据访问方法的具体实现示意图;
图8是本申请实施例提供的数据库的数据访问装置的模块结构框图;
图9是本申请一个实施例提供的电子设备的硬件结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
随着大数据和互联网的快速发展,数据并发查询和分析效率是衡量数据库***的一项重要指标。现代数据库***为提高并发率,采用多线程或多进行执行用户查询请求,不可避免的引入了跨线程或进程间数据访问竞争。在极端场景下,大量用户同时需要读取修改的数据集中在某一区域时,线程间竞争带来的等待和切换成本极大消耗计算资源,导致数据库***性能瓶颈的出现。
有鉴于此,本申请提出了数据库的数据访问方法,相当于一种降低资源访问竞争的协程任务自适应分配算法。首先将查询请求包装成协程任务,依据不同协程任务访问各个分区的访问次数,在兼顾每个线程的工作负载的情况下,尽可能将访问相同分区的协程任务分配给同一线程,减少每个线程访问的数据重叠度。同时该算法可以根据当前***的运行状态,动态地调整每个线程访问资源的侧重点。由于线程执行协程任务是顺序执行,属于同一个线程的协程任务之间不存在并行访问资源的竞争关系,因此数据库***整体的资源访问竞争可以得到有效降低。
此外,本申请实施例还提出了数据库的数据访问装置、电子设备及存储介质,旨在面对数据库并发读取时,可以减少线程间竞争带来的等待和切换成本极大消耗计算资源,能够提高数据库的并发访问效率。
本申请实施例提供的数据库的数据访问方法应用于服务器端中,还可以是运行于终端或服务器端中的软件。服务器端可以配置成独立的物理服务器,也可以配置成多个物理服务器构成的服务器集群或者分布式***,还可以配置成提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN以及大数据和人工智能平台等基础云计算服务的云服务器;软件可以是实现数据库的数据访问方法的应用等,但并不局限于以上形式。
本申请可用于众多通用或专用的计算机***环境或配置中。例如:服务器计算机、多处理器***、基于微处理器的***、置顶盒、可编程的消费电子设备、网络PC、包括以上任何***或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本申请实施例提供数据库的数据访问方法和装置、电子设备、存储介质,具体通过如下实施例进行说明,首先描述本申请实施例中的数据库的数据访问方法。
图1是本申请实施例提供的数据库的数据访问方法的一个可选的流程图,数据库包括多个分区,该数据库的数据访问方法可以包括但不限于包括步骤101至步骤106。
步骤101,基于对数据库的查询请求,确定待分配协程任务;
步骤102,获取待分配协程任务对各个分区的目标访问次数;
步骤103,获取多个候选线程对各个分区的访问偏好度;
步骤104,基于目标访问次数和访问偏好度,预测待分配协程任务分配给候选线程的分配分数;
步骤105,基于分配分数,从多个候选线程确定目标线程;
步骤106,将待分配协程任务分配至目标线程,由目标线程基于待分配协程任务访问分区。
本申请实施例所示意的步骤101至步骤106,数据库包括多个分区,不同的分区用于存放不同的数据资源。基于目标访问次数和访问偏好度预测每个候选线程的分配分数,且基于分配分数确定目标线程。然后将待分配协程任务分配至目标线程。这样一来,可以将访问同一分区的待分配协程任务分配至相同的目标线程,减少每个目标线程访问的数据重叠度。由于线程执行协程任务是顺序执行,属于同一个线程的协程任务之间不存在竞争关系,因此数据库***整体的资源访问竞争可以得到有效降低,从而提高了数据库的访问效率。
需要说明的是,数据库一般存放了很多表。可以将一张表作为一个分区,也可以将多张表作为一个分区。在一示例中,一张表存储老师信息,一张表存储课程信息,一张表存储老师和课程之间的关系(一对多)。三张表分别对应三个分区。例如,老师信息表作为分区,课程信息表作为分区/>,老师和课程之间的关系表作为分区/>。
在一些实施例的步骤101中,基于对数据库的查询请求,确定待分配协程任务。查询请求是指由对象发出的、用于查询数据库的数据的请求。待分配协程任务是指还未分配至目标线程的协程任务,且基于查询请求生成。同一线程上可以容纳多个协程任务,这些协程任务可以并发运行。
在一实施例中,步骤101包括:
基于对数据库的查询请求,确定从多个分区中确定多个查询分区;
基于多个查询分区,将查询请求包装成多个待分配协程任务;其中,一个待分配协程任务对应一个查询分区。
在一示例中,如果对象需要查询某个老师的信息以及教了几门课程,那么需要访问分区获取老师信息,同时需要访问分区/>,计算出该老师一共教了几门课。在该示例中,可以基于查询请求确定出查询分区为2个,从而待分配协程任务为2个。
该实施例的好处是,将查询请求基于查询分区包装成多个待分配协程任务,且一个待分配协程任务对应一个查询分区,这样一来,目标线程在执行该待分配协程任务时,减少跨分区进行访问的次数,有助于提高数据库的访问效率。
在一些实施例的步骤102中,获取待分配协程任务对各个分区的目标访问次数。目标访问次数是指需要访问分区的次数,用于衡量对分区的访问频率。可以调用执行优化器获取待分配协程任务对各个分区的目标访问次数,也可以是对待分配协程任务进行解析,得到各个分区的目标访问次数。
在一示例中,待分配协程任务包括{查询***的信息,查询***教了几门课程,查询刘老师的信息,查询刘老师教了几门课程}。基于“查询***的信息”和“查询刘老师的信息”需要访问分区的目标访问次数为20次。基于“查询***教了几门课程”和“查询刘老师教了几门课程”需要访问分区/>的目标访问次数为200次。最后,该示例中的待分配协程任务对分区/>的目标访问次数为20次,且对分区/>的目标访问次数为200次。
在另一示例中,上例的待分配协程任务可以分为两个待分配协程任务。一个待分配协程任务包括{查询***的信息,查询刘老师的信息},则该待分配协程任务对分区的目标访问次数为20次。另一个待分配协程任务包括{查询***教了几门课程,查询刘老师教了几门课程},则该待分配协程任务对分区/>的目标访问次数为200次。需要说明的是,由于本申请实施例采用基于分配分数进行分配至目标线程,因此不同的待分配协程任务大概率是由不同的线程执行,所以如果某个协程任务本身不涉及2个以上的分区,则可以进一步减少线程之间的访问竞争,进一步提高了数据库的访问效率。
在一些实施例的步骤103中,获取多个候选线程对各个分区的访问偏好度。访问偏好度用于衡量候选线程对分区的访问频率。在一实施例中,步骤103包括:基于候选线程上的已分配协程任务获取对各个分区的访问偏好度。
在一实施例中,参照图2,步骤103包括:
步骤201,基于多个分区和多个候选线程,构建访问偏好矩阵;其中,访问偏好矩阵中的各个元素用于指示候选线程对分区的访问偏好度;
步骤202,从访问偏好矩阵获取访问偏好度。
在一示例中,假定数据库包括,共计m个分区,且假定可以用于协程任务执行的线程数为n,则访问偏好矩阵/>为一个/>的矩阵,其中元素/>表示第j号候选线程对第i个分区的访问偏好度,并满足/>。初始时,中的每一个元素的初始值设为/>,即表示每个候选线程对任意分区的访问偏好度相同。在构建好访问偏好矩阵之后,各个元素将根据候选线程上的已分配的待分配协程任务进行更新,从而从访问偏好矩阵获取到的访问偏好度是更新的。
该实施例的好处是,基于构建的访问偏好矩阵可以便捷地获取访问偏好度,提高了获取效率。
在一些实施例的步骤104中,基于目标访问次数和访问偏好度,预测待分配协程任务分配给候选线程的分配分数。
在一示例中,例如对于第j号候选线程,分配分数为。/>表示对第i个分区的目标访问次数,/>表示第j号候选线程对第i个分区的访问偏好度。/>为正值权重,可以根据具体需求调整。/>表示目标访问次数与第j号候选线程的访问偏好度的匹配程度,如果该目标访问次数较大的分区刚好是第j号候选线程访问偏好度最高的分区,则该项值偏大,否则该项值偏小。
在一实施例中,参照图3,步骤104包括:
步骤301,获取待分配协程任务的目标负载,获取候选线程的已有负载;
步骤302,基于目标负载和已有负载,确定第一分数;
步骤303,基于目标访问次数与访问偏好度进行相乘,确定第二分数;
步骤304,基于第二分数与第一分数进行相减,确定分配分数。
具体地,目标负载是指待分配协程任务的计算量,通常指这个协程任务从开始到结束需要消耗多少个CPU时钟周期。通俗来说就是需要几次加减乘除才能得到最终结果。基于目标负载和已有负载可以确定出候选线程的负载压力。目标负载越高,说明该待分配协程任务所需的计算量越高,候选线程的负载压力越大。
需要说明的是,参照上述三个表的例子,对象需要查询某个老师的信息以及教了几门课程。那么对于老师这张表的分区,需要BTree索引查找,可能需要访问10次数据。对于老师和课程之间的关系表,可能需要全表扫描,需要访问100次,CPU代价为需要10^5个时钟周期。平均已有负载和待分配协程任务无关,和已分配的待分配协程任务(又称正在执行的协程任务)相关,例如为10^6个时钟周期。
在该实施例中,除了考虑目标访问次数和访问偏好度对分配分数的影响,还考虑了目标负载和已有负载对分配分数的影响。基于第一分数和第二分数共同确定分配分数,使得某个候选线程虽然第二分数低一些,但该候选线程对应的已有负载与目标负载进行相加,负载压力可能较低,可以得到较低的第一分数。从而第二分数减去第一分数,使得该候选线程与第二分数较高的其它线程相比,分配分数可能更高。
该实施例的好处是,基于第一分数和第二分数共同确定分配分数,使得考虑了候选线程的负载压力,又考虑了候选线程访问分区的偏好程度,提高了分配分数的确定准确率。
在一实施例中,参照图4,步骤502包括:
步骤401,将目标负载和已有负载进行求和,得到总负载;
步骤402,获取所有的候选线程的平均已有负载;
步骤403,基于总负载与平均已有负载进行相减,确定第一分数。
在该实施例中,对于第j号候选线程,第一分数,其中,/>表示第j号候选线程的已有负载,b表示目标负载,/>表示平均已有负载,/>。第一分数越低,说明候选线程的负载压力越低,从而候选线程的分配分数越高。该/>表示把待分配协程任务分配给第j号候选线程后,第j号线程的总负载和平均已有负载的差值,如果小于平均负载,则对分配得分有正贡献,大于则有负贡献,此项用于控制负载均衡。
该实施例的好处是,在确定第一分数时,不仅考虑目标负载和单个候选线程本身的已有负载,还考虑了平均已有负载对第一分数的影响,进一步提高了确定第一分数的准确率,从而有助于提高分配分数的确定准确率。
在一实施例中,步骤404中基于第二分数与第一分数进行相减,确定分配分数,具体可选择如下公式:
公式(1)。
其中,和/>为正值权重。权重的大小可需要时间需求设置,本实施例不作具体限定。
需要说明的是,时钟周期b从数值上来说肯定远大于访问次数a,所以一般比/>小很多。例如为了让两项数量级相等,可能/>为10^3,/>为1。当然这个可以通过修改单位来控制,比如10^3个时钟周期为一个CPU代价单位,从而调整/>和/>。
在一些实施例的步骤105中,基于分配分数,从多个候选线程确定目标线程。可以是将最大的分配分数对应的候选线程作为目标线程。也可以是将分配分数大于分数阈值的候选线程作为目标线程。
在一实施例中,多个候选线程按顺序设置线程编号,步骤105包括:
基于分配分数,对多个候选线程进行排列;
基于排列结果,获取最大的分配分数对应的线程编号;
如果线程编号为多个线程编号,则将多个线程编号中最小的线程编号对应的候选线程作为目标线程。
在一示例中,假定有3个候选线程。这3个候选线程的线程编号为001、002、和003。001对应的候选线程的分配分数分别是90。002对应的候选线程的分配分数90。003对应的候选线程的分配分数为80。则获取最大的分配分数为90,且获取分配分数为90的线程编号包括001和002。由于001和002中的最小的线程编号为001,所以将001对应的候选线程作为目标线程。
该实施例的好处是,考虑到实际应用中多个候选线程都是按照顺序设置编号,这样在发生最大的分配分数对应有多个线程编号时,直接基于最小的线程编号确定目标线程,可以减少一些算法逻辑,节约处理资源。例如,在初始化时,所有候选线程的都没有分配到协程任务,且所有的候选线程的匹配分数均相同,则最大的匹配分数对应的线程编号无疑包括所有的候选线程,此时直接将最小的线程编号对应的候选线程作为目标线程,提高了确定目标线程的效率。
在一些实施例的步骤106中,将待分配协程任务分配至目标线程,由目标线程基于待分配协程任务访问分区。
参照图5,在一实施例中,在将待分配协程任务分配至目标线程之后,本实施例的数据访问方法还包括:
步骤501,针对访问偏好矩阵中目标线程对应的元素,获取初始值;
步骤502,获取目标线程的已分配的待分配协程任务对各个分区的已有访问次数;
步骤503,基于已有访问次数与目标访问次数进行求和,得到目标线程对各个分区的第一总分区访问次数;
步骤504,将初始值与已有访问次数进行相乘,且将相乘结果与目标访问次数进行求和,得到目标线程对单个分区的第一单个分区访问次数;
步骤505,基于第一单个分区访问次数与第一总分区访问次数之间的比值,得到第一目标更新值;
步骤506,基于第一目标更新值替换初始值,以更新访问偏好矩阵。
在一示例中,假定该待分配协程任务的目标访问次数为,且该待分配协程任务分配给的目标线程为第j号候选线程。获取元素/>的初始值为/>。获取候选线程的已分配协程任务对各个分区的已有访问次数,相当于获取第j号线程上所有未结束协程任务对所有分区的已有访问次数为/>。实时更新第j号线程对第i个分区的访问偏好度。其中,/>表示该待分配协程任务分配给第j号线程以后,j号线程上所有未结束协程任务对所有分区的第一总分区访问次数,/>表示分配后第j号线程对第i个分区的第一单个分区访问次数。第j号线程对应的/>更新为。
该实施例的好处是,在将待分配协程任务分配至目标线程之后,目标线程对应的各个元素将根据目标线程上的已分配的待分配协程任务进行更新,提高了更新矩阵的准确率。
参照图6,在一实施例中,在步骤506之后,本实施例的数据访问方法还包括:
步骤601,响应于待分配协程任务对数据库的访问结束,基于已有访问次数与目标访问次数进行相减,得到目标线程对各个分区的第二总分区访问次数;
步骤602,将第一目标更新值与已有访问次数进行相乘,且将相乘结果与目标访问次数进行相减,得到目标线程对单个分区的第二单个分区访问次数;
步骤603,基于第二单个分区访问次数与第二总分区访问次数之间的比值,得到第二目标更新值;
步骤604,基于第二目标更新值替换第一目标更新值,以更新访问偏好矩阵。
在一示例中,响应于待分配协程任务对数据库的访问结束,相当于当待分配协程任务执行完毕时,需要对上述变量进行相反的更新操作。以第j号线程为例,第二总分区访问次数为,第二单个分区访问次数为/>,则第二目标更新值为:/>。第j号线程对应的/>更新为/>。
在一实施例中,如果,则说明第j号线程没有正在执行的协程任务,则置/>。该实施例的好处是,减少因第二总分区访问次数为零导致矩阵中存在无穷大的元素值,从而影响从访问偏好矩阵获取访问偏好度的稳定性。
在一示例中,假定第j号候选线程被确定为目标线程,则第j号线程的已有负载更新为b,平均负载更新为/>。响应于待分配协程任务对数据库的访问结束,第j号线程的已有负载更新为/>b,平均负载更新为/>。
下面结合图7对本申请的具体实现细节进行详细描述。
参照图7,本申请实施例具体包括以下实施细节:
获取查询请求,将查询请求包装成待分配协程任务;
根据数据库执行优化器,得到待分配协程任务对每个分区的目标访问次数,以及待分配协程任务的目标负载b;如图7所示,该任务与多个分区之间的黑色箭头越粗,则表示目标访问次数越高,目标负载未示出;
从访问偏好矩阵获取多个候选线程对各个分区的访问偏好度,如图7所示,多个线程与多个分区之间的黑色箭头越粗,则表示访问偏好度越高;
对每个候选线程计算该待分配协程任务的分配分数,
;
将待分配协程任务分配给最大的分配分数对应的候选线程,如图7所示,将待分配协程任务分配至虚线箭头所指的线程003,由线程003基于待分配协程任务访问分区;
假定该协程任务分配给j号线程,更新参数值,则,,/>b,/>;
当协程任务执行结束,更新对应的参数值,则,/>,b,/>。
请参阅图8,本申请实施例还提供数据库的数据访问装置,可以实现上述数据库的数据访问方法,图8为本申请实施例提供的数据库的数据访问装置的模块结构框图,数据库包括多个分区,该数据访问装置包括:第一确定模块701、第一获取模块702、第二获取模块703、预测模块704、第二确定模块705、和分配模块706。其中,第一确定模块701,用于基于对数据库的查询请求,确定待分配协程任务;第一获取模块702,用于获取待分配协程任务对各个分区的目标访问次数;第二获取模块703,用于获取多个候选线程对各个分区的访问偏好度;预测模块704,用于基于目标访问次数和访问偏好度,预测待分配协程任务分配给候选线程的分配分数;第二确定模块705,用于基于分配分数,从多个候选线程确定目标线程;分配模块706,用于将待分配协程任务分配至目标线程,由目标线程基于待分配协程任务访问分区。
在一实施例中,数据访问装置还包括:更新模块。更新模块用于:
针对访问偏好矩阵的每一元素,获取初始值;获取候选线程的已分配协程任务对各个分区的已有访问次数;
基于已有访问次数与目标访问次数进行求和,得到目标线程对各个分区的第一总分区访问次数;
将初始值与已有访问次数进行相乘,且将相乘结果与目标访问次数进行求和,得到目标线程对单个分区的第一单个分区访问次数;
基于第一单个分区访问次数与第一总分区访问次数之间的比值,得到第一目标更新值;基于第一目标更新值替换初始值,以更新访问偏好矩阵。
在一实施例中,更新模块还用于:
响应于待分配协程任务对数据库的访问结束,基于已有访问次数与目标访问次数进行相减,得到目标线程对各个分区的第二总分区访问次数;
将第一目标更新值与已有访问次数进行相乘,且将相乘结果与目标访问次数进行相减,得到目标线程对单个分区的第二单个分区访问次数;
基于第二但分区访问次数与第二总分区访问次数之间的比值,得到第二目标更新值;
基于第二目标更新值替换第一目标更新值,以更新访问偏好矩阵。
需要说明的是,该数据访问装置的具体实施方式与上述数据库的数据访问方法的具体实施例基本相同,在此不再赘述。
本申请实施例还提供了电子设备,电子设备包括:存储器、处理器、存储在存储器上并可在处理器上运行的程序以及用于实现处理器和存储器之间的连接通信的数据总线,程序被处理器执行时实现上述数据库的数据访问方法。该电子设备可以为包括平板电脑、车载电脑等任意智能终端。
请参阅图9,图9示意了另一实施例的电子设备的硬件结构,电子设备包括:
处理器801,可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请实施例所提供的技术方案;
存储器802,可以采用只读存储器(Read Only Memory,ROM)、静态存储设备、动态存储设备或者随机存取存储器(Random Access Memory,RAM)等形式实现。存储器802可以存储操作***和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器802中,并由处理器801来调用执行本申请实施例的数据库的数据访问方法;
输入/输出接口803,用于实现信息输入及输出;
通信接口804,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信;
总线805,在设备的各个组件(例如处理器801、存储器802、输入/输出接口803和通信接口804)之间传输信息;
其中处理器801、存储器802、输入/输出接口803和通信接口804通过总线805实现彼此之间在设备内部的通信连接。
本申请实施例还提供了存储介质,存储介质为计算机可读存储介质,用于计算机可读存储,存储介质存储有一个或者多个程序,一个或者多个程序可被一个或者多个处理器执行,以实现上述数据库的数据访问方法。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本申请实施例描述的实施例是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本领域技术人员可以理解的是,图1-6中示出的技术方案并不构成对本申请实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、***、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序的介质。
以上参照附图说明了本申请实施例的优选实施例,并非因此局限本申请实施例的权利范围。本领域技术人员不脱离本申请实施例的范围和实质内所作的任何修改、等同替换和改进,均应在本申请实施例的权利范围之内。
Claims (10)
1.一种数据库的数据访问方法,其特征在于,所述数据库包括多个分区,所述数据访问方法包括:
基于对所述数据库的查询请求,确定待分配协程任务;
获取所述待分配协程任务对各个所述分区的目标访问次数;
获取多个候选线程对各个所述分区的访问偏好度;
基于所述目标访问次数和所述访问偏好度,预测所述待分配协程任务分配给所述候选线程的分配分数;
基于所述分配分数,从多个所述候选线程确定目标线程;
将所述待分配协程任务分配至所述目标线程,由所述目标线程基于所述待分配协程任务访问所述分区。
2.根据权利要求1所述的数据访问方法,其特征在于,所述获取多个候选线程对各个所述分区的访问偏好度,包括:
基于多个所述分区和多个所述候选线程,构建访问偏好矩阵;其中,所述访问偏好矩阵中的各个元素用于指示所述候选线程对所述分区的访问偏好度;
从所述访问偏好矩阵获取所述访问偏好度。
3.根据权利要求2所述的数据访问方法,其特征在于,在所述将所述待分配协程任务分配至所述目标线程之后,所述数据访问方法还包括:
针对所述访问偏好矩阵中所述目标线程对应的元素,获取初始值;
获取所述目标线程的已分配的所述待分配协程任务对各个分区的已有访问次数;
基于所述已有访问次数与所述目标访问次数进行求和,得到所述目标线程对各个所述分区的第一总分区访问次数;
将所述初始值与所述已有访问次数进行相乘,且将相乘结果与所述目标访问次数进行求和,得到所述目标线程对单个所述分区的第一单个分区访问次数;
基于所述第一单个分区访问次数与所述第一总分区访问次数之间的比值,得到第一目标更新值;
基于所述第一目标更新值替换所述初始值,以更新所述访问偏好矩阵。
4.根据权利要求3所述的数据访问方法,其特征在于,在基于所述目标更新值替换所述初始值,以更新所述访问偏好矩阵之后,所述数据访问方法还包括:
响应于所述待分配协程任务对所述数据库的访问结束,基于所述已有访问次数与所述目标访问次数进行相减,得到所述目标线程对各个所述分区的第二总分区访问次数;
将所述第一目标更新值与所述已有访问次数进行相乘,且将相乘结果与所述目标访问次数进行相减,得到所述目标线程对单个所述分区的第二单个分区访问次数;
基于所述第二单个分区访问次数与所述第二总分区访问次数之间的比值,得到第二目标更新值;
基于所述第二目标更新值替换所述第一目标更新值,以更新所述访问偏好矩阵。
5.根据权利要求1至4任一项所述的数据访问方法,其特征在于,所述基于所述目标访问次数和所述访问偏好度,预测所述待分配协程任务分配给所述候选线程的分配分数,包括:
获取所述待分配协程任务的目标负载,获取所述候选线程的已有负载;
基于所述目标负载和所述已有负载,确定第一分数;
基于所述目标访问次数与所述访问偏好度进行相乘,确定第二分数;
基于所述第二分数和所述第一分数进行相减,确定所述分配分数。
6.根据权利要求5所述的数据访问方法,其特征在于,所述基于所述目标负载,确定第一分数,包括:
将所述目标负载和所述已有负载进行求和,得到总负载;
获取所有的所述候选线程的平均已有负载;
将所述总负载与所述平均已有负载进行相减,确定第一分数。
7.根据权利要求1至4任一项所述的数据访问方法,其特征在于,多个所述候选线程按顺序设置线程编号;
所述基于所述分配分数,从多个所述候选线程确定目标线程,包括:
基于所述分配分数,对多个所述候选线程进行排列;
基于排列结果,获取最大的所述分配分数对应的所述线程编号;
如果所述线程编号为多个所述线程编号,则将多个所述线程编号中最小的所述线程编号对应的所述候选线程作为所述目标线程。
8.一种数据库的数据访问装置,其特征在于,所述数据库包括多个分区,所述数据访问装置包括:
第一确定模块,用于基于对所述数据库的查询请求,确定待分配协程任务;
第一获取模块,用于获取所述待分配协程任务对各个所述分区的目标访问次数;
第二获取模块,用于获取多个候选线程对各个所述分区的访问偏好度;
预测模块,用于基于所述目标访问次数和所述访问偏好度,预测所述待分配协程任务分配给所述候选线程的分配分数;
第二确定模块,用于基于所述分配分数,从多个所述候选线程确定目标线程;
分配模块,用于将所述待分配协程任务分配至所述目标线程,由所述目标线程基于所述待分配协程任务访问所述分区。
9.一种电子设备,其特征在于,所述电子设备包括存储器、处理器、所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的数据库的数据访问方法。
10.一种存储介质,所述存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的数据库的数据访问方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311108662.6A CN116820786B (zh) | 2023-08-31 | 2023-08-31 | 数据库的数据访问方法和装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311108662.6A CN116820786B (zh) | 2023-08-31 | 2023-08-31 | 数据库的数据访问方法和装置、电子设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116820786A true CN116820786A (zh) | 2023-09-29 |
CN116820786B CN116820786B (zh) | 2023-12-19 |
Family
ID=88141509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311108662.6A Active CN116820786B (zh) | 2023-08-31 | 2023-08-31 | 数据库的数据访问方法和装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116820786B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076720A (zh) * | 2023-10-18 | 2023-11-17 | 北京燧原智能科技有限公司 | 一种嵌入表访问方法、装置、电子设备及存储介质 |
CN117519931A (zh) * | 2023-11-09 | 2024-02-06 | 中国三峡建工(集团)有限公司 | 一种基于多核心工作线程上的协程调度方法、***及设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7200721B1 (en) * | 2002-10-09 | 2007-04-03 | Unisys Corporation | Verification of memory operations by multiple processors to a shared memory |
CN107632889A (zh) * | 2017-06-28 | 2018-01-26 | 努比亚技术有限公司 | 一种实现服务降级的方法、设备及计算机可读存储介质 |
CN110377416A (zh) * | 2018-12-04 | 2019-10-25 | 天津京东深拓机器人科技有限公司 | 分布式分区任务调度方法和装置 |
CN110727517A (zh) * | 2019-10-12 | 2020-01-24 | 福建顶点软件股份有限公司 | 一种基于分区设计的内存分配方法和装置 |
CN111078394A (zh) * | 2019-11-08 | 2020-04-28 | 苏州浪潮智能科技有限公司 | 一种gpu线程负载均衡方法与装置 |
CN115408117A (zh) * | 2021-05-28 | 2022-11-29 | 腾讯科技(深圳)有限公司 | 协程运行方法、装置、计算机设备和存储介质 |
-
2023
- 2023-08-31 CN CN202311108662.6A patent/CN116820786B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7200721B1 (en) * | 2002-10-09 | 2007-04-03 | Unisys Corporation | Verification of memory operations by multiple processors to a shared memory |
CN107632889A (zh) * | 2017-06-28 | 2018-01-26 | 努比亚技术有限公司 | 一种实现服务降级的方法、设备及计算机可读存储介质 |
CN110377416A (zh) * | 2018-12-04 | 2019-10-25 | 天津京东深拓机器人科技有限公司 | 分布式分区任务调度方法和装置 |
CN110727517A (zh) * | 2019-10-12 | 2020-01-24 | 福建顶点软件股份有限公司 | 一种基于分区设计的内存分配方法和装置 |
CN111078394A (zh) * | 2019-11-08 | 2020-04-28 | 苏州浪潮智能科技有限公司 | 一种gpu线程负载均衡方法与装置 |
CN115408117A (zh) * | 2021-05-28 | 2022-11-29 | 腾讯科技(深圳)有限公司 | 协程运行方法、装置、计算机设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
宋广华: "多线程内存数据库服务器设计", 计算机工程与应用, no. 18, pages 107 - 110 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076720A (zh) * | 2023-10-18 | 2023-11-17 | 北京燧原智能科技有限公司 | 一种嵌入表访问方法、装置、电子设备及存储介质 |
CN117076720B (zh) * | 2023-10-18 | 2024-02-02 | 北京燧原智能科技有限公司 | 一种嵌入表访问方法、装置、电子设备及存储介质 |
CN117519931A (zh) * | 2023-11-09 | 2024-02-06 | 中国三峡建工(集团)有限公司 | 一种基于多核心工作线程上的协程调度方法、***及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN116820786B (zh) | 2023-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116820786B (zh) | 数据库的数据访问方法和装置、电子设备、存储介质 | |
US10606654B2 (en) | Data processing method and apparatus | |
US10310908B2 (en) | Dynamic usage balance of central processing units and accelerators | |
Mishra et al. | Esp: A machine learning approach to predicting application interference | |
CN106959894B (zh) | 资源分配方法和装置 | |
Nghiem et al. | Towards efficient resource provisioning in MapReduce | |
US20170024242A9 (en) | Techniques to manage virtual classes for statistical tests | |
US20170017674A1 (en) | Adaptive table placement in numa architectures | |
CN104202373A (zh) | 移动云计算迁移方法及*** | |
CN107729353B (zh) | 用于执行机器学习的分布式***及其方法 | |
CN114895773B (zh) | 异构多核处理器的能耗优化方法、***、装置及存储介质 | |
CN109032511A (zh) | 一种数据存储方法、服务器及存储介质 | |
Hendawi et al. | Benchmarking large-scale data management for Internet of Things | |
CN106843769A (zh) | 一种接口数据缓存方法、装置和计算设备 | |
US11106670B2 (en) | Local identifiers for database objects | |
US9703573B1 (en) | Interposer for dynamic mapping of API calls | |
Huang et al. | Performance and replica consistency simulation for quorum-based NoSQL system cassandra | |
WO2022267364A1 (zh) | 一种信息推荐方法、设备及存储介质 | |
Paokin et al. | Approbation of Methods for Supercomputer Job Queue Wait Time Estimation | |
Sen et al. | Predictive price-performance optimization for serverless query processing | |
US20230091753A1 (en) | Systems and methods for data processing unit aware workload migration in a virtualized datacenter environment | |
Ghazali et al. | CLQLMRS: improving cache locality in MapReduce job scheduling using Q-learning | |
US11003565B2 (en) | Performance change predictions | |
KR20210095083A (ko) | 그래프 계산의 처리 방법, 장치, 전자기기 및 저장매체 | |
US8521721B2 (en) | Custom operators for a parallel query engine |
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 |