参数值统计方法、装置、计算机设备和可读存储介质与流程

文档序号:41571179发布日期:2025-04-08 18:24阅读:5来源:国知局
参数值统计方法、装置、计算机设备和可读存储介质与流程

本技术涉及大数据,尤其涉及一种参数值统计方法、装置、计算机设备和可读存储介质。


背景技术:

1、在数据库所执行的sql(structured query language,结构化查询语言)语句中,往往会包含一些常量值和绑定变量值等参数信息。例如执行如下一条sql语句:select idfrom t1 where id>?or id<10;?处绑定值5(long类型)。其中,10为一个常量值,?处所绑定的变量值在执行时可设置为5。但是在数据库内部想要查看所执行的sql语句时,查询结果往往是将常量和绑定变量两种参数值给参数化之后的,以数据库中sys_stat_statement组件为例,绑定变量5被参数化为$1,常量10被参数化为$2。这是因为对于只有参数值不同的一类sql,没必要每次执行都将完整的sql文本和参数值记录下来。统计模块的现有实现中,为了实现累积式统计的统计更新以便复用存储资源,会以queryid作为sql语句的唯一标识。例如,对两个sql:select*from a where id<1,select*form a where id<10。在存储相关统计信息时可以将其记录为一条,虽然他们参数值信息不同,但是queryid相同。

2、这样的实现方便了对同一种sql进行集中分析,但是在进行数据库性能调优时,有时需要知道所执行语句中常量和绑定变量两种参数值,来判断其对执行计划选择的影响。当前数据库中,想要查看参数化之前参数值,需要开启log_statement参数,然后在log日志文件中查找打印出的对应信息;想同时参看执行时间,还需要通过设置log_min_duration_statement来控制当前sql语句的持续时间是否应该被记录到log日志文件中;而且,参数化后的sql语句通常由kwr报告或sys_stat_statements得到。开启上述参数后对数据库的性能影响较大,整个过程较为繁琐而且要不断切换观察位置。


技术实现思路

1、本技术实施例提供一种参数值统计方法、装置、计算机设备和可读存储介质,用以达到提高增量备份速度的效果。

2、第一方面,本技术实施例提供一种参数值统计方法,包括:

3、接收sql语句;

4、采集所述sql语句参数化前的参数信息,所述参数信息包括常量信息和绑定变量信息;

5、存储所述参数信息至数据库的共享内存中;

6、基于数据库的锁定机制,控制所述共享内存的并发访问的逻辑,其中,所述并发访问用于统计sql参数值。

7、在一种可能的实施方式中,所述采集所述sql语句参数化前的参数信息,包括:

8、针对使用扩展报文协议的sql语句,从p报文中提取常量信息,在b报文中解析得到绑定变量信息;其中,所述扩展报文协议包括p报文和b报文;

9、针对使用简单报文协议的sql语句,从q报文中缓存的执行计划中读取常量信息;其中,所述简单报文协议包括q报文,且所述执行计划是所述q报文基于sql语句生成的。

10、在一种可能的实施方式中,所述存储所述参数信息至数据库的共享内存中,包括:

11、将所述参数信息存储至共享内存的哈希表中;

12、其中,每条所述sql语句中涉及的每个常量、每个绑定变量作为一条记录单独存储。

13、在一种可能的实施方式中,所述哈希表被划分为预设数量个分区,且每个分区对应有一个分区锁;所述并发访问包括查询操作;

14、所述基于数据库的锁定机制,控制所述共享内存的并发访问的逻辑,包括:

15、为所述哈希表中的每个分区设置一个共享锁,遍历查询所述哈希表;

16、将查询到的当前查询标识符对应的一组参数值同时加上自旋锁,读取这组参数值,得到查询结果;其中,所述查询标识符是数据库根据参数化后的sql语句的逻辑结构生成的;

17、查询结束后,依次释放该组的自旋锁、和各分区的共享锁。

18、在一种可能的实施方式中,所述并发访问还包括插入操作和更新操作;

19、所述基于数据库的锁定机制,控制所述共享内存的并发访问的逻辑,还包括:

20、针对一条所述sql语句,若查询到该sql语句对应的参数信息的第一个参数不存在于所述哈希表中,则先释放该参数信息在所述哈希表中对应组的共享锁,再为该组加排他锁,将参数信息插入哈希表中,插入结束后释放排他锁;

21、否则,查找该组待更新参数的条目地址,并为该组添加自旋锁,根据条目地址,逐一更新各参数,更新结束后释放自旋锁。

22、在一种可能的实施方式中,所述并发访问还包括删除操作;

23、所述基于数据库的锁定机制,控制所述共享内存的并发访问的逻辑,还包括:

24、将所述哈希表每个分区的分区锁设置为排他锁,对所述哈希表中的多余条目进行删除;

25、删除结束后释放排他锁。

26、在一种可能的实施方式中,所述方法还包括:

27、若一条sql语句执行过插入操作,该sql语句对应的参数信息已存储至所述哈希表中,则后续执行预设次数后更新一次所述哈希表中的参数信息。

28、第二方面,本技术实施例提供一种参数值统计装置,包括:

29、接收模块,用于接收sql语句;

30、采集模块,用于采集所述sql语句参数化前的参数信息,所述参数信息包括常量信息和绑定变量信息;

31、存储模块,用于存储所述参数信息至数据库的共享内存中;

32、统计模块,用于基于数据库的锁定机制,控制所述共享内存的并发访问的逻辑,其中,所述并发访问用于统计sql参数值。

33、第三方面,本技术实施例提供一种计算机设备,包括:存储器,处理器;

34、所述存储器存储计算机执行指令;

35、所述处理器执行所述存储器存储的计算机执行指令,使得所述处理器执行如上第一方面和/或第一方面各种可能的实施方式。

36、第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如上第一方面和/或第一方面各种可能的实施方式。

37、第五方面,本技术实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上第一方面和/或第一方面各种可能的实施方式。

38、本技术实施例提供的一种参数值统计方法、装置、计算机设备和可读存储介质,通过采集sql语句参数化前的包括常量信息和绑定变量信息的参数信息,统一了两种参数值的采集存储逻辑,优化了数据库中执行统计的效率;进一步地,将参数信息存储至数据库的共享内存中,保证了参数信息在所有会话之间保持同步,方便数据库管理员在某个会话中对全实例进行调优;进一步地,基于数据库的锁定机制,控制共享内存的并发访问的逻辑,保证sql语句中的一组参数在多并发环境下数据操作的完整性,也有效降低了对共享内存频繁操作导致的性能影响。

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