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(数据定义语言)数量变动。