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

news2024/10/4 22:26:05

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.coloradmin.cn/o/699461.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(九)栅格数据的空间分析——表面分析①

生成等值线 文章目录 生成等值线 1.等值线2.等值线质量3.控制等值线质量3.1对数据进行平滑处理3.2调整起始等值线 4.生成等值线4.1焦点统计4.2生成等值线 1.等值线 沿着特定等值线的折线 (polyline) 可识别出值相同的位置。等值线也是一种呈现表面的有效形式,因为它…

jmeter 报此错误 \report‘ as folder is not empty

jmeter 报此错误 \report’ as folder is not empty 解决方案 出现此错误的原因试因为同一个界面出现同样的文件,只要把文件删除,重新执行此命令即可。 删除文件框住得report和result.jtl 即可 执行成功

计算机图形学 3D渲染 笔记(一)

1 坐标系 大多数计算机屏幕采用的坐标系是以左上角为原点,水平(右)为x轴,纵向(下)为y轴3D图形学习中通常使用另一种坐标系, 即 正中心为原点,水平(右)为x轴&…

【算法题解】44. N 叉树的前序遍历(递归 + 迭代)

这是一道 简单 题 https://leetcode.cn/problems/n-ary-tree-preorder-traversal/ 题目 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 。 n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例&…

Golang源码探究——从Go程序的入口到GMP模型

在大多数的编程语言中,main函数都是用户程序的入口函数,go中也是如此。那么main.main是整个程序的入口吗, 肯定不是,因为go程序依赖于runtime,在程序的初始阶段需要初始化运行时,之后才会运行到用户的main函数&#xf…

【话题达人】做开发时遇到过无理的需求吗?面对这些无理需求你是怎么做的?

导读 工作过程中难免遇见一些“神奇的甲方”,他们总是会给你提出一些匪夷所思甚至无厘头的需求。你是否也有这样的经历,面对这样“无理的需求”你又是怎么做的呢? 面对这些无理需求时你是怎么做的? 首先深入了解需求&#xff0…

C++一键安装工具(vcpkg)

0. 简介 相较于python而言,C因为其复杂的环境安装一直受到很多人的诟病,比如说一个pcl的安装就需要有很多操作步骤。译过程仍然复杂和多样化。当了解了这些还不够,我们还需要考虑预先编译出哪种类型的开源库程序。比如:Debug还是…

快速掌握MongoDB数据库(入门一条龙)

目录 一、介绍 二、安装指导 2.1 下载 2.2 安装注意事项 2.3 配置环境变量 2.4 校验是否配置成功 2.5 启动服务器 2.6 打开客户端 2.7 退出 2.8 修改参数配置 2.9 设置开启自启动服务 三、MongoDB基本操作 3.1 基本概念 3.2 基本命令 3.3 数据库的crud命令 四、…

七、云尚办公-Activiti入门

云尚办公系统:Activiti入门 B站直达【为尚硅谷点赞】: https://www.bilibili.com/video/BV1Ya411S7aT 本博文以课程相关为主发布,并且融入了自己的一些看法以及对学习过程中遇见的问题给出相关的解决方法。一起学习一起进步!!&am…

《C++高级编程》读书笔记(十三:C++ I/O揭秘)

1、参考引用 C高级编程(第4版,C17标准)马克葛瑞格尔 2、建议先看《21天学通C》 这本书入门,笔记链接如下 21天学通C读书笔记(文章链接汇总) 1. 使用流 1.1 流的含义 C 中预定义的流 缓冲的流和非缓冲的流…

SpringBoot:配置Jetty容器

👨‍🎓作者:bug菌 ✏️博客: CSDN、 掘金、 infoQ、 51CTO等 🎉简介:CSDN、 掘金等社区优质创作者,全网合计7w粉,对一切技术都感兴趣,重心偏Java方向,目前运营…

c语言查漏补缺

例子一 #include<iostream> using namespace std;int main() {int a[5]{1,2,3,4,5};int* ptr (int*)(a1);printf("%d",*(ptr-1));return 0; }输出结果是&#xff1a;1&#xff0c;这个很好理解&#xff0c;数组名即数组的首地址&#xff0c;&#xff08;a1&a…

Android 13(T) - binder阅读(5)- 使用ServiceManager注册服务2

上一篇笔记我们看到了binder_transaction&#xff0c;这个方法很长&#xff0c;这一篇我们将把这个方法拆分开来看binder_transaction做了什么&#xff0c;从而学习binder是如何跨进程通信的。 1 binder_transaction static void binder_transaction(struct binder_proc *proc…

如何将自定义起步依赖打成包

说明&#xff1a;之前做过一个自定义的OSS起步依赖&#xff08;http://t.csdn.cn/9aYr5&#xff09;&#xff0c;但是当时只是新建了一个Demo模块来测试自定义起步依赖能成功使用&#xff0c;本文介绍如何把自定义的起步依赖打成jar包&#xff0c;供其他项目或其他人引入依赖就…

华为云CodeArts TestPlan测试设计:守护产品开发质量之魂

华为产品质量的守护神 华为云CodeArts TestPlan测试设计是华为产品质量的守护神。华为云CodeArts TestPlan提供多维度测试设计模板、“需求-场景-测试点-测试用例” 四层测试分解设计能力&#xff0c;启发测试人员发散性思维&#xff0c;对项目环境、测试对象、质量标准、测试…

【SpringBlade-权限缺陷】API鉴权逻辑缺陷漏洞

目录 一、理论部分 简介 如何通过认证 API 鉴权 配置API放行 细颗粒度鉴权配置 结尾 二、实战部分 一、理论部分 简介 Secure 基于 JWT 封装&#xff0c;每次请求的时候&#xff0c;会拦截到需要鉴权的API请求&#xff0c;并对其请求头携带的Token进行认证。若 Token…

Js时间倒计时

&#x1f607;作者介绍&#xff1a;一个有梦想、有理想、有目标的&#xff0c;且渴望能够学有所成的追梦人。 &#x1f386;学习格言&#xff1a;不读书的人,思想就会停止。——狄德罗 ⛪️个人主页&#xff1a;进入博主主页 &#x1f5fc;推荐系列&#xff1a;点击进入 &#…

vue 0-1搭建项目

vue 从0-1搭建项目 前提&#xff1a;进入到需要创建项目的文件夹中&#xff0c;打开命令行窗口 windowsr 打开命令行窗口 创建vue2.0项目&#xff1a; 自动创建 1.vue create 项目名称 仅包含3个功能&#xff1a;vue2/3,babel&#xff0c;eslint 手动创建 1.vue create 项目名…

ModaHub魔搭社区:详解向量数据库Milvus的Mishards:集群分片中间件(五)

目录 在 Kubernetes 中部署 Mishards 集群 安装前提 安装流程 卸载 Mishards 从单机升级到 Mishards 集群 注意事项 基本案例 在 Kubernetes 中部署 Mishards 集群 安装前提 Kubernetes 版本 1.10 及以上Helm 版本 2.12.0 及以上 关于 Helm 的使用请参考 Helm 使用指…

【python入门系列】第一章:Python基础语法和数据类型

文章目录 前言一、简单语法1. 注释 这是一个单行注释2. 变量 二、数据类型1.字符串2.整数3.浮点数4.布尔值5.列表 三、运算符1.算术运算符&#xff1a;用于执行基本的算术操作&#xff0c;如加、减、乘和除。2.比较运算符&#xff1a;用于比较两个值的大小或相等性。3.逻辑运算…