深入了解 KaiwuDB 负载行为数据采集
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(数据定义语言)数量变化。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java反射源码学习之旅 | 京东云技术团队
1 背景 前段时间组内针对“拷贝实例属性是应该用BeanUtils.copyProperties()还是MapStruct”这个问题进行了一次激烈的battle。支持MapStruct的同学给出了他嫌弃BeanUtils的理由:因为用了反射,所以慢。 这个理由一下子拉回了我遥远的记忆,在我刚开始了解反射这个Java特性的时候,几乎看到的每一篇文章都会有“Java反射不能频繁使用”、“反射影响性能”之类的话语,当时只是当一个结论记下了这些话,却没有深究过为什么,所以正好借此机会来探究一下Java反射的代码。 2 反射包结构梳理 反射相关的代码主要在jdk rt.jar下的java.lang.reflect包下,还有一些相关类在其他包路径下,这里先按下不表。按照继承和实现的关系先简单划分下java.lang.reflect包: ① Constructor、Method、Field三个类型分别可以描述实例的构造方法、普通方法和字段。三种类型都直接或间接继承了AccessibleObject这个类型,此类型里主要定义两种方法,一种是通用的、对访问权限进行处理的方法,第二种是可供继承重写的、与注...
- 下一篇
介绍 9 个研发质量度量指标
研发质量管理中的 MTTR、MTBF、MTTF、MTTD 都是什么?今天我们从生产事件的全生命周期出发,认识研发质量管理的 9 个度量指标——「MT 家族」。 01 Mean Time To ALL 「MT」是 Mean Time 的缩写,意为平均时间,「MT 家族」则是 LigaAI 对「MT」开头的一系列量化指标的戏称。 最常用于跟踪研发质量的两个 MT 指标分别是 MTTR 和 MTBF。近几年,随着精细化研发管理需求的攀升,行业也出现了 MTTD、MTTA、MTRS、MTTI 等细分管理指标,旨在帮助技术团队更好地了解生产事件发生的频率以及团队的恢复速度。 02 共识在前,度量在后 在使用「MT 家族」度量质量水平之前,研发团队需要先就两个基础问题达成共识。 如何计算系统的总服务时长? 如何定义系统的可用时间(Uptime)和不可用时间(Downtime)? 明确第一个问题有助于规范讨论对象。系统的服务周期是多长?系统维护升级或提前告知的主动停机等特殊事件应否计入服务时长?研发团队应就以上问题达成一致,才能辅助更准确的度量和管理。 讨论第二个问题的意义在于建立内部一致的判断标准...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS关闭SELinux安全模块
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能