深入了解 KaiwuDB 负载行为数据采集

news/2024/11/28 13:50:35/

KAP 基于数据库系统内部反馈的各项数据指标,可帮助用户全面掌握 KaiwuDB 集群的整体运行情况,实时监测集群相关性能,可提供整体资源和集群状态角度的系统监控。

除此之外,KaiwuDB 数据库内部开发实现基于负载业务的行为数据采集功能,为 KAP 提供更加全面的数据支持,为用户提供更为多元化的信息,方便用户监控 KaiwuDB 内部的业务负载处理情况,指导用户进行 SQL 调优等。

一、技术架构

从 SQL 来源、执行情况、计划内容、资源使用等角度收集负载的行为数据信息,之后将采集到的信息进行局部缓存、批量持久化。具体流程如下图所示:

二、行为数据采集

通过收集 SQL 语句执行过程各阶段行为数据信息,记录数据库处理负载业务的详细执行情况,提高 KaiwuDB 数据库可观测能力。行为数据指标主要包括如下内容:

Workload:Application name 等 session 部分信息

  • Application name:应用名称

Statement:语句的整体执行情况、行数、时间

  • Statement content:SQL 语句的文本内容

  • Statement params:SQL 语句常量化参数

  • Total elapsed time:SQL 语句从进入 KaiwuDB 到返回结果总用时

  • Total affected rows:SQL 语句的影响行数

  • Retry count:事务重试次数计数

Resoure:整体内存使用等 session 相关资源数

  • Memory、Disk、CPU、Coroutines 等资源情况

Node:节点信息

LogicPlan:逻辑计划构建时间、算子、谓词等

  • LogicalPlan time:从语法树生成逻辑计划用时

  • Stats Profile:表相关信息

  • Access Pattern:访问模式

  • LogicalOperator:算子信息

  • Predicate:谓词信息

PhysicalPlan:物理计划构建时间、算子执行等相关信息

  • PhysicalPlan time:从逻辑计划生成物理计划用时

  • ProcessorSpec:Input/Output 数据来源和去向

  • Type:算子类型

三、开关控制

负载行为数据采集贯穿整个 SQL 语句执行的生命周期,不可避免地对 SQL 语句的执行效率产生负面影响。因此我们细化对行为数据采集指标的控制开关,以适配不同用户的行为数据采集需求,做到无关指标屏蔽采集,尽可能减少数据采集带来的性能损耗。

开关设计:

  • 全局开关 sql.workloadinfo.enabled:控制所有负载行为数据是否采集;

  • 应用开关 sql.workloadinfo.application_name_list:控制仅对 application_name_list 内指定应用触发的负载业务进行行为数据采集;

  • 用户开关 sql.workloadinfo.user_name_list:控制仅对 user_name_list 内指定用户触发的负载业务进行行为数据采集;

  • 采集次数开关 sql.workloadinfo.maxcollectnum:控制对同一来源的相同 SQL 语句的最大采集次数。

四、应用洞察分析

基于这些负载角度的行为数据信息,我们可以实现如下洞察分析:

  • 应用负载分类

    方便判断应用类型是 OLAP 还是 OLTP。行为数据采集的查询 SQL 类型语句在总业务中的占比,提供应用负载分类;

  • 语句健康状况分析

    提供语句健康状况查询,方便用户快速识别有性能问题的 SQL 语句。通过分析 SQL 语句的的访问方式、执行时间,并对比其预估计划和实际执行的差距,考虑该语句在当前应用负载中的权重,将存在潜在性能问题的重要查询标记为不健康 SQL 语句,以便未来对这些查询进行重新优化;

  • 应用负载洞察

    提供用户单独视图显示集群上运行的应用程序的摘要信息。具体包括:应用程序总体状况信息,应用负载具体信息和 SQL 语句细节;

  • 增量变化

    提供用户感知应用负载随时间的增量变化。具体包括:数据量变化,如应用负载访问的表数据增量变化;SQL 语句量变化,如应用负载针对某些特殊场景季度性触发某些查询服务;用户场景需求变化,如新版本上线, 导致 DDL(数据定义语言)数量变化。


http://www.ppmy.cn/news/660658.html

相关文章

1、已知:1公里=2里=1000米,请编写一个程序,输入公里数,将其转换成里和米。要求程序的输入输出如下: 请输入公里数: 3.3 3.30公里=6.60里=3300米

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { float a, b, c;//定义公里&#xff0c;里&#xff0c;米的变量类型 printf("请输入公里数:"); scanf("%f", &a);//输入公里的值 b 2*a; c 1000*a; …

经度和纬度为多少米

经度1秒为31.25米&#xff08;固定&#xff09;纬度1秒为多少米不固定&#xff0c;计算公式如下&#xff1a; 纬度1″&#xff1a;31.25米 * cos(纬度/ 180 * Math.PI)

给定经纬度,计算附近多少公里范围内的地点

场景&#xff1a;当时我们项目用的是spring-data-jpa, 用hql实现的话&#xff0c;实在是不知道怎么搞&#xff0c;所以想出这么个方法。这样做的就是避免直接在数据查询语句中去计算该点附近多少公里范围内的点&#xff0c;将sql语句的实现转成了代码实现。 第一步&#xff1a;…

python公里转海里_英里和海里和公里怎么换算

长度单位的确定伴随着人类文明的进步&#xff0c;随着全球一体化的进程各种单位都更科学标准&#xff0c;有些长度单位可能使用的人更少了&#xff0c;但它在不同的时代伴演着重要的角色&#xff0c;英里这个单位现在也还有很多人使用&#xff0c;我们一起来了解下这个长度单位…

出租车计费标准为:3 公里以内 10 元,3 公里以后每 1 公里加 2 元,超过 15 公里,每公里加 3 元 分别算出2公里、8公里、20公里的钱数

/* SUM10SUM10(8-3)*2 20 SUM34(20-15)*3 49* */ import java.util.Scanner;public class Test19 {public static void main(String[] args) {// TODO Auto-generated method stubint sum10;Scanner sc new Scanner(System.in);System.out.println("请输入车行驶的…

每公里配速9分18秒,双足机器人完成5公里慢跑

内容描述&#xff1a;俄勒冈州立大学的 Cassie 在 53 分钟里完成了一段五公里慢跑&#xff0c;刷新了双足机器人的运动记录。 近日&#xff0c;来自美国俄勒冈州立大学的知名机器人研究团队 Agility Robotics 打造的双足机器人 Cassie &#xff0c;耗时 53 分钟完成了一段 5 公…

根据经纬度查询附近几公里的数据(<5)代表5公里

根据经纬度查询附近几公里的数据&#xff08;&#xff1c;5&#xff09;代表5公里 点击这里&#xff0c;获取维度 $lng 30.187941; // 当前纬度 纬度最高90 $lat 120.259814; // 当前经度 "select * from user where (acos(sin(({$lat}*3.1415)/180)* sin((lat*3.141…

js距离米转换为千米_千米换算(千米与米之间的换算题)

1公里1千米&#xff0c;1千米1000米&#xff0c;1米10分米100厘米1000毫米…… 1里0.5公里500米 根据国际度量换算标准&#xff0c;百1公里1000米1千米公里&#xff1a;公制长度单位。一公里等于度一千米&#xff0c;合二市里。英里&#xff1a;简作&#xff02;哩&#xff02;…