CN114896257A - 一种用于大型数据库哈希表的优化方法及存储介质 - Google Patents

一种用于大型数据库哈希表的优化方法及存储介质 Download PDF

Info

Publication number
CN114896257A
CN114896257A CN202210812875.6A CN202210812875A CN114896257A CN 114896257 A CN114896257 A CN 114896257A CN 202210812875 A CN202210812875 A CN 202210812875A CN 114896257 A CN114896257 A CN 114896257A
Authority
CN
China
Prior art keywords
linked list
storage
circular linked
circular
storage object
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
Application number
CN202210812875.6A
Other languages
English (en)
Other versions
CN114896257B (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.)
China Applied Technology Co Ltd
Original Assignee
China Applied Technology Co 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 China Applied Technology Co Ltd filed Critical China Applied Technology Co Ltd
Priority to CN202210812875.6A priority Critical patent/CN114896257B/zh
Publication of CN114896257A publication Critical patent/CN114896257A/zh
Application granted granted Critical
Publication of CN114896257B publication Critical patent/CN114896257B/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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • 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/24Querying
    • G06F16/245Query processing
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及数据库技术领域,公开了一种用于大型数据库哈希表的优化方法、存储介质,将当前哈希表中链表修改为哈希环,通过及时检测热点存储对象,移动链表指针,适应热点改变。

Description

一种用于大型数据库哈希表的优化方法及存储介质
技术领域
本发明涉及数据库技术领域,具体涉及一种用于大型数据库哈希表的优化方法、存储介质。
背景技术
内存键值数据库,如Redis、Memcached、RamCloud以及他们的各种变种,是存储基础架构(例如数据库,文件系统)中的重要组件。他们将经常访问的数据储存在内存中以加快访问速度,提供低延迟和高性能的数据访问,并作为现代互联网服务的基础设施为众多服务商、在众多领域提供服务。
哈希索引是内存键值数据库中最流行的内存结构,尤其是在上层应用程序不需要范围查询时,能够对于单个数据的查询提供很高性能的查询。一般的哈希索引设计中不存在对于热点数据的处理,针对哈希冲突的情况一般使用拉链法解决,冲突的链表越长,需要访问的内存次数就越多。
一般通过数组实现哈希表的数据存储,对于一个键值对(Key-Value),哈希表(Hashtable)通过哈希函数将键Key转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将值Value存储在以该数字为下标的数组空间里。或者把任意长度的输入,通过散列算法变换成固定长度的输出,该输出就是散列值,这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出。
目前数据库内部热点问题存在愈发严重的趋势,现有数据库缺乏热点感知能力,同时哈希索引无法解决热点数据访问瓶颈问题,这使得在处理热点相关问题时数据库整体性能变得很差,在高度倾斜的工作负载下显得不可靠。
因此需要一种自动热点感知的哈希表,对热点数据进行高效访问。
发明内容
为解决上述技术问题,本发明提供一种用于大型数据库哈希表的优化方法。
为解决上述技术问题,本发明采用如下技术方案:
一种用于大型数据库哈希表的优化方法,包括以下步骤:
步骤一:数组a的每一项元素a[i]中存储有一个链表指针Headi,将链表指针Headi至多指向一个环形链表Ci;环形链表中每个存储对象itemk均指向下一个存储对象itemk+1且首尾相连,同一个环形链表中每个存储对象的键的哈希值相同,其中1≤i≤I,I为数组a中元素数量;
步骤二:对每一个环形链表中的存储对象按照键的大小进行排序,使得环形链表中下一个存储对象的键keyk+1不大于当前存储对象的键keyk,或者使得环形链表中下一个存储对象的键keyk+1不小于当前存储对象的键keyk
步骤三:记录环形链表Ci所有存储对象的总操作次数,记录环形链表Ci中每个存储对象的操作次数;
步骤四:周期性检测环形链表Ci中请求访问的存储对象是否为链表指针Headi指向的存储对象;如否,通过步骤五计算环形链表Ci中每个存储对象的访问频率,将链表指针Headi指向环形链表Ci中访问频率最高的存储对象;
步骤五:环形链表Ci中第t个存储对象的访问频率
Figure DEST_PATH_IMAGE001
其中,N对环形链表Ci中所有存储对象的总操作次数,K为环形链表Ci中的存储对象数量,
Figure 915038DEST_PATH_IMAGE002
为环形链表Ci中第k个存储对象的操作次数。
一个链表指针至多指向一个环形链表,是因为存在链表指针指向空的情况。
一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如权利要求1中所述的优化方法。
与现有技术相比,本发明的有益技术效果是:
1、实现了热点数据的动态追踪,能够根据实际生产情况及时发现热点数据并进行相应的处理。
2、实现哈希冲突链的重新设计,设计了新的哈希冲突环,能够根据上一步检测的热点数据做出调整,使针对热点数据的内存访问次数尽量接近于理想情况。
3、实现了热点偏移动态变化的及时处理,能够根据检测的热点数据及时调整数据结构和处理策略,使整个系统达到较高的性能状态。
附图说明
图1为本发明环形链表的结构示意图;
图2为链表指针和存储对象的数据结构示意图;
图3为现有技术中的哈希链表的结构示意图。
具体实施方式
下面结合附图对本发明的一种优选实施方式作详细的说明。
本发明提供了一种哈希表的优化方法,将当前哈希链表修改为哈希环,通过及时检测热点存储对象,移动链表指针,适应热点改变。
图3中是哈希链表原有的结构,哈希表使用一个全局的哈希函数计算每个存储对象的哈希值,对于哈希值相同(哈希冲突)存储对象,使用链表连接这些冲突的存储对象,检索冲突的存储对象时,需要遍历相应的链表。
如图1所示,本发明将原来的链表改为环形链表,将哈希表中链表指针指向环形链表中访问最为频繁的存储对象。
可以通过理论计算出将链表替换为环形链表所带来的好处以及性能提升。
在传统的基于链的哈希索引中,热点存储对象被随机放置在链表中,使得热点存储对象和其他存储对象在访问成本上是等价的。假设我们有A个存储对象(即键值对)存储在具有B个桶的哈希表中,每个桶对应的链表平均长度为L=A/B,在链表中访问存储对象的预期内存访问次数为:
Figure 891084DEST_PATH_IMAGE003
其中,1表示在哈希表中的查找,
Figure 962945DEST_PATH_IMAGE004
表示向上取整。
在理想的热点感知哈希索引中,检索存储对象所需的内存访问次数应该与其热度负相关。例如,最热的存储对象需要最少的内存访问次数。本发明使用Zipfian分布模拟存储对象的访问频率和热度的关系,其中热度为x的对象的访问频率f表示为:
Figure 340837DEST_PATH_IMAGE005
θ表示Zipfian分布的偏度因子,一般在极端偏移的分布中θ取1.22,日常的分布中θ取0.99。
为了简化分析,假设热点存储对象均匀分布在哈希表的B个桶中,即每个桶均包含前B个最热存储对象中的一个、前B+1到2B个最热存储对象中的一个,以此类推。哈希表的桶即哈希表的链表。
在这种情况下,如果可以按访问频率(降序)对链表中的所有存储对象进行排序,则检索目标对象时的预期内存访问次数为:
Figure 472741DEST_PATH_IMAGE006
其中F(k)代表了链表上的第k个项目的累计访问频率。
按照此公式计算,随着链表增长,传统设计中预期的内存访问次数是与链表长度成正比增长的。而如果是理想状态下的环形链表设计,内存访问次数与链表长度无关。
但是引入环结构也会带来相应的问题,当环形链表中不存在查询的存储对象时会出现无限循环查找的情况。在这里本发明使用有序环形链表解决,在同一个环形链表内的存储对象按照的键大小进行排序,如果已经遇到了两个分别小于和大于目标对象的连续存储对象,则可以确定查询的目标对象不存在。对每个存储对象进行标签编号:
Figure 936083DEST_PATH_IMAGE007
Figure 811635DEST_PATH_IMAGE008
为第k个存储对象的标签。在查询的过程中,遇到以下情况就可以终止查询:
找到目标对象
Figure 44033DEST_PATH_IMAGE009
Figure 815680DEST_PATH_IMAGE010
未找到目标对象
Figure 563057DEST_PATH_IMAGE009
Figure 179983DEST_PATH_IMAGE011
在这样的比较查询设计下,只需要平均
Figure 329204DEST_PATH_IMAGE012
次比较就能确认目标对象的存在与否,以及存在情况下的具体值。
之后需要设计出合适的热点感知策略,以确定相应的热点存储项目所在,并将链表指针指向该对象。
如图2所示,本发明使用了特有的链表指针数据结构和存储对象数据结构达到热点感知效果。
本发明的链表指针中的加入了一个总计数器计算当前对应的环形链表所有的操作次数;对环形链表中的每个存储对象使用一个计数器计算对该存储对象的操作次数。为了提高性能的同时动态地检测出热点,本发明具体采用以下抽样检测的方法。
具体地,可以使用一个独立的线程记录环形链表所有的操作次数和每个存储对象的操作次数;每隔R(用户自定义,R越小开销越大,R越大开销会相应越小)个请求检测当前访问的存储对象是否为链表指针所指向的对象,如果是,则说明热点未迁移,不需要采样收集操作次数等数据;否则意味着热点已经迁移了,需要开始收集数据,更新上述图2中数据结构中的计数器以及总计数器。
本发明使用收集到的统计数据计算出每个存储对象的访问频率,第t个存储对象的访问频率
Figure 6173DEST_PATH_IMAGE001
其中,N对环形链表中所有存储对象的总操作次数,K为环形链表中的存储对象数量,
Figure 240846DEST_PATH_IMAGE002
为环形链表中第k个存储对象的操作次数。
之后我们根据统计和计算出的访问频率确定新的热点存储对象并将链表指针指向该热点存储对象,确保该热点存储对象被检索只需最小的内存访问次数。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内,不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立技术方案,说明书的这种叙述方式仅仅是为了清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

Claims (2)

1.一种用于大型数据库哈希表的优化方法,包括以下步骤:
步骤一:数组a的每一项元素a[i]中存储有一个链表指针Headi,将链表指针Headi至多指向一个环形链表Ci;环形链表中每个存储对象itemk均指向下一个存储对象itemk+1且首尾相连,同一个环形链表中每个存储对象的键的哈希值相同,其中1≤i≤I,I为数组a中元素数量;
步骤二:对每一个环形链表中的存储对象按照键的大小进行排序,使得环形链表中下一个存储对象的键keyk+1不大于当前存储对象的键keyk,或者使得环形链表中下一个存储对象的键keyk+1不小于当前存储对象的键keyk
步骤三:记录环形链表Ci所有存储对象的总操作次数,记录环形链表Ci中每个存储对象的操作次数;
步骤四:周期性检测环形链表Ci中请求访问的存储对象是否为链表指针Headi指向的存储对象;如否,通过步骤五计算环形链表Ci中每个存储对象的访问频率,将链表指针Headi指向环形链表Ci中访问频率最高的存储对象;
步骤五:环形链表Ci中第t个存储对象的访问频率
Figure 332932DEST_PATH_IMAGE001
其中,N对环形链表Ci中所有存储对象的总操作次数,K为环形链表Ci中的存储对象数量,
Figure 590738DEST_PATH_IMAGE002
为环形链表Ci中第k个存储对象的操作次数。
2.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1中所述的优化方法。
CN202210812875.6A 2022-07-12 2022-07-12 一种用于大型数据库哈希表的优化方法及存储介质 Active CN114896257B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210812875.6A CN114896257B (zh) 2022-07-12 2022-07-12 一种用于大型数据库哈希表的优化方法及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210812875.6A CN114896257B (zh) 2022-07-12 2022-07-12 一种用于大型数据库哈希表的优化方法及存储介质

Publications (2)

Publication Number Publication Date
CN114896257A true CN114896257A (zh) 2022-08-12
CN114896257B CN114896257B (zh) 2022-09-23

Family

ID=82729432

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210812875.6A Active CN114896257B (zh) 2022-07-12 2022-07-12 一种用于大型数据库哈希表的优化方法及存储介质

Country Status (1)

Country Link
CN (1) CN114896257B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080033952A1 (en) * 2004-11-23 2008-02-07 International Business Machines Corporation Atomically moving list elements between lists using read-copy update
CN108920287A (zh) * 2018-06-29 2018-11-30 中用科技有限公司 基于人工智能的高速缓存方法
CN109766341A (zh) * 2018-12-27 2019-05-17 厦门市美亚柏科信息股份有限公司 一种建立哈希映射的方法、装置、存储介质
CN109977116A (zh) * 2019-03-14 2019-07-05 山东超越数控电子股份有限公司 基于fpga-ddr的哈希连接算子加速方法及系统
CN112100293A (zh) * 2020-09-23 2020-12-18 腾讯科技(深圳)有限公司 数据处理方法、数据访问方法、装置及计算机设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080033952A1 (en) * 2004-11-23 2008-02-07 International Business Machines Corporation Atomically moving list elements between lists using read-copy update
CN108920287A (zh) * 2018-06-29 2018-11-30 中用科技有限公司 基于人工智能的高速缓存方法
CN109766341A (zh) * 2018-12-27 2019-05-17 厦门市美亚柏科信息股份有限公司 一种建立哈希映射的方法、装置、存储介质
CN109977116A (zh) * 2019-03-14 2019-07-05 山东超越数控电子股份有限公司 基于fpga-ddr的哈希连接算子加速方法及系统
CN112100293A (zh) * 2020-09-23 2020-12-18 腾讯科技(深圳)有限公司 数据处理方法、数据访问方法、装置及计算机设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
孙睿男: "《基于持久性内存的文件系统》", 《电子科技大学》 *

Also Published As

Publication number Publication date
CN114896257B (zh) 2022-09-23

Similar Documents

Publication Publication Date Title
Ding et al. Tsunami: A learned multi-dimensional index for correlated data and skewed workloads
US6185557B1 (en) Merge join process
Zheng et al. Reference-based framework for spatio-temporal trajectory compression and query processing
US7774379B2 (en) Methods for partitioning an object
US7778996B2 (en) Sampling statistics in a database system
US11294920B2 (en) Method and apparatus for accessing time series data in memory
CN103744934A (zh) 一种基于位置敏感哈希的分布式索引方法
Chen et al. A sampling-based estimator for top-k selection query
CN101404032A (zh) 一种基于内容的视频检索方法及系统
CN104899326A (zh) 一种基于二进制多索引哈希技术的图像检索方法
CN107451302A (zh) 滑动窗口下基于位置top‑k关键词查询的建模方法及系统
Chen et al. Efficiently evaluating skyline queries on RDF databases
US7542975B2 (en) Computing frequent value statistics in a partitioned relational database
Bornea et al. Adaptive join operators for result rate optimization on streaming inputs
US8452757B2 (en) Index mechanism for finding nearest matches in a computer system
Zheng et al. Repose: distributed top-k trajectory similarity search with local reference point tries
US20090063397A1 (en) Method and system for disjunctive single index access
CN114896257B (zh) 一种用于大型数据库哈希表的优化方法及存储介质
CN109446293A (zh) 一种并行的高维近邻查询方法
CN103902693A (zh) 一种读优化的内存数据库t树索引结构的方法
CN104809210A (zh) 一种基于分布式计算框架下海量数据加权top-k查询方法
Wang et al. PL-Tree: An efficient indexing method for high-dimensional data
Huang et al. Pisa: An index for aggregating big time series data
Deng et al. Spatial-keyword skyline publish/subscribe query processing over distributed sliding window streaming data
US20070061280A1 (en) Fast select for fetch first N rows with order by

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
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: An Optimization Method and Storage Medium for Large Database Hash Tables

Effective date of registration: 20230327

Granted publication date: 20220923

Pledgee: Hefei SME financing Company limited by guarantee

Pledgor: CHINA APPLIED TECHNOLOGY Co.,Ltd.

Registration number: Y2023980036214

PE01 Entry into force of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Granted publication date: 20220923

Pledgee: Hefei SME financing Company limited by guarantee

Pledgor: CHINA APPLIED TECHNOLOGY Co.,Ltd.

Registration number: Y2023980036214