数据库客户端对操作语句的处理方法、存储介质与设备技术

技术编号:37569400 阅读:26 留言:0更新日期:2023-05-15 07:48
本发明专利技术提供了一种数据库客户端对操作语句的处理方法、存储介质与计算机设备。其方法包括:获取并解析数据库操作语句,得到解析结果;在预先缓存的数据元信息中查询解析结果中的表对应的分区键和分区子表的总数;判断数据库操作语句是否包含此分区键;若是,则根据分区键值获取操作语句涉及到的分区子表;若操作语句只涉及单个分区子表,则对操作语句进行改写;将改写后的操作语句发送至数据库中执行。这种操作方法,在多个应用连接同一数据库实例访问分区表时,在本地客户端会对数据库操作语句进行计算处理,使处理后的数据库操作语句能够直接到达对应的分区子表中执行操作,降低了数据库服务器的计算压力,提升了数据库服务器的访问性能。的访问性能。的访问性能。

【技术实现步骤摘要】
数据库客户端对操作语句的处理方法、存储介质与设备


[0001]本专利技术涉及数据库技术,特别是涉及一种数据库客户端对操作语句的处理方法、存储介质与设备。

技术介绍

[0002]在一些数据库使用场景中,会使用数据库分区分表的方式对数据进行存储,从而降低大表管理成本和某些场景的性能提升。目前主流数据库都提供了分区表的支持。分区表通过对分区键的判断,把分区键值不同的记录分放到不同的分区中,分区对应用完全透明。应用在访问分区表时直接访问分区父表,数据库会根据分区规则再去访问实际的分区子表。然而在多个应用连接到同一数据库实例访问分区表时,会造成计算量的上升,访问性能的下降。

技术实现思路

[0003]本专利技术的一个目的是要减少数据库的计算量。
[0004]本专利技术一个进一步的目的是提升数据库的访问性能。
[0005]本专利技术一个进一步的目的是在客户端处理部分操作语句。
[0006]特别地,本专利技术提供了一种数据库客户端对操作语句的处理方法,其包括:
[0007]获取并解析数据库操作语句,得到解析结果;
[0008]在预先缓存的数据元信息中查询解析结果中的表对应的分区键以及分区子表的总数;
[0009]判断数据库操作语句是否包含该分区键;
[0010]若是,则根据分区键和分区子表的总数获取操作语句涉及到的分区子表;
[0011]若操作语句只涉及单个分区子表,则对操作语句进行改写;
[0012]将改写后的操作语句发送至数据库中执行。r/>[0013]可选地,缓存数据元信息的步骤包括:
[0014]将数据元信息动态的保存至本地客户端;
[0015]对本地客户端中的数据元信息进行动态的更新。
[0016]可选地,对本地客户端中的数据元信息进行动态的更新的步骤包括:定时查询更新和/或异步通知更新;
[0017]定时查询更新包括:建立一个监测线程,间隔固定的时间在数据库中查询一次数据元信息,并更新至本地客户端缓存中;
[0018]异步通知更新包括:当数据库中的元信息发生变化,便通知本地客户端缓存的数据元信息进行更新。
[0019]可选地,根据分区键和分区子表的总数获取操作语句涉及到的分区子表的步骤包括:
[0020]获取解析结果中分区键对应的分区键值;
[0021]通过哈希算法计算得到分区键值的哈希值;
[0022]通过数据元信息中的分区算法对分区键值的哈希值和分区子表的总数进行计算,得到分区键值对应的分区子表。
[0023]可选地,对操作语句进行改写的步骤包括:
[0024]将操作语句中的表名替换为分区子表的名称。
[0025]可选地,判断数据库操作语句是否包含分区键的步骤之后还包括:
[0026]若否,则直接将操作语句直接发送至数据库。
[0027]可选地,根据分区键获取操作语句涉及到的分区子表的步骤之后还包括:
[0028]在分区子表有多个的情况下,将操作语句直接发送至数据库。
[0029]可选地,解析结果包括:操作语句所要操作的表名、字段信息、查询条件信息;
[0030]数据库中元信息包括:数据库中分区父表、分区键、分区算法以及分区子表间的对应关系。
[0031]根据本专利技术的另一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现上述任一种的数据库客户端对操作语句的处理方法。
[0032]根据本专利技术的又一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行机器可执行程序时实现上述任一种的数据库客户端对操作语句的处理方法。
[0033]本专利技术的数据库客户端对操作语句的处理方法,通过在客户端缓存数据库元信息,在客户端获取到数据库操作语句时,对操作语句进行解析,得到解析结果之后,在本地缓存的元信息中进行查询得到操作语句所操作的表对应的分区键和分区子表的总数,随后判断操作语句的字段信息中是否包含所操作的表对应的分区键,若包含,则获取分区键对应的分区键值,通过哈希算法得到哈希键值对应的哈希值,根据此哈希值和分区子表的总数通过分区算法获取操作语句涉及到的分区子表,若所述操作语句只涉及单个分区子表,则将操作语句中的表名替换为该分区子表的名称,将替换后的操作语句发送至数据库中执行。这样可以为数据库提前处理很多数据库操作语句,经过处理的操作语句发送到数据库之后可以直接找到对应的数据库表,不需要消耗太多的数据库服务器资源,从而减少数据库的计算量,提升了数据库的访问性能。
[0034]进一步地,本专利技术的数据库客户端对操作语句的处理方法,在客户端缓存数据库元信息的方法包括定时查询更新和异步通知更新。其中,定时查询更新包括:建立一个监测线程,间隔固定的时间在数据库中查询一次数据元信息,并更新至客户端缓存中;异步通知更新包括:当数据库中的元信息发生变化,便通知客户端缓存的数据元信息进行更新。通过两种方法,可以动态地在客户端更新数据库元信息,保证客户端缓存信息的有效性。
[0035]根据下文结合附图对本专利技术具体实施例的详细描述,本领域技术人员将会更加明了本专利技术的上述以及其他目的、优点和特征。
附图说明
[0036]后文将参照附图以示例性而非限制性的方式详细描述本专利技术的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些
附图未必是按比例绘制的。附图中:
[0037]图1是现有技术中数据库操作语句执行关系示意图;
[0038]图2是根据本专利技术一个实施例的数据库客户端对操作语句的处理方法的流程示意图;
[0039]图3是根据本专利技术一个实施例的数据库客户端对操作语句的处理方法的数据库操作语句的执行关系示意图;
[0040]图4是根据本专利技术另一个实施例的数据库客户端对操作语句的处理方法的流程示意图;
[0041]图5是根据本专利技术一个实施例的数据库客户端对操作语句的处理方法中机器可读存储介质的示意图;以及
[0042]图6是根据本专利技术一个实施例的数据库客户端对操作语句的处理方法中计算机设备的示意图。
具体实施方式
[0043]本领域技术人员应当理解的是,下文所描述的实施例仅仅是本专利技术的一部分实施例,而不是本专利技术的全部实施例,该一部分实施例旨在用于解释本专利技术的技术原理,并非用于限制本专利技术的保护范围。基于本专利技术提供的实施例,本领域普通技术人员在没有付出创造性劳动的情况下所获得的其它所有实施例,仍应落入到本专利技术的保护范围之内。
[0044]面对现有的数据库操作系统,当数据库中数据量比较大时,一般数据库会采用分区分表的方式来降低大表的管理成本,通过将大表的数据分为许多小的子集,并通过分区表来统一管理。用户在访问分区表时直接访问分区父表,数据库会根据分区规则再去访问实际的分区子表,由此来提升数据库的性能。但是当多个客户端本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种数据库客户端对操作语句的处理方法,包括:获取并解析所述数据库操作语句,得到解析结果;在预先缓存的数据元信息中查询所述解析结果中的表对应的分区键以及分区子表的总数;判断所述数据库操作语句是否包含所述分区键;若是,则根据所述分区键和所述分区子表的总数获取所述操作语句涉及到的分区子表;若所述操作语句只涉及单个分区子表,则对所述操作语句进行改写;将改写后的操作语句发送至数据库中执行。2.根据权利要求1所述的数据库客户端对操作语句的处理方法,其中,缓存所述数据元信息的步骤包括:将所述数据元信息动态的保存至本地客户端;对所述本地客户端中的所述数据元信息进行动态的更新。3.根据权利要求2所述的数据库客户端对操作语句的处理方法,其中,所述对所述本地客户端中的所述数据元信息进行动态的更新的步骤包括:定时查询更新和/或异步通知更新;所述定时查询更新包括:建立一个监测线程,间隔固定的时间在所述数据库中查询一次所述数据元信息,并更新至所述本地客户端缓存中;所述异步通知更新包括:当所述数据库中的元信息发生变化,便通知所述本地客户端缓存的数据元信息进行更新。4.根据权利要求1所述的数据库客户端对操作语句的处理方法,其中,所述根据所述分区键和所述分区子表的总数获取所述操作语句涉及到的分区子表的步骤包括:获取所述解析结果中所述分区键对应的分区键值;通过哈希算法计算得到所述分区键值的哈希值;通过所述数据元信息中的分区...

【专利技术属性】
技术研发人员:韩慧敏李楠
申请(专利权)人:北京人大金仓信息技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1