一种终端数据库的并行执行方法和装置与流程

文档序号:11590372阅读:159来源:国知局

本发明涉及智能终端领域,尤其涉及一种终端数据库的并行执行方法和装置。



背景技术:

随着智能终端功能越来越强大,存储空间越来越大,其内部存储的数据量越来越多,用户查询的数据量也在不断增大,这导致终端内部的应用响应时间也越来越长。另一方面,智能终端的中央处理器(centralprocessingunit,cpu)核数不断增大,处理能力越来越强。利用多核优势加速数据查询是智能终端数据库的一个优化方向。

目前智能终端中的数据库基本都是采用轻量的开源数据库(例如sqlite)。传统智能终端数据库支持多个连接并发访问数据库,但是不支持单一结构化查询语言(structuredquerylanguage,sql)语句的并发执行。因此如果某一个sql语句很复杂,需要消耗大量cpu,这种情况下终端数据库无法利用到多核优势。同时,当前很多终端的cpu都是基于arm处理器的大小核(big.little)架构,这种cpu有大核和小核之分。同时,终端也会根据特定策略调整cpu的主频,这导致每个cpu在执行相同任务时的执行时间会有很大差异。对于同样的任务量,cpu小核执行时间往往是大核执行时间的一倍半到两倍。同时,如果对cpu进行限制频率的话,同样任务量的执行时间也会大大增加。

另外,智能终端数据库通常不会特别大,同时对数据库查询和更新的时间要求也比较严格。即查询和更新时间往往在1秒以下,和界面显示相关的查询往往需要在200毫秒以下,以保证一些界面操作肉眼无感知。因此,智能终端数据库需要有比较快速的sql语句解析和执行时间。

在传统的服务端数据库中(例如oracle、sqlserver),都支持sql语句并行执行。基本思想是用户在sql语句中设置并行度或数据库自身根据cpu核数自动设置并行度。然后数据库执行引擎分析数据表中的数据分布情况,然后将数据表拆分成独立分区并行执行。

传统服务端数据库的数据分析和数据表拆分往往很复杂,需要收集很多统计信息。所以这种并行执行前的准备工作往往相对比较耗时,而并行执行往往也针对很大的数据规模和执行时间很长的sql语句才适用。而对耗时仅仅几秒钟的sql语句则不适用。而终端数据库通常的sql语句执行时间只有几毫秒或几十毫秒,超过200毫秒则容易被人眼感知到影响用户体验。因此终端数据库无法利用很多统计信息来进行数据表拆分。同时,由于智能终端的cpu有大核和小核之分,如果将执行任务平均分配给各cpu核,则会出现大核执行结束后不得不等待小核执行完成的情况,导致执行效率降低。

综上所述,当终端cpu存在大核、小核差异情况下,如何利用多核优势提高终端数据库的并行执行效率成为亟待解决的问题。



技术实现要素:

本发明实施例提供一种终端数据库的并行执行方法和装置,以解决终端cpu存在大核、小核差异情况下,无法利用多核实现终端数据库的并行执行问题。

本发明实施例提供的具体技术方案如下:

第一方面,本发明实施例提供一种终端数据库的并行执行方法,包括:

终端基于预设的并行度确定各个线程cpu,所述并行度为并行执行的线程数;

终端获取每个线程cpu的主频,计算各个线程cpu的主频比例;

终端基于所述各个线程cpu的主频比例对终端数据库中的待查询的数据表划分数据分区,确定各个线程cpu对应的数据分区;

终端通过各个线程cpu并行查询对应的数据分区中的数据。

在一个可能的设计中,终端基于所述各个线程cpu的主频比例对终端数据库中的待查询的数据表划分数据分区,可以通过如下方式实现:

终端读取所述数据表中与索引根页相连的第一层子页的个数;

按照所述各个线程cpu的主频比例将第一层子页划分为n个数据分区,n为预设的并行度。

在一个可能的设计中,上述提到终端读取所述数据表中与索引根页相连的第一层子页的个数,按照所述各个线程cpu的主频比例将第一层子页划分为n个数据分区,此时,所述n个数据分区中的第一层子页数目比例与所述各个线程cpu的主频比例相等或近似相等。例如,终端在第一层子页数目较多时,按照各个线程cpu的主频比例将第一层子页划分为n个数据分区,能够快速实现终端数据库的动态分区,进一步提高了终端对各个数据分区中的数据查询效率

在一个可能的设计中,终端基于所述各个线程cpu的主频比例对终端数据库中的待查询的数据表划分数据分区,可以通过如下方式实现:

终端读取所述数据表中与索引根页相连的第一层子页中每个子页记录的数据个数;

基于每个子页记录的个数,按照所述各个线程cpu的主频比例将第一层子页中记录的数据划分为n个数据分区,n为预设的并行度。

在一个可能的设计中,上述提到终端读取第一层子页中每个子页记录的数据个数;基于每个子页记录的个数,按照所述各个线程cpu的主频比例将第一层子页中记录的数据划分为n个数据分区,此时,所述n个数据分区中的第一层子页记录的数据个数比例与所述各个线程cpu的主频比例相等或近似相等。例如,终端在第一层子页数目较少时,继续读取数据表中第一层子页中每个子页记录的数据个数,按照各个线程cpu的主频比例将第一层子页中记录的数据划分为n个数据分区,这样使得各个数据分区中记录的数据个数比例与各个cpu主频比例更加接近,而且能够兼顾数据分区的划分效率,贴合实 际。

在一个可能的设计中,上述提到的所述数据表为b-tree格式的数据表或为heap格式的数据表。

这样,能够基于终端各线程cpu的主频因素对终端数据库中待查询的数据表进行动态分区,能够使得主频较大的线程cpu查询较多的数据量,主频较小的线程cpu查询较少的数据量,同时利用各线程cpu对对应数据分区执行查询指令的并行化处理,能够极大提升终端对数据库的并行查询执行效率。

第二方面,本发明实施例提供一种终端数据库的并行执行装置,包括:

确定单元,用于基于预设的并行度确定各个线程cpu,所述并行度为并行执行的线程数;

计算单元,用于获取每个线程cpu的主频,计算各个线程cpu的主频比例;

划分单元,用于基于所述各个线程cpu的主频比例对终端数据库中的待查询的数据表划分数据分区,确定各个线程cpu对应的数据分区;

查询单元,用于通过各个线程cpu并行查询对应的数据分区中的数据。

在一个可能的设计中,所述划分单元基于所述各个线程cpu的主频比例对终端数据库中的待查询的数据表划分数据分区时,具体用于:

读取所述数据表中与索引根页相连的第一层子页的个数;

按照所述各个线程cpu的主频比例将第一层子页划分为n个数据分区,n为预设的并行度。

在一个可能的设计中,上述提到的所述划分单元读取所述数据表中与索引根页相连的第一层子页的个数,按照所述各个线程cpu的主频比例将第一层子页划分为n个数据分区,此时,所述n个数据分区中的第一层子页数目比例与所述各个线程cpu的主频比例相等或近似相等。所述划分单元在第一层子页数目较多时,按照各个线程cpu的主频比例将第一层子页划分为n个数据分区,能够快速实现终端数据库的动态分区,进一步提高了终端对各个数据 分区中的数据查询效率。

在一个可能的设计中,所述划分单元基于所述各个线程cpu的主频比例对终端数据库中的待查询的数据表划分数据分区时,具体用于:

读取所述数据表中与索引根页相连的第一层子页中每个子页记录的数据个数;

基于每个子页记录的个数,按照所述各个线程cpu的主频比例将第一层子页中记录的数据划分为n个数据分区,n为预设的并行度。

在一个可能的设计中,上述提到的所述划分单元读取所述数据表中与索引根页相连的第一层子页中每个子页记录的数据个数,基于每个子页记录的个数,按照所述各个线程cpu的主频比例将第一层子页中记录的数据划分为n个数据分区,此时,所述n个数据分区中的第一层子页记录的数据个数比例与所述各个线程cpu的主频比例相等或近似相等。例如,所述划分单元在第一层子页数目较少时,继续读取数据表中第一层子页中每个子页记录的数据个数,按照各个线程cpu的主频比例将第一层子页中记录的数据划分为n个数据分区,这样使得各个数据分区中记录的数据个数比例与各个cpu主频比例更加接近,而且能够兼顾数据分区的划分效率,贴合实际。

在一个可能的设计中,上述提到的所述数据表为b-tree格式的数据表或为heap格式的数据表。

这样,能够基于终端各线程cpu的主频因素对终端数据库中待查询的数据表进行动态分区,能够使得主频较大的线程cpu查询较多的数据量,主频较小的线程cpu查询较少的数据量,同时利用各线程cpu对对应数据分区执行查询指令的并行化处理,能够极大提升终端对数据库的并行查询执行效率。

第三方面,本发明实施例提供了一种终端设备,该终端设备具有实现上述方法设计中所述终端行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。所述模块可以是软件和/或硬件。

在一个可能的设计中,终端设备的结构中包括存储器和处理器,所述存储器中存储有程序指令。所述处理器控制终端设备根据存储器中存储的程序指令,基于终端设备中各个线程cpu的主频比例对终端数据库中的待查询的数据表划分数据分区,确定各个线程cpu对应的数据分区;通过各个线程cpu并行查询对应的数据分区中的数据。

第四方面,本发明实施例提供了一种计算机存储介质,用于储存为上述终端所用的计算机软件指令,其包含用于执行上述方面所设计的程序

本发明实施例中的终端数据库并行执行方案,基于终端各线程cpu的主频因素对终端数据库中待查询的数据表进行动态分区,同时利用各线程cpu对对应数据分区执行查询指令的并行化处理,能够极大提升终端对数据库的并行查询执行效率。

附图说明

图1为本发明实施例中虚拟机并行执行逻辑示意图;

图2为本发明实施例提供的终端设备的内部结构的示意图;

图3为本发明实施例中终端数据库的并行执行方法流程图;

图4为终端数据库中采用b-tree形式实现的数据表示意图;

图5为终端数据库中采用heap形式实现的数据表示意图;

图6为本发明实施例中终端数据库的并行执行装置结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供了一种终端数据库的并行执行方法和装置,用以解决终 端cpu存在大核、小核差异情况下,无法利用多核实现终端数据库的并行执行问题。其中,方法和装置是基于同一发明构思的,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。

下面结合附图对本发明的实施方式进行详细说明。

由于终端cpu存在大核、小核的主频差异因素,本发明实施例中的终端数据库的并行执行方法,在终端数据库动态分区过程中,按照当前终端cpu主频比例来动态划分数据库中的数据表区域,以确保不同cpu的执行时间差别不大,从而大大减少数据库结果集合并时的cpu等待时间。本发明需要结合终端数据库的并行执行引擎来实现终端数据数据库的并行执行功能。下面以手机终端数据库最常用的sqlite数据库为例来说明终端数据库并行执行引擎的实现方法。

图1所示的指令表给出了虚拟机并行执行逻辑。当执行引擎开始执行虚拟机指令时,会首先根据预先确定的并行度创建辅助线程,图中通过指令2和指令3创建了2个辅助线程,并根据主线程的主频和辅助线程的主频来对待查询的数据表进行动态分区(图中的指令4),其中,并行度为线程的并行执行个数。

主线程和各辅助线程根据预先生成的虚拟机并行执行逻辑执行各自代码段,例如对于上面图1中情况,主线程执行指令5-20,然后看到指令21则直接跳转到指令41,看到指令41则跳转到61。辅助线程1则跳转到21,执行21-40,然后退出;辅助线程2则跳转到41,执行41-60,然后退出。

主线程在指令61等待所有线程退出后,执行结果集的合并,并返回执行结果。

图1中指令4实现对数据表的动态分区,执行将数据表分解成不重叠的多个分区,才能够确保不同线程访问的数据不会交叉。对于不同的数据库,由于其数据表实现机制的不同,有不同的分区方法。

图2示出了本发明实施例提供的终端设备200的内部结构。终端设备200可包括手机、平板电脑、个人数字助理(personaldigitalassistant,pda)、销 售终端设备(pointofsales,pos)、车载电脑、台式电脑、笔记本、服务器等。

如图2所示,终端设备200内部可包括:处理器202、与处理器202连接的存储器201,以及,可选地,还可包括传感器、触控屏幕、扬声器、麦克等外部设备。当终端设备200采用无线方式与外界通信时,还可包括射频(radiofrequency,rf)电路和连接的天线,无线保真(wirelessfidelity,wifi)模块和连接的天线等。此外,终端设备200还包括为其供电的电源。

本领域技术人员可以理解,图2中示出的终端设备的内部结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

下面结合图2对终端设备200的各个构成部件进行具体的介绍:

存储器201可用于存储程序和数据,处理器202通过运行存储在存储器201的程序从而执行终端设备200的各种功能应用以及数据处理。

存储器201可主要包括存储程序区和存储数据区,其中,存储数据区可存储根据终端设备200的使用所创建的数据(比如音频数据、电话本等)等,本发明实施例中存储数据区存储有终端设备200的数据库;存储程序区可存储操作系统(比如:安卓操作系统,简称“安卓系统”或ios操作系统,简称“ios系统”,其中,操作系统也可简称为“系统”)、至少一个功能所需的指令(比如:声音播放功能、图像播放功能等)等,所述指令可使处理器202执行以下方法,具体方法包括:基于预设的并行度确定各个线程cpu,所述并行度为并行执行的线程数;获取每个线程cpu的主频,计算各个线程cpu的主频比例;基于所述各个线程cpu的主频比例对终端设备200的数据库中的待查询的数据表划分数据分区,确定各个线程cpu对应的数据分区;终端设备通过各个线程cpu并行查询对应的数据分区中的数据。

其中,处理器202通过运行存储器201中存储的操作系统,调用应用程序,完成应用程序所提供的功能。此外,操作系统还可以控制触控屏幕、传感器。

本发明实施例中,终端设备200中的操作系统调用存储器201中存储的程 序,完成本发明实施例提供的终端设备数据库的并行执行流程。

此外,存储器201可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

触控屏幕可包括触控面板、显示单元等。

触控面板,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并根据预先设定的程式驱动相应的连接装置。

可选的,触控面板可包括触摸检测装置和触摸控制器两个部分。

其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器202,并能接收处理器202发来的命令并加以执行。

此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板。

显示单元可用于显示由用户输入的信息或提供给用户的信息以及终端设备200的各种菜单。可选的,可以采用液晶显示器(liquidcrystaldisplay,lcd)、有机发光二极管(organiclight-emittingdiode,oled)等形式来配置显示单元。进一步的,触控面板可覆盖显示单元,当触控面板检测到在其上或附近的触摸操作后,传送给处理器202以确定触摸事件的类型,随后处理器202根据触摸事件的类型在显示单元上提供相应的视觉输出。

如图2所示,触控面板可与显示单元集成为触控屏幕,用于实现终端设备200的输入和输出功能,或者触控面板与显示单元可以作为两个独立的部件来分别实现终端设备200的输入和输出功能,本发明实施例对此并不做限定。

进一步地,触摸检测装置和触摸控制器可在一块芯片中实现),触摸控制器接收的信号转换成该输入的相关信息(比如:输入位置、输入操作的类型、输入的持续时间、该输入对应的用户接触到触控屏幕的接触点的数量等),将 生成的该输入的相关信息发给处理器202;

rf电路可用于收发信息或在通话过程中,完成信号的接收和发送,特别地,将收到基站发送的下行信息接收后,将下行信息交给处理器202处理;另外,将上行的数据发送给基站。

通常,rf电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(lownoiseamplifier,lna)、双工器等。

此外,rf电路还可以通过无线通信与网络和其他设备通信。

所述无线通信可以使用任一通信标准或协议,包括但不限于:

全球移动通讯系统(globalsystemofmobilecommunication,gsm)、通用分组无线服务(generalpacketradioservice,gprs)、码分多址(codedivisionmultipleaccess,cdma)、宽带码分多址(widebandcodedivisionmultipleaccess,wcdma)、长期演进(longtermevolution,lte)、电子邮件、短消息服务(shortmessagingservice,sms)等。

图2中,音频电路、扬声器,麦克风可提供用户与终端设备200之间的音频接口。

音频电路可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,麦克风将收集的声音信号转换为电信号,由音频电路接收后转换为音频数据,再将音频数据输出至rf电路以发送给其他电子设备,比如:手机,或者将音频数据输出至存储器201以便进一步处理。

wifi属于短距离无线传输技术,终端设备200通过wifi模块可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。

虽然图2示出了wifi模块,但是可以理解的是,其并不属于终端设备200的必须构成,完全可以根据需要在不改变本发明实施例的本质的范围内而省略。

处理器202是终端设备200的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器201内的程序(或称为“模块”), 以及调用存储在存储器201内的数据,执行终端设备200的各种功能和处理数据,从而对终端设备200进行整体监控。

可选的,处理器202可包括至少一个处理单元;可选地,处理器202可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器202中。

终端设备200还包括给各个部件供电的电源(比如电池),可选地,电源可以通过电源管理系统与处理器202逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗等功能。

如图2所示,终端设备200还可包括传感器(比如:光传感器、运动传感器等)。

具体地,光传感器可包括环境光传感器及接近传感器。

其中,环境光传感器可根据环境光线的明暗来调节显示单元的亮度,接近传感器可在终端设备200移动到耳边时,关闭显示单元和/或背光。

作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等。

至于终端设备200还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

此外,终端设备200还可包括摄像头、蓝牙模块等,在此不再赘述。

下面介绍了本发明实施例提供的终端设备数据库的并行执行流程。

其中,以这些流程应由上述提供的终端设备200执行为例加以说明,但应该理解的是,这些流程可应用于各种具有存储器和处理器的电子设备,用以实现终端设备数据库的并行查询。

本发明的关键点是在数据表分区的时候考虑cpu主频因素,根据cpu主 频来按比例划分分区,从而使不同主频的cpu的执行时间尽可能相同。具体的,参阅图3所示,图3为本发明实施例中终端数据库的并行执行方法,具体过程为:

步骤300:终端基于预设的并行度确定各个线程cpu,所述并行度为并行执行的线程数。

步骤301:终端获取每个线程cpu的主频,计算各个线程cpu的主频比例。

例如,终端为具有4个cpu的4核手机,分别用cpu1,cpu2,cpu3,cpu4来表示终端的4个cpu,预设的并行度n为3,此时,需要从4个cpu中选出3个作为线程cpu,假设确定出cpu1,cpu2,cpu3分别为3个线程对应的线程cpu。假设手机的3个线程cpu的主频分别为2016000,1017600,1516800,此时,计算3个线程cpu的主频比例为4:2:3。

步骤302:终端基于所述各个线程cpu的主频比例对终端数据库中的待查询的数据表划分数据分区,确定各个线程cpu对应的数据分区。

具体的,终端基于所述各个线程cpu的主频比例对终端数据库中的待查询的数据表划分数据分区,分为以下两种执行方案:

第一种方案为:终端读取所述数据表中与索引根页相连的第一层子页的个数;按照所述各个线程cpu的主频比例将第一层子页划分为n个数据分区,此时,所述n个数据分区中的第一层子页数目比例与所述各个线程cpu的主频比例相等或近似相等,n为预设的并行度。

可选的,针对终端数据库中的待查询的数据表划分数据分区时,若第一层子页数目大于预设阈值时,采用上述第一种方案。

例如,针对上述例子中的同一个终端,假设终端待查询的数据表中所述第一层子页个数为9,大于预设阈值8,此时,将9个第一层子页按照4:2:3划分为3个分区。假设3个数据分区分别为分区1,分区2,分区3,此时,分区1中包括4个第一层子页,可以为第一层分页中编号为1-4的4个第一层分 页,分区2中包括2个第一层子页,可以为第一层分页中编号为5-6的2个第一层分页,分区3中包括3个第一层子页,可以为第一层分页中编号为7-9的3个第一层分页。需要说明的是,所述n个数据分区中的第一层子页数目比例与所述各个线程cpu的主频比例相等或近似相等即可,并不限定各个数据分区中各个第一层子页的数据划分方法。

第二种方案为:终端读取所述数据表中与索引根页相连的第一层子页中每个子页记录的数据个数;基于每个子页记录的个数,按照所述各个线程cpu的主频比例将第一层子页中记录的数据划分为n个数据分区,此时,所述n个数据分区中的第一层子页记录的数据个数比例与所述各个线程cpu的主频比例相等或近似相等,n为预设的并行度。

可选的,针对终端数据库中的待查询的数据表划分数据分区时,若第一层子页数目不大于预设阈值时,采用上述第二种方案。

例如,针对上述例子中的同一个终端,假设终端待查询的数据表中所述第一层子页个数为2小于预设阈值8,此时,终端读取2个第一层子页中记录的数据个数,假设第一个子页中记录的数据个数为40,第二个子页中记录的数据个数为40,将90条数据记录按照4:2:3划分为3个分区。假设3个数据分区分别为分区1,分区2,分区3,此时,分区1中包括40条数据记录,可以为第一层分页中记录的数据,分区2中包括20条数据记录,可以为第二层分页中记录的前20条数据记录,分区3中包括30条数据记录,可以为第二层分页中记录的后30条数据记录。需要说明的是,所述n个数据分区中的第一层子页记录的数据个数比例与所述各个线程cpu的主频比例相等或近似相等即可,并不限定各个数据分区中第一层子页记录的数据个数的数据划分方法。

步骤303:终端通过各个线程cpu并行查询对应的数据分区中的数据。

例如,针对上述针对上述例子中的同一个终端,假设根据终端各个线程cpu的主频比例4:2:3,将待查询的数据表划分为3个数据分区,假设3个数据分区分别为分区1,分区2,分区3,此时终端通过各个线程cpu并行查 询对应的数据分区中的数据,即分区1中的数据通过终端的cpu1执行数据查询功能,分区2中的数据通过终端的cpu2执行数据查询功能,分区3中的数据通过终端的cpu3执行数据查询功能。

下面针对以b-tree形式实现的数据表来举例说明图2中的方法。

如图4所示,手机终端数据库中采用b-tree形式实现的数据表,数据表的数据组织成一个b-tree结构,在b-tree结构的最低层的节点中存储了数据记录。图4中最低层节点中的数值(比如1-200等)表示了数据表中记录的id号。这种表结构记录id号从左到右是顺序排列的。第一层子页中的n个数据页分别用page1,page1,…pagen来表示。其中,所述手机终端为上述例子中的具有4个cpu的4核手机终端。

由于这种数据表是以整数类型的主键来组织成b-tree结构的,图3中记录id号就是主键,因此通过读取根页和第一层子页的记录就可以完成终端数据库中的待查询的数据表中的数据分区。

数据分区需要根据当前线程cpu的主频比例来划分,例如三个线程cpu,主频分别为2016000,1017600,1516800,即3个线程cpu的主频比例为4:2:3,则三个线程数据分区的比例也应该与为4:2:3相同或接近。因此读取图3中记录的第一层子页的数据页page1-pagen的数目。

如果第一层子页的数据页超过预设阈值,假设为预设阈值为8,则不需要将第一层子页page1-pagen中记录的所有数据读出来划分,直接将第一层子页page1-pagen按4:2:3比例划分即可,并找到最后对应的主键值即可以完成数据划分。假设第一层子页有30个页,则可以将第一层子页按照4:2:3划分,结果是(14,6,10)。即第一层子页中前14个数据页中记录的数据由线程cpu1执行,第一层子页中中间6个数据页中记录的数据由线程cpu2执行,第一层子页中后10个数据页中记录的数据由线程cpu3执行。

如果第一层子页的数据页不超过预设阈值,假设为预设阈值为8,比如第一层子页只有两个数据页分别为第一数据页和第二数据页,此时,需要将第一 层子页的两个数据页中记录的数据个数读取出来,其中第一数据页记录有40条数据记录,第二数据页记录有50条数据记录,将第一层子页中记录的数据个数(即40+50=90)按照4:2:3比例划分即可,也就是说第一数据页中记录的数据由线程cpu1执行,第二数据页中记录的前20条记录由线程cpu2执行,第二数据页中记录的后30条记录由线程cpu3执行。

另一种常见的数据表组织形式是heap表。参阅图5所示,这种形式的数据表是按照数据记录插入顺序组织,没有主键字段或主键字段是单独索引,即数据表中的数据记录不以主键排序。这种形式的数据表动态分区方法和上述b-tree形式的数据表动态分区方法完全一致,在此不再赘述。

基于上述实施例提供的终端数据库的并行执行方法,参见图6所示,本发明实施例提供一种终端数据库的并行执行装置600,该装置可以用于执行上述图3所述的方法,图6所示为本发明实施例提供的装置600的结构示意图,如图6所示,该装置600包括确定单元601、计算单元602、划分单元603和查询单元604,其中:

确定单元601,用于基于预设的并行度确定各个线程cpu,所述并行度为并行执行的线程数;

计算单元602,用于获取每个线程cpu的主频,计算各个线程cpu的主频比例;

划分单元603,用于基于所述各个线程cpu的主频比例对终端数据库中的待查询的数据表划分数据分区,确定各个线程cpu对应的数据分区;

查询单元604,用于通过各个线程cpu并行查询对应的数据分区中的数据。

可选的,所述划分单元603基于所述各个线程cpu的主频比例对终端数据库中的待查询的数据表划分数据分区时,具体用于:

读取所述数据表中与索引根页相连的第一层子页的个数;

按照所述各个线程cpu的主频比例将第一层子页划分为n个数据分区, n为预设的并行度。

可选的,所述n个数据分区中的第一层子页数目比例与所述各个线程cpu的主频比例相等或近似相等。

可选的,所述划分单元基于所述各个线程cpu的主频比例对终端数据库中的待查询的数据表划分数据分区时,具体用于:

读取所述数据表中与索引根页相连的第一层子页中每个子页记录的数据个数;

基于每个子页记录的个数,按照所述各个线程cpu的主频比例将第一层子页中记录的数据划分为n个数据分区,n为预设的并行度。

可选的,所述n个数据分区中的第一层子页记录的数据个数比例与所述各个线程cpu的主频比例相等或近似相等。

可选的,所述数据表为b-tree格式的数据表或为heap格式的数据表。

本发明实施例上述涉及的装置600,可以是独立的部件,也可以是集成于其他部件中。

需要说明的是,本发明实施例中的装置600的各个单元的功能实现以及交互方式可以进一步参照相关方法实施例的描述,在此不再赘述。

综上所述,本发明实施例中,终端基于预设的并行度确定各个线程cpu,所述并行度为并行执行的线程数;终端获取每个线程cpu的主频,计算各个线程cpu的主频比例;终端基于所述各个线程cpu的主频比例对终端数据库中的待查询的数据表划分数据分区,确定各个线程cpu对应的数据分区;终端通过各个线程cpu并行查询对应的数据分区中的数据,这样能够基于终端各线程cpu的主频因素对终端数据库中待查询的数据表进行动态分区,同时利用各线程cpu对对应数据分区执行查询指令的并行化处理,能够极大提升终端对数据库的并行查询执行效率。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结 合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1