一种基于数据库的访问处理方法、装置、系统及存储介质与流程

文档序号:36408687发布日期:2023-12-16 17:45阅读:52来源:国知局
一种基于数据库的访问处理方法与流程

本技术涉及计算机技术,尤其涉及一种基于数据库的访问处理方法、装置、系统及存储介质。


背景技术:

1、现有技术中,客户端与关系型数据库进行交互时,客户端可以将pbe语句发送至该关系型数据库。具体的,该pbe语句包含三个阶段:prepare阶段、bind阶段、execute阶段。在prepare阶段,主要对结构化查询语言(structured query language;简称:sql)语句进行语法解析和优化器的优化,并在执行prepare语句后,生成特定的执行计划并缓存在该关系型数据库中,以实现下次再执行相同sql语句时,可直接使用缓存的执行计划去该关系型数据库读取数据,以提升查询效率。另外,bind阶段和execute阶段则会为对应的prepare语句的占位符位置进行入参绑定,然后执行预编译语句,以实现对该关系型数据库进行写入和读取操作。

2、另外,由于关系型数据库的写入效率要低于读取效率,且客户端与关系型数据库读频率要高于写入频率,因此关系型数据库执行写入语句时会影响读取性能。基于此,在实际应用中,一般会引入代理中间件,即客户端通过代理中间件与该关系型数据库(即主数据库)以及多个备份数据库建立连接以进行会话,由此通过该代理中间件来实现读写分离,进而提升读取性能。

3、但是,由于pbe语句需要在同一会话中进行处理,而当客户端通过代理中间件与关系型数据库进行长时间连接并执行该pbe语句时,随着关系型数据库中数据的改变,在prepare阶段生成的执行计划可能会出现过期问题,从而导致bind阶段和execute阶段查询时间较长的情况,进而导致查询效率相对低,并降低了客户端访问关系型数据库数据的实时性。


技术实现思路

1、本技术提供一种基于数据库的访问处理方法、装置、系统及存储介质,用以解决当客户端通过代理中间件与关系型数据库进行长时间连接并执行查询时,由于该关系型数据库中数据的变化导致查询效率低的技术问题。

2、第一方面,本技术提供一种基于数据库的访问处理方法,所述方法应用于代理中间件,且所述代理中间件分别与一个主数据库和多个备份数据库通信连接,所述方法包括:

3、对于每个备份数据库,获取所述主数据库的更新日志和会话标识对应的已有prepare语句中与所述备份数据库对应的第一相关表的属性信息;

4、每隔预设时间,确定所述第一相关表中的数据和/或属性信息是否发生变化;若确定所述第一相关表中的数据和/或属性信息发生了变化,则释放所述已有prepare语句所对应的已有执行计划,并分别将与客户端和所述备份数据库之间的所述会话标识对应的会话进行解绑处理;

5、基于所述主数据库中的更新日志,对所述第一相关表进行更新处理,获取第二相关表,并将所述已有prepare语句中的第一相关表替换为所述第二相关表;

6、基于所述已有prepare语句,分别与所述客户端和所述备份数据库之间建立与所述会话标识对应的新的会话,以实现所述备份数据库根据所述客户端发送的所述已有prepare语句,生成与所述已有prepare语句对应的新的执行计划,并根据所述新的执行计划访问所述已有prepare语句的所述第二相关表。

7、在一种可能的实施方式中,所述确定所述第一相关表中的数据和/或属性信息是否发生变化,包括:

8、根据所述主数据库的更新日志,判断第一相关表的行数是否发生变化,以确定所述第一相关表中的数据是否发生变化;

9、则所述若确定所述第一相关表中的数据和/或属性信息发生了变化,则释放所述已有prepare语句所对应的已有执行计划,包括:

10、若确定所述第一相关表的行数发生变化,则释放发生了变化的已有prepare语句所对应的已有执行计划。

11、在一种可能的实施方式中,所述确定所述第一相关表中的数据和/或属性信息是否发生变化,包括:

12、判断监控获取的基于已有执行计划对应的bind阶段和execute阶段所执行的第一时长,并判断所述第一时长是否大于预设时长,以确定所述第一相关表中的与所述第一时长对应的属性信息是否发生变化;

13、则所述若确定所述第一相关表中的数据和/或属性信息发生了变化,则释放所述已有prepare语句所对应的已有执行计划,包括:

14、若判断所述第一时长大于所述预设时长,则释放发生了变化的已有prepare语句所对应的已有执行计划。

15、在一种可能的实施方式中,所述确定所述第一相关表中的数据和/或属性信息是否发生变化,包括:

16、根据所述主数据库的更新日志,判断所述第一相关表中的无效数据的数量是否大于预设数量,以确定所述第一相关表中的数据是否发生变化;

17、则所述若确定所述第一相关表中的数据和/或属性信息发生了变化,则释放所述已有prepare语句所对应的已有执行计划,包括:

18、若判断所述无效数据的数量大于所述预设数量,则释放发生了变化的已有prepare语句所对应的已有执行计划。

19、在一种可能的实施方式中,所述确定所述第一相关表中的数据和/或属性信息是否发生变化,包括:

20、判断监控所获取的所述备份数据库的访问量是否大于预设访问数量,和/或执行bind阶段和execute阶段的第一时间与执行所述已有prepare语句的第二时间之间的时间差是否大于预设时间间隔,以确定所述第一相关表中的与所述访问量和时间差对应的属性信息是否发生变化;

21、则所述若确定所述第一相关表中的数据和/或属性信息发生了变化,则释放所述已有prepare语句所对应的已有执行计划,包括:

22、若判断所述访问量大于所述预设访问数量,且所述时间差大于所述预设时间间隔,则释放发生了变化的已有prepare语句所对应的已有执行计划。

23、在一种可能的实施方式中,在所述基于所述主数据库中的更新日志,对所述第一相关表进行更新处理,获取第二相关表,并将所述已有prepare语句中的第一相关表替换为所述第二相关表之后,还包括:

24、将客户端发送的优化指令转发至所述备份数据库,以供所述备份数据库根据所述优化指令,对所述第二相关表的碎片信息进行清理处理。

25、在一种可能的实施方式中,在所述获取所述主数据库的更新日志和会话标识对应的已有prepare语句中与所述备份数据库对应的第一相关表的属性信息之前,还包括:

26、获取客户端发送的第一连接请求,以根据所述第一连接请求与所述客户端建立第一连接,并在所述第一连接中创建第一会话;

27、发送第二连接请求至所述备份数据库,以根据所述第二连接请求与所述备份数据库建立第二连接,并在所述第二连接中创建第二会话;

28、将第一会话的标识和第二会话的标识组合为所述会话标识,以供所述客户端根据所述会话标识将所述已有prepare语句发送至备份数据库。

29、第二方面,本技术提供一种基于数据库的访问处理装置,包括:

30、获取模块,用于对于每个备份数据库,获取所述主数据库的更新日志和会话标识对应的已有prepare语句中与所述备份数据库对应的第一相关表的属性信息;

31、处理模块,用于每隔预设时间,确定所述第一相关表中的数据和/或属性信息是否发生变化;若确定所述第一相关表中的数据和/或属性信息发生了变化,则释放所述已有prepare语句所对应的已有执行计划,并分别将与客户端和所述备份数据库之间的所述会话标识对应的会话进行解绑处理;

32、所述处理模块,还用于基于所述主数据库中的更新日志,对所述第一相关表进行更新处理,获取第二相关表,并将所述已有prepare语句中的第一相关表替换为所述第二相关表;

33、所述处理模块,还用于基于所述已有prepare语句,分别与所述客户端和所述备份数据库之间建立与所述会话标识对应的新的会话,以实现所述备份数据库根据所述客户端发送的所述已有prepare语句,生成与所述已有prepare语句对应的新的执行计划,并根据所述新的执行计划访问所述已有prepare语句的所述第二相关表。

34、第三方面,本技术提供一种数据库访问处理系统,包括客户端、代理中间件、主数据库和多个备份数据库;其中,所述代理中间件用于执行第一方面任一项所述的基于数据库的访问处理方法。

35、第四方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现第一方面任一项所述的基于数据库的访问处理方法。

36、本技术提供的一种基于数据库的访问处理方法、装置、系统及存储介质,该方法通过对于每个备份数据库,获取所述主数据库的更新日志和会话标识对应的已有prepare语句中与所述备份数据库对应的第一相关表的属性信息;每隔预设时间,确定所述第一相关表中的数据和/或属性信息是否发生变化;若确定所述第一相关表中的数据和/或属性信息发生了变化,则释放所述已有prepare语句所对应的已有执行计划,并分别将与客户端和所述备份数据库之间的所述会话标识对应的会话进行解绑处理;基于所述主数据库中的更新日志,对所述第一相关表进行更新处理,获取第二相关表,并将所述已有prepare语句中的第一相关表替换为所述第二相关表;基于所述已有prepare语句,分别与所述客户端和所述备份数据库之间建立与所述会话标识对应的新的会话,以实现所述备份数据库根据所述客户端发送的所述已有prepare语句,生成与所述已有prepare语句对应的新的执行计划,并根据所述新的执行计划访问所述已有prepare语句的所述第二相关表,进而提高客户端对数据库的查询效率,从而提高客户端访问数据库数据的实时性。

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