一种GBase数据库SQL资源消耗采集的方法及系统与流程

文档序号:33713726发布日期:2023-04-01 02:31阅读:120来源:国知局
一种GBase数据库SQL资源消耗采集的方法及系统与流程
一种gbase数据库sql资源消耗采集的方法及系统
技术领域
1.本发明涉及数据库技术领域,具体涉及一种gbase数据库sql资源消耗采集的方法及系统。


背景技术:

2.在gbase数据库、数据仓库运营运维或者治理过程中,需要通过量化的数据衡量数据加工过程中的资源消耗情况,为数据查询优化提供依据,通过效能评估,为低效任务下线提供指导。
3.一般情况,数据库提供了监控手段,可以实时查看资源占用总体情况,或者提供特定任务的资源占用查询,在大量并发sql任务执行的场景下,这种方式主要满足数据库实例运营监控需求;
4.另外,数据库也提供了执行计划,开发人员可以通过执行计划,分析sql脚本的执行性能,这种方式主要面向开发环节,为开发人员提供事前调试能力。
5.利用gbase数据库提供的监控能力和执行计划,可以解决部分数据库查询性能问题。在数据仓库系统建设过程中,面向多租户和大量开发人员同步数据开发及运行的场景下,存在并行任务多、逻辑复杂等情况,仅凭监控手段,很难做到问题的及时发现和提前处理,这种方式往往造成数据库性能急剧下降或者故障,当出现问题才进行干预,无形中增加了数据库安全隐患。


技术实现要素:

6.本发明的目的在于提供一种gbase数据库sql资源消耗采集的方法及系统,用于基于gbase数据库查询脚本算子特征以及任务执行时长,利用分摊机制进行资源消耗的计算,在不增加数据库资源占用的情况下,实现任务资源消耗的采集。
7.为解决上述技术问题,本发明提供一种gbase数据库sql资源消耗采集的方法,包括以下步骤:
8.获取gbase数据库集群中的sql脚本;
9.对sql脚本进行解析,识别sql语句特征,得到sql特征类型;
10.获取gbase数据库集群的sql算子资源分配信息;所述sql算子资源分配信息包括buffer值;
11.根据sql特征类型和buffer值,得到sql脚本的sql算子buffer累计值;
12.获取sql脚本的sql任务执行信息;
13.获取任务cpu的cpu资源占用率;
14.根据sql脚本的sql任务执行信息和cpu资源占用率,得到sql脚本的任务cpu占用值;
15.获取cpu内存占用率;
16.根据sql算子buffer累计值、sql脚本的sql任务执行信息和cpu内存占用率,得到
sql脚本的cpu内存占用值;
17.根据sql脚本的任务cpu占用值和sql脚本的cpu内存占用值进行排序。
18.优选地,所述sql任务执行信息包括执行开始时间、执行结束时间和执行时长。
19.优选地,根据sql脚本的sql任务执行信息和cpu资源占用率,得到sql脚本的任务cpu占用值;具体包括以下步骤:
20.根据任务cpu的cpu资源占用率判断是否存在并行任务;
21.若不存在并行任务,则获取该任务相应的sql并行度,根据相应的sql任务执行信息的执行时长和sql并行度,计算得到相应sql脚本的任务cpu占用值;
22.若存在并行任务,则将任务cpu进行拆分,得到若干子任务cpu,计算每个子任务cpu的cpu占用值,并相加作为相应sql脚本的任务cpu占用值。
23.优选地,根据相应的sql任务执行信息的执行时长和sql并行度,计算得到相应sql脚本的任务cpu占用值,具体包括以下步骤:
24.相应的sql任务执行信息的任务执行时长与sql并行度相乘,作为相应sql脚本的任务cpu占用值。
25.优选地,根据sql算子buffer累计值、sql脚本的sql任务执行信息和cpu内存占用率,得到sql脚本的cpu内存占用值;具体包括以下步骤:
26.根据cpu内存占用率判断是否存在并行任务;
27.若不存在并行任务,则根据相应的sql算子buffer累计值和sql脚本的sql任务执行信息中的执行时长,计算得到相应sql脚本的cpu内存占用值;
28.若存在并行任务,需要将任务占用情况进行均摊转换,然后汇总求和。
29.优选地,根据相应的sql算子buffer累计值和sql脚本的sql任务执行信息中的执行时长,计算得到相应sql脚本的cpu内存占用值,具体包括以下步骤:
30.相应的sql任务执行信息的任务执行时长与sql算子buffer累计值相乘,作为任务cpu占用值。
31.优选地,根据sql脚本的任务cpu占用值和sql脚本的cpu内存占用值进行排序,具体包括以下步骤:
32.按照sql脚本的cpu内存占用值进行排序、按照sql脚本的任务cpu占用值进行排序以及综合排序,输出高消耗任务清单。
33.优选地,根据sql特征类型和buffer值,得到sql脚本的sql算子buffer累计值,具体包括以下步骤:
34.对同一sql特征类型下的所有buffer值进行累加,得到sql算子buffer累计值。
35.优选地,获取sql脚本的sql任务执行信息,具体包括以下步骤:
36.通过定时器定时采集sql脚本,获取sql任务执行信息的执行开始时间、执行结束时间和执行时长。
37.本发明还提供一种gbase数据库sql资源消耗采集的系统,包括:
38.sql脚本获取模块,用于获取gbase数据库集群中的sql脚本;
39.解析模块,用于对sql脚本进行解析,识别sql语句特征,得到sql特征类型;
40.分配信息获取模块,用于获取gbase数据库集群的sql算子资源分配信息;所述sql算子资源分配信息包括buffer值;
41.统计模块,用于根据sql特征类型和buffer值,得到sql脚本的sql算子buffer累计值;
42.任务执行信息获取模块,用于获取sql脚本的sql任务执行信息;
43.cpu资源占用率获取模块,用于获取任务cpu的cpu资源占用率;
44.第一计算模块,用于根据sql脚本的sql任务执行信息和cpu资源占用率,得到sql脚本的任务cpu占用值;
45.cpu内存占用率获取模块,用于获取cpu内存占用率;
46.第二计算模块,用于根据sql算子buffer累计值、sql脚本的sql任务执行信息和cpu内存占用率,得到sql脚本的cpu内存占用值;
47.排序模块,用于根据sql脚本的任务cpu占用值和sql脚本的cpu内存占用值进行排序。
48.与现有技术相比,本发明的有益效果为:
49.1)、不额外消耗数据库资源及性能,实现数据库任务级资源消耗采集;
50.2)、能够细化到任务,实现任务粒度资源消耗采集,采集的数据相对准确,能够反映任务消耗情况;
51.3)、采集的数据相对准确,能够为sql优化、任务下线提供参考和指导,适度调整采集频率和分析周期,数据的结果会更准确;
52.4)、有效弥补数据库在线监控短板,通过事后审计的能力,结合分析汇总查询,识别高消耗任务,为任务优化、低效任务下线等运营提供准确的数据支持,为数据仓库性能提升和资源优化配置提供保障;
附图说明
53.下面结合附图对本发明的具体实施方式作进一步详细说明。
54.图1是本发明一种gbase数据库sql资源消耗采集的方法的流程示意图。
具体实施方式
55.在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施的限制。
56.在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
57.应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
58.在针对多租户和大量数据开发人员并行参与数据仓库建设的场景下,本发明想通过系统化方式,建立一套自动化审计系统,实现对gbase数据库中sql任务执行资源消耗的自动采集,进而实现高消耗任务的识别和发现,为数据库运维提供指导;
59.1.建立一套gbasesql任务资源消耗采集方法,实现cpu及内存资源的精准采集;
60.2.识别高消耗任务,为数据库运营人员提供运维依据,驱动任务的优化及下线,实现gbase数据库资源优化利用,保障数据库高效运行;
61.下面结合附图1对本发明做进一步的详细描述:
62.本发明提供一种gbase数据库sql资源消耗采集的方法,包括以下步骤:
63.获取gbase数据库集群中的sql脚本;
64.对sql脚本进行解析,识别sql语句特征,得到sql特征类型;
65.获取gbase数据库集群的sql算子资源分配信息;所述sql算子资源分配信息包括buffer值;
66.根据sql特征类型和buffer值,得到sql脚本的sql算子buffer累计值;
67.获取sql脚本的sql任务执行信息;
68.获取任务cpu的cpu资源占用率;
69.根据sql脚本的sql任务执行信息和cpu资源占用率,得到sql脚本的任务cpu占用值;
70.获取cpu内存占用率;
71.根据sql算子buffer累计值、sql脚本的sql任务执行信息和cpu内存占用率,得到sql脚本的cpu内存占用值;
72.根据sql脚本的任务cpu占用值和sql脚本的cpu内存占用值进行排序。
73.优选地一个实施例,所述sql任务执行信息包括执行开始时间、执行结束时间和执行时长。
74.优选地一个实施例,根据sql脚本的sql任务执行信息和cpu资源占用率,得到sql脚本的任务cpu占用值;具体包括以下步骤:
75.根据任务cpu的cpu资源占用率判断是否存在并行任务;
76.若不存在并行任务,则获取该任务相应的sql并行度,根据相应的sql任务执行信息的执行时长和sql并行度,计算得到相应sql脚本的任务cpu占用值;
77.若存在并行任务,则将任务cpu进行拆分,得到若干子任务cpu,计算每个子任务cpu的cpu占用值,并相加作为相应sql脚本的任务cpu占用值。
78.优选地一个实施例,根据相应的sql任务执行信息的执行时长和sql并行度,计算得到相应sql脚本的任务cpu占用值,具体包括以下步骤:
79.相应的sql任务执行信息的任务执行时长与sql并行度相乘,作为相应sql脚本的任务cpu占用值。
80.优选地一个实施例,根据sql算子buffer累计值、sql脚本的sql任务执行信息和cpu内存占用率,得到sql脚本的cpu内存占用值;具体包括以下步骤:
81.根据cpu内存占用率判断是否存在并行任务;
82.若不存在并行任务,则根据相应的sql算子buffer累计值和sql脚本的sql任务执行信息中的执行时长,计算得到相应sql脚本的cpu内存占用值;
83.若存在并行任务,需要将任务占用情况进行均摊转换,然后汇总求和。
84.优选地一个实施例,根据相应的sql算子buffer累计值和sql脚本的sql任务执行信息中的执行时长,计算得到相应sql脚本的cpu内存占用值,具体包括以下步骤:
85.相应的sql任务执行信息的任务执行时长与sql算子buffer累计值相乘,作为任务cpu占用值。
86.优选地一个实施例,根据sql脚本的任务cpu占用值和sql脚本的cpu内存占用值进行排序,具体包括以下步骤:
87.按照sql脚本的cpu内存占用值进行排序、按照sql脚本的任务cpu占用值进行排序以及综合排序,输出高消耗任务清单。
88.优选地一个实施例,根据sql特征类型和buffer值,得到sql算子buffer累计值,具体包括以下步骤:
89.对同一sql特征类型下的所有buffer值进行累加,得到sql算子buffer累计值。
90.优选地一个实施例,获取sql脚本的sql任务执行信息,具体包括以下步骤:
91.通过定时器,定时采集sql脚本,获取sql任务执行信息的执行开始时间、执行结束时间和执行时长。
92.优选地一个实施例,sql特征类型包括:select、sort、join、group、insert、update、delete、distinctgroup、hashjoin。
93.在本实施例中,系统采集gbase数据库集群中,所有执行的sql脚本,然后对sql脚本进行解析,识别sql语句特征,识别sql特征类型主要包含:
94.select、sort、join、group识别;
95.insert、update、delete识别;
96.distinctgroup识别;
97.hashjoin识别。
98.采集gbase数据库算子资源分配相关的元数据信息,获取sql算子资源分配信息,主要采集的内容包含:
99.gbase_parallel_degree(每个会话最多cpu)、gbase_parallel_max_thread_in_pool(系统默认cpu数);
100.gbase_heap_large(管理sort、join、group操作时的largeheap的大小);
101.gbase_buffer_insert(设置批量insert数据时,中间buffer的大小);
102.gbase_buffer_hgrby(设置数据库做group时使用的buffer大小);
103.gbase_buffer_distgrby(设置数据库做distinctgroup时使用的buffer大小);
104.gbase_buffer_hj(设置数据库做hashjoin时使用的buffer大小);
105.gbase_buffer_sj(设置数据库做sortmergejoin时使用的buffer大小);
106.gbase_buffer_sort(设置数据库做sort时使用的buffer大小);
107.gbase_buffer_rowset(配置缓存join中间结果所使用的buffer大小)。
108.本发明提供一种gbase数据库sql资源消耗采集方法,定时采集sql任务cpu、内存资源占用情况和sql任务执行时长,根据sql特征拆分并行sql任务资源占用,汇总计算出sql任务单位时间的资源开销;基于采集的结果,识别高消耗任务,提供给数据库运维人员,驱动开发人员进行程序优化和低价值任务下线;
109.本发明提供一种gbase数据库资源消耗自动化采集能力,弥补数据库监控短板,以任务粒度采集运算资源消耗,识别高消耗任务,为数据sql优化、运营提供量化的数据参考。基于gbase数据库查询脚本算子特征以及任务执行时长,利用分摊机制进行资源消耗的计算,在不增加数据库资源占用的情况下,实现任务资源消耗的采集。资源分摊转换成标准单位,实现资源的累计,根据精度要求,可以通过采集频率提升计算的准确性。
110.本发明还提供一种gbase数据库sql资源消耗采集的系统,包括:
111.sql脚本获取模块,用于获取gbase数据库集群中的sql脚本;
112.解析模块,用于对sql脚本进行解析,识别sql语句特征,得到sql特征类型;
113.分配信息获取模块,用于获取gbase数据库集群的sql算子资源分配信息;所述sql算子资源分配信息包括buffer值;
114.统计模块,用于根据sql特征类型和buffer值,得到sql脚本的sql算子buffer累计值;
115.任务执行信息获取模块,用于获取sql脚本的sql任务执行信息;
116.cpu资源占用率获取模块,用于获取任务cpu的cpu资源占用率;
117.第一计算模块,用于根据sql脚本的sql任务执行信息和cpu资源占用率,得到sql脚本的任务cpu占用值;
118.cpu内存占用率获取模块,用于获取cpu内存占用率;
119.第二计算模块,用于根据sql算子buffer累计值、sql脚本的sql任务执行信息和cpu内存占用率,得到sql脚本的cpu内存占用值;
120.排序模块,用于根据sql脚本的任务cpu占用值和sql脚本的cpu内存占用值进行排序。
121.在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块、模组或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元、模组或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。
122.所述单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
123.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
124.特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(cpu)执行时,执行本发明的方法中限定的上述功能。需要说明的是,本发明上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线段、或半导体的系统、装置或器件,或者任意以上的组合。
125.附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
126.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何在本发明揭露的技术范围内的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1