CN116627983A - 一种基于哈希连接的倾斜数据处理方法及相关设备 - Google Patents
一种基于哈希连接的倾斜数据处理方法及相关设备 Download PDFInfo
- Publication number
- CN116627983A CN116627983A CN202310632699.2A CN202310632699A CN116627983A CN 116627983 A CN116627983 A CN 116627983A CN 202310632699 A CN202310632699 A CN 202310632699A CN 116627983 A CN116627983 A CN 116627983A
- Authority
- CN
- China
- Prior art keywords
- hash
- hash table
- data
- connection
- tuple
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 28
- 238000000034 method Methods 0.000 claims abstract description 31
- 238000013459 approach Methods 0.000 claims description 3
- 238000010276 construction Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012546 transfer 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/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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
- 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/242—Query formulation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于哈希连接的倾斜数据处理方法及相关设备。涉及数据库技术领域。本发明包括:在执行哈希连接时,判断外表和内表是否存在倾斜数据;若是,则根据外表和内表构建主哈希表和倾斜哈希表,其中倾斜哈希表用于存储倾斜数据。本发明的一种基于哈希连接的倾斜数据处理方法及相关设备通过在主哈希表之外构建倾斜哈希表,用内表的数据中的最常见元组填充倾斜哈希表,用内表数据中除最常见元组的其他元组填充主哈希表;这样设置相比于现有技术的将倾斜数据作为普通数据写入磁盘,避免产生大量IO的情况,同时,选择最常见元组填充倾斜哈希表,提高了在进行哈希连接时连接成功的概率,进而加快了哈希连接的连接速度。
Description
技术领域
本发明涉及数据库技术领域,特别是涉及一种基于哈希连接的倾斜数据处理方法及相关设备。
背景技术
随着信息时代发展,需要存储的数据越来越多,采用数据库存储成为了主流,但用户对于查询性能要求越来越高,对于数据库查询执行算子中连接算法是各大数据库优化的重点,对于连接算法中的哈希连接,当内表的数据较大不能把数据全部放入到哈希表中时,需要对内表数据分批进行哈希连接,使哈希表一次只能处理一批内表的数据,并将不是本批次连接的内外表数据都写入磁盘,这时当数据有倾斜情况时,且在倾斜数据不是本批次所需要处理的内表的数据的时候,上述倾斜数据会被当成普通数据写入磁盘,从而会产生大量IO,从而导致数据库的查询速度缓慢,降低数据库的运行效率。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种基于哈希连接的倾斜数据处理方法及相关设备,能够将常见的倾斜数据长期存储在内存中,从而避免产生大量的IO,提高数据库的查询速度和运行效率。
具体地,本发明提供了一种基于哈希连接的倾斜数据处理方法,其包括:
在执行哈希连接时,判断外表和内表是否存在倾斜数据;
若是,则根据外表和内表构建主哈希表和所述倾斜哈希表,其中所述倾斜哈希表用于存储所述倾斜数据。
可选地,所述的判断外表和内表是否存在倾斜数据,包括:判断所述外表是否存在最常见元组;若是,则所述外表和内表存在倾斜数据;
以及,所述根据外表和内表构建主哈希表和所述倾斜哈希表,包括:根据所述最常见元组构建所述倾斜哈希表;扫描所述内表,并将所述内表中与所述倾斜哈希表相对应的元组填入所述倾斜哈希表,与所述倾斜哈希表不相对应的元组填入所述主哈希表。
可选地,所述的判断外表和内表是否存在倾斜数据,包括:若所述外表不存在最常见元组,则判断所述内表是否存在最常见元组;若是,则所述外表和内表存在倾斜数据;
以及,所述根据外表和内表构建主哈希表和所述倾斜哈希表,包括:根据所述最常见元组构建所述倾斜哈希表;扫描所述内表,并将所述内表中与所述倾斜哈希表相对应的元组填入所述倾斜哈希表,与所述倾斜哈希表不相对应的元组填入所述主哈希表。
可选地,所述的根据所述最常见元组构建所述倾斜哈希表,包括:采用线性增长的方法解决哈希冲突。
可选地,所述的判断外表和内表是否存在倾斜数据,包括:若所述外表和内表均不存在最常见元组,则所述外表和内表不存在倾斜数据。
可选地,所述的根据所述最常见元组构建所述倾斜哈希表,还包括:所述倾斜哈希表中哈希桶的尺寸不小于预设值。
可选地,在所述根据外表和内表构建主哈希表和所述倾斜哈希表前,还包括:分配用于存储所述倾斜哈希表的预设存储空间。
可选地,在所述根据外表和内表构建主哈希表和所述倾斜哈希表后,根据所述主哈希表和所述倾斜哈希表执行连接查询,其中所述连接查询包括:每次获取连接表的数据后,判断所述数据是否应连接在所述倾斜哈希表中;若否,则将所述数据连接在所述主哈希表中。
具体地,本发明还提供了一种计算机设备,其包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现上述任一种所述的基于哈希连接的倾斜数据处理方法。
具体地,本发明还提供了一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现上述任一种所述的基于哈希连接的倾斜数据处理方法。
本发明的一种基于哈希连接的倾斜数据处理方法及相关设备中,通过在主哈希表之外构建倾斜哈希表,用内表的数据中的最常见元组填充倾斜哈希表,用内表数据中除最常见元组的其他元组填充主哈希表;这样设置相比于现有技术的将倾斜数据作为普通数据写入磁盘,避免产生大量IO的情况,同时,选择最常见元组填充倾斜哈希表,提高了在进行哈希连接时连接成功的概率,进而加快了哈希连接的连接速度。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
图1是根据本发明一个实施例的基于哈希连接的倾斜数据处理方法的示意性流程图;
图2是根据本发明一个实施例的机器可读存储介质的示意框图;
图3是根据本发明一个实施例的计算机设备的示意框图。
具体实施方式
下面参照图1至图3来描述本发明实施例的一种基于哈希连接的倾斜数据处理方法及相关设备。
哈希连接包括构建阶段和探测阶段,其中构建阶段包括:获取构建表,并对构建表中的元组计算其哈希值,利用其哈希值填充哈希表;
探测阶段包括:获取连接表,计算连接表中的元组的哈希值,并将哈希表中的哈希值与连接表中的元组的哈希值进行比对,若比对一致,则连接构建表与连接表。
本发明所提供的一种基于哈希连接的倾斜数据处理方法,用于在上述构建阶段构建哈希表时,且存在数据倾斜的情况时,将倾斜数据中的最常见的数据存储在单独的倾斜哈希表中,减小IO消耗。
图1是根据本发明一个实施例的基于哈希连接的倾斜数据处理方法的示意性流程图,如图1所示,本发明实施例提供了一种基于哈希连接的倾斜数据处理方法,其包括:
步骤S1:在执行哈希连接时,判断外表和内表是否存在倾斜数据;
步骤S2:若是,则根据外表和内表构建主哈希表和倾斜哈希表,其中倾斜哈希表用于存储倾斜数据。
需要说明的是,上述主哈希表和倾斜哈希表构成构建阶段的哈希表,上述外表和内表构成构建阶段所需要获取的构建表,其中,外表主要用于构建倾斜哈希表,内表主要用于填充倾斜哈希表和主哈希表;在执行哈希连接的探测阶段时,逐行获取连接表中的数据,并将每次获取的数据连接到主哈希表或者倾斜哈希表中,以实现根据该主哈希表和倾斜哈希表连接构建表和连接表。
在本实施例中,关于上述步骤S1,需要说明的是,上述的判断外表和内表是否存在倾斜数据可以被理解为主要判断内表是否存在数据倾斜的情况,
而上述的判断内表是否存在数据倾斜的情况,可以采用判断构建表(优选为内表)的元组数据是否可以被全部存储在主哈希表所对应的存储空间内的方式实现,如果是,则不存在数据倾斜的情况,也就不存在倾斜数据;如果否,则存在数据倾斜的情况,进而存在倾斜数据。
本实施例中判断外表和内表是否存在倾斜数据的方法是示例性的而非限制性的,在其他实施例中,可以采用其他的方式实现判断外表和内表是否存在倾斜数据。
本发明实施例中,在数据库接收到用户查询指令后,分析查询指令并判断是否要进行哈希连接;若是,则获取查询对象,即上述构建表和上述连接表,并根据上述构建表和上述连接表执行哈希连接。
本发明的一种基于哈希连接的倾斜数据处理方法及相关设备中,通过在主哈希表之外构建倾斜哈希表,在存在数据倾斜的情况时,用内表和外表的数据填充倾斜哈希表和主哈希表;相当于将主哈希表中无法储存的数据,也就是倾斜数据长期存储在内存中(也就是存储在倾斜哈希表中);这样设置相比于现有技术的将倾斜数据作为普通数据写入磁盘,可以避免产生大量IO的情况。
在本发明的一些实施例中,在上述根据外表和内表构建主哈希表和倾斜哈希表前,还包括:分配用于存储倾斜哈希表的预设存储空间。具体地,按照预设规则分配用于存储倾斜哈希表的预设存储空间,即数据库默认按照预设百分比分配预设存储空间,预设百分比为1%至5%,优选为2%。本发明实施的设置方法可以保证倾斜哈希表所能够存储的数据量足够多。
在本发明的一些实施例中,上述的判断外表和内表是否存在倾斜数据,包括:
判断外表是否存在最常见元组;
若是,则外表和内表存在倾斜数据;
以及,根据外表和内表构建主哈希表和倾斜哈希表,包括:
根据外表的最常见元组构建倾斜哈希表;
扫描内表,并将内表中与倾斜哈希表相对应的元组填入倾斜哈希表,与倾斜哈希表不相对应的元组填入主哈希表。
具体地,关于上述判断外表是否存在最常见元组的步骤,需要说明的是,数据库优先通过外表的统计信息判断外表是否存在最常见元组,若上述统计信息内有显示,则外表存在最常见元组,若统计信息内没有显示,则外表不存在最常见元组;
另外地,在外表存在最常见元组之后,数据库优选在batch0阶段获取最常见元组。在外表的元组数据中,有重复的元组,也就是出现频次较高的元组,可以被认为是高频次元组;也有只出现一次的元组,也就是出现频次较低的元组,也就是低频次的元组;数据库优先选择高频词元组构建倾斜哈希表。需要注意的是,数据库可以按照预设的算法或程序筛选外表的元组数据中频次高的元组,以此来获取最常见元组;具体地,将外表的元组数据输入到预设的算法或程序中,得到外表的最常见元组。数据库也可以为元组数据出现的频次设定一个设定值,将频次大于设定值的元组列为最常见元组,以此来筛选外表的最常见元组。
如图2所示,上述根据外表的最常见元组构建倾斜哈希表的步骤包括:根据外表的最常见元组在倾斜哈希表中建立对应的哈希桶,但是哈希桶中不存储外表最常见元组,只是针对外表的最常见元组建立一个空的哈希桶,也就是说,上述哈希桶内的数据指向0。具体地,根据外表的最常见元组在倾斜哈希表中建立对应的哈希桶的具体方法为:对外表的每一个最常见元组进行哈希运算,得到其哈希值,根据其哈希值建立对应的空的哈希桶;上述根据外表的最常见元组构建倾斜哈希表的过程也可以被理解为对倾斜哈希表进行初始化的过程,也就是说,初始化倾斜哈希表中的哈希桶的时候是优先根据外表的最常见元组来进行初始化的,但是哈希桶里面空的,即此时哈希桶内不存储数据,等到扫描内表的数据的时候才真正向哈希桶里面填充数据。因此,不管用哪种方式对倾斜哈希表进行初始化,最后都是根据内表的元组数据填充倾斜哈希表和主哈希表,倾斜哈希表和主哈希表内存储的数据都是内表的数据。
关于上述扫描内表,并将内表中与倾斜哈希表相对应的元组填入倾斜哈希表,与倾斜哈希表不相对应的元组填入主哈希表的步骤,需要说明的是,将内表的元组填入倾斜哈希表的过程为:对内表的一行元组进行哈希运算,计算得到内表的元组的哈希值;判断上述元组的哈希值是否在倾斜哈希表中,若是,则将上述元组的哈希值存储在倾斜哈希表的哈希桶中;若否,则将上述元组的哈希值存储在主哈希表中。
本发明实施例的设置方法优先根据外表的最常见元组构建倾斜哈希表,而后用内表的数据填充倾斜哈希表和主哈希表,由于倾斜哈希表是根据最常见元组构建的,因此倾斜哈希表中存储的数据也都为内表数据中的最常见元组,进而,在倾斜哈希表和主哈希表构建完成后,在根据倾斜哈希表和主哈希表进行哈希连接时,由于最常见元组相比于一般元组数据更加容易使构建表和连接表连接成功进而输出结果,因而使哈希连接成功的概率更大,进而加快了哈希连接的连接速度。
在本发明的一些实施例中,上述的判断外表和内表是否存在倾斜数据,包括:
若外表不存在最常见元组,则判断内表是否存在最常见元组;
若是,则外表和内表存在倾斜数据;
以及根据外表和内表构建主哈希表和倾斜哈希表,包括:
根据内表的最常见元组构建倾斜哈希表;
扫描内表,并将内表中与倾斜哈希表相对应的元组填入倾斜哈希表,与倾斜哈希表不相对应的元组填入主哈希表。
具体地,关于上述若外表不存在最常见元组,则判断内表是否存在最常见元组的步骤,需要说明的是,当外表不存在最常见元组时,可以认为无法根据外表构建倾斜哈希表,此时再判断是否可以根据内表构建倾斜哈希表,即,判断内表是否存在最常见元组,若是,则外表和内表存在倾斜数据,则可以根据内表的最常见元组填充倾斜哈希表。
另外,关于上述判断内表是否存在最常见元组的步骤,需要说明的是,可以通过内表的统计信息判断内表是否存在最常见元组,若上述统计信息内有显示,则内表存在最常见元组,若统计信息内没有显示,则内表不存在最常见元组;
在根据外表构建倾斜哈希表不成功之后,上述根据内表的最常见元组构建倾斜哈希表的步骤包括:根据内表的最常见元组在倾斜哈希表中建立对应的哈希桶,但是哈希桶中不存储内表的最常见元组,只是针对内表的最常见元组建立一个空的哈希桶,也就是上述哈希桶内的数据指向0。具体地,根据内表的最常见元组在倾斜哈希表中建立对应的哈希桶的具体方法为:对内表的每一个最常见元组进行哈希运算,得到其哈希值,根据其哈希值建立对应的空的哈希桶;上述根据内表的最常见元组构建倾斜哈希表的过程也可以被理解为对倾斜哈希表进行初始化的过程,也就是说,在初始化倾斜哈希表中的哈希桶的时候,若不能根据外表对倾斜哈希表进行初始化,则根据内表的最常见元组来对倾斜哈希表进行初始化,但是哈希桶里面空的,即此时哈希桶内不存储数据,等到扫描内表的数据的时候才真正向哈希桶里面填充数据。
关于上述扫描内表,并将内表中与倾斜哈希表相对应的元组填入倾斜哈希表,与倾斜哈希表不相对应的元组填入主哈希表的步骤,需要说明的是,将内表的元组填入倾斜哈希表的过程为:对内表的一行元组进行哈希运算,计算得到内表的元组的哈希值;判断上述元组的哈希值是否在倾斜哈希表中,若是,则将上述元组的哈希值存储在倾斜哈希表的哈希桶中;若否,则将上述元组的哈希值存储在主哈希表中。
本发明实施例的设置方法在根据外表构建倾斜哈希表不成功时,根据内表的最常见元组构建倾斜哈希表,而后用内表的数据填充倾斜哈希表和主哈希表,由于倾斜哈希表是根据最常见元组构建的,因此倾斜哈希表中存储的数据也都为内表的数据中的最常见元组,进而,在倾斜哈希表和主哈希表构建完成后,在根据倾斜哈希表和主哈希表进行哈希连接时,由于最常见元组相比于一般元组数据更加容易使构建表和连接表连接成功进而输出结果,因而选择内表的最常见元组构建倾斜哈希表使哈希连接成功的概率更大,进而加快了哈希连接的连接速度。
在本发明的一些实施例中,根据内表或外表的最常见元组构建倾斜哈希表,包括:采用线性增长的方法解决哈希冲突。
在本发明实施例中,在构建倾斜哈希表时,若关于元组的哈希值已经存在对应的哈希桶,但是在后续构建的过程中,另一个元组的哈希值与上述元组的哈希值相同,则两个元组的哈希值对应同一个哈希桶,使得元组的哈希值与哈系统无法一一对应,则会产生哈希冲突。进而需要采用线性增长解决哈希冲突,其具体方法为:如果当前哈希桶已经与元组的哈希值存在对应关系,则寻找没有对应关系的哈希桶,并将另一个元组的哈希值与该哈希桶对应,也就是说,如果当前存储单元被占用了,则另元组的哈希值占用下一个。这样设置可以解决了在构建哈希表时哈希冲突的问题,使得元组的哈希值与哈希桶一一对应,完成对倾斜哈希表的初始化。
在本发明的一些实施例中,上述的根据内表或外表的最常见元组构建倾斜哈希表,还包括:倾斜哈希表中哈希桶的尺寸不小于预设值。需要说明的是,上述倾斜哈希表中的每个存储单元作为一个哈希桶,每个哈希桶对应预设存储空间的一个存储地址;具体地,在构建阶段以及探测阶段,需保证哈希桶的尺寸,也就是哈希桶的大小不小于预设值,以确保倾斜表可以容纳一定数量的哈希值,也就是确保倾斜表足够稀疏,避免哈希值无法被存入对应的哈希桶内。
在本发明的一些实施例中,上述的判断外表和内表是否存在倾斜数据,包括:若外表和内表均不存在最常见元组,则外表和内表不存在倾斜数据。
在本发明的一些实施例中,在上述根据外表和内表构建主哈希表和倾斜哈希表后,根据主哈希表和倾斜哈希表执行连接查询,其中连接查询包括:每次获取连接表的数据后,判断数据是否应连接在倾斜哈希表中;若否,则将数据连接在主哈希表中。
具体地,在主哈希表和倾斜哈希表构建完成后,扫描连接表的元组数据,以进行连接查询。当连接表中的元组数据是列存储的方式时,每次获取一行连接表的元组数据;当连接表中的数据是行存储的方式时,每次获取一列连接表的数据;而后对每次从连接表获取到的数据进行哈希运算,得到上述元组数据的哈希值,先比对上述元组数据的哈希值是否存在于倾斜哈希表中,若发现上述元组数据的哈希值与倾斜哈希表中的数据存在对应关系,则将该数据连接在倾斜哈希表中;若上述元组数据的哈希值与倾斜哈希表中的数据不存在对应关系,则判断上述元组数据的哈希值与主哈希表中的数据是否存在对应关系,若是,则将该数据连接在主哈希表中。本发明实施例的设置方法,使用最常见元组构建倾斜哈希表,由于最常见元组相比于一般元组数据更加容易使构建表和连接表连接成功进而输出结果,因此先尝试将倾斜哈希表和连接表进行连接,在连接不成功时,再尝试将主哈希表和连接表进行连接。这样设置可以最大程度上加快哈希连接的连接速度,节省哈希连接所需要的时间。
如图2和图3所示,本实施例还提供了一种机器可读存储介质40和计算机设备50。图2是根据本发明一个实施例的机器可读存储介质40的示意框图,图3是根据本发明一个实施例的计算机设备50的示意图。
机器可读存储介质40其上存储有机器可执行程序41,机器可执行程序41被处理器执行时实现上述任一实施例中的基于哈希连接的倾斜数据处理方法。
计算机设备50可以包括存储器520、处理器510及存储在存储器520上并在处理器510上运行的机器可执行程序41,并且处理器510执行机器可执行程序41时实现上述任一实施例中的基于哈希连接的倾斜数据处理方法。
上述计算机设备50优选为设置有与上述数据库对应的客户端应用结构,用于供开发人员对数据库内存储的数据进行查询、写入、调用、编程等操作。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何机器可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
就本实施例的描述而言,机器可读存储介质40可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。机器可读存储介质40的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,机器可读存储介质40甚至可以是可在其上打印程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。
计算机设备50可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机设备50可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
计算机设备50可以包括适于执行存储的指令的处理器510、在操作期间为指令的操作提供临时存储空间的存储器520。处理器510可以是单核处理器、多核处理器、计算集群或任何数量的其他配置。存储器520可以包括随机存取存储器(RAM)、只读存储器、闪存或任何其他合适的存储系统。
处理器510可以通过系统互连(例如PCI、PCI-Express等)连接到适于将计算机设备50连接到一个或多个I/O设备(输入/输出设备)的I/O接口(输入/输出接口)。I/O设备可以包括例如键盘和指示设备,其中指示设备可以包括触摸板或触摸屏等等。I/O设备可以是计算机设备50的内置组件,或者可以是外部连接到计算设备的设备。
处理器510也可以通过系统互连链接到适于将计算机设备50连接到显示设备的显示接口。显示设备可以包括作为计算机设备50的内置组件的显示屏。显示设备还可以包括外部连接到计算机设备50的计算机监视器、电视机或投影仪等。此外,网络接口控制器(network interface controller,NIC)可以适于通过系统互连将计算机设备50连接到网络。在一些实施例中,NIC可以使用任何合适的接口或协议(诸如因特网小型计算机系统接口等)来传输数据。网络可以是蜂窝网络、无线电网络、广域网(WAN))、局域网(LAN)或因特网等等。远程设备可以通过网络连接到计算设备。
本实施例提供的流程图并不旨在指示方法的操作将以任何特定的顺序执行,或者方法的所有操作都包括在所有的每种情况下。此外,方法可以包括附加操作。在本实施例方法提供的技术思路的范围内,可以对上述方法进行附加的变化。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
Claims (10)
1.一种基于哈希连接的倾斜数据处理方法,其特征在于,包括:
在执行哈希连接时,判断外表和内表是否存在倾斜数据;
若是,则根据外表和内表构建主哈希表和倾斜哈希表,其中所述倾斜哈希表用于存储所述倾斜数据。
2.根据权利要求1所述的倾斜数据处理方法,其特征在于,
所述的判断外表和内表是否存在倾斜数据,包括:
判断所述外表是否存在最常见元组;
若是,则所述外表和内表存在倾斜数据;以及
所述根据外表和内表构建主哈希表和所述倾斜哈希表,包括:
根据所述最常见元组构建所述倾斜哈希表;
扫描所述内表,并将所述内表中与所述倾斜哈希表相对应的元组填入所述倾斜哈希表,与所述倾斜哈希表不相对应的元组填入所述主哈希表。
3.根据权利要求1所述的倾斜数据处理方法,其特征在于,所述的判断外表和内表是否存在倾斜数据,包括:
若所述外表不存在最常见元组,则判断所述内表是否存在最常见元组;
若是,则所述外表和内表存在倾斜数据;以及
所述根据外表和内表构建主哈希表和所述倾斜哈希表,包括:
根据所述最常见元组构建所述倾斜哈希表;
扫描所述内表,并将所述内表中与所述倾斜哈希表相对应的元组填入所述倾斜哈希表,与所述倾斜哈希表不相对应的元组填入所述主哈希表。
4.根据权利要求2或3所述的倾斜数据处理方法,其特征在于,
所述的根据所述最常见元组构建所述倾斜哈希表,包括:
采用线性增长的方法解决哈希冲突。
5.根据权利要求1所述的倾斜数据处理方法,其特征在于,
所述的判断外表和内表是否存在倾斜数据,包括:
若所述外表和内表均不存在最常见元组,则所述外表和内表不存在倾斜数据。
6.根据权利要求1所述的倾斜数据处理方法,其特征在于,
所述的根据所述最常见元组构建所述倾斜哈希表,还包括:
所述倾斜哈希表中哈希桶的尺寸不小于预设值。
7.根据权利要求1所述的倾斜数据处理方法,其特征在于,
在所述根据外表和内表构建主哈希表和所述倾斜哈希表前,还包括:
分配用于存储所述倾斜哈希表的预设存储空间。
8.根据权利要求7所述的倾斜数据处理方法,其特征在于,
在所述根据外表和内表构建主哈希表和所述倾斜哈希表后,根据所述主哈希表和所述倾斜哈希表执行连接查询,其中所述连接查询包括:
每次获取连接表的数据后,判断所述数据是否应连接在所述倾斜哈希表中;
若否,则将所述数据连接在所述主哈希表中。
9.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现根据权利要求1至8任一项所述的基于哈希连接的倾斜数据处理方法。
10.一种机器可读存储介质,其特征在于,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现根据权利要求1至8任一项所述的基于哈希连接的倾斜数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310632699.2A CN116627983A (zh) | 2023-05-30 | 2023-05-30 | 一种基于哈希连接的倾斜数据处理方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310632699.2A CN116627983A (zh) | 2023-05-30 | 2023-05-30 | 一种基于哈希连接的倾斜数据处理方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116627983A true CN116627983A (zh) | 2023-08-22 |
Family
ID=87597057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310632699.2A Pending CN116627983A (zh) | 2023-05-30 | 2023-05-30 | 一种基于哈希连接的倾斜数据处理方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116627983A (zh) |
-
2023
- 2023-05-30 CN CN202310632699.2A patent/CN116627983A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11822912B2 (en) | Software installation through an overlay file system | |
US9483493B2 (en) | Method and system for accessing a distributed file system | |
CN110647316B (zh) | 通用业务对象的生成方法、装置、计算机设备及存储介质 | |
WO2021237630A1 (zh) | 多键值命令的处理方法、装置、电子设备及存储介质 | |
WO2022026974A1 (en) | Translation techniques for distributed datasets | |
CN114090695A (zh) | 分布式数据库的查询优化的方法和装置 | |
CN110222046B (zh) | 列表数据的处理方法、装置、服务器和存储介质 | |
CN116627983A (zh) | 一种基于哈希连接的倾斜数据处理方法及相关设备 | |
CN114281872B (zh) | 分布式序列号的生成方法、装置、设备及可读存储介质 | |
US11016830B2 (en) | Entity-based service operation for object-based persistence | |
CN110781137A (zh) | 分布式系统的目录读取方法、装置、服务器和存储介质 | |
CN116467310A (zh) | 无效索引的无锁标记方法、存储介质和计算机设备 | |
CN116662355A (zh) | 无效索引的标记方法、存储介质和计算机设备 | |
CN112691382B (zh) | 资源处理方法、装置及计算机可读存储介质 | |
CN114969046A (zh) | 一种哈希连接的处理方法、存储介质与设备 | |
CN112347794B (zh) | 数据翻译方法、装置、设备及计算机存储介质 | |
CN109873882B (zh) | 一种ip代理池管理系统及其管理方法 | |
CN112882843A (zh) | 一种英文枚举自动补全中文值的方法 | |
CN111475535A (zh) | 数据存储、访问方法及装置 | |
JP2002328935A (ja) | オブジェクト指向データベースのデータ操作においてスキーマに自由度を持たせるプログラム及びデータ操作装置 | |
CN117453770A (zh) | 数据库集群中序列值的处理方法、介质与计算机设备 | |
CN113254464B (zh) | 一种数据加载方法和装置 | |
CN116126902A (zh) | SQL中分区剪枝支持like操作的方法和存储介质 | |
CN114706833A (zh) | 一种SQL Server数据库高可用技术搭建方法、装置、电子设备及存储介质 | |
CN116595010A (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 |