Db2的Activity event monitor在Db2 MPP V2上收集ROWS_INSERTED信息

注:本文不是讲解Db2 Activity event monitor,只是一个用法实践。要了解Activity event monitor,请参考 https://www.ibm.com/docs/en/db2/11.5?topic=events-activity-event-monitoring

环境

  • Red Hat Enterprise Linux release 8.8 (Ootpa)
  • Db2 MPP V2 11.5.8

准备

Activity event monitor

在Db2中创建一个Activity event monitor(其table所在的table space跨所有DB member):

create event monitor <XXX> for activities write to tableactivity (table IBM_RTMON.activity_<timestamp>), activitystmt (table IBM_RTMON.activity_stmt_<timestamp>), activitymetrics (table IBM_RTMON.activity_metrics_<timestamp>)
manualstart

其中:

  • activity :包含event信息
  • activity_stmt :包含statement信息
  • activity_metrics :包含metrics信息,如 ROWS_INSERTED

将其激活:

set event monitor <XXX> state 1

Table

创建table T1T2

create table bluadmin.t1(c1 int, c2 int);
create table bluadmin.t2(c1 int, c2 int);

T1 插入一些数据。

[db2inst1@dashmpp-head-0 - Db2wh ~]$ db2 "select count(*) from bluadmin.t1"1
---------------------------------160.1 record(s) selected.

Workload

假设对 T1T2 的DML操作都属于 SYSDEFAULTUSERWORKLOAD workload。

Alter workload SYSDEFAULTUSERWORKLOAD

alter workload SYSDEFAULTUSERWORKLOAD COLLECT ACTIVITY DATA ON COORDINATOR MEMBER WITH DETAILS

注:默认情况下,workload的activity不会被Activity event monitor收集。

可以查看 syscat.workloads 视图:

[db2inst1@dashmpp-head-0 - Db2wh ~]$ db2 "select workloadid, cast(workloadname as varchar(30)) as workloadname, collectactdata, collectactpartition from syscat.workloads order by workloadid"WORKLOADID  WORKLOADNAME                   COLLECTACTDATA COLLECTACTPARTITION
----------- ------------------------------ -------------- -------------------1 SYSDEFAULTUSERWORKLOAD         D              C2 SYSDEFAULTADMWORKLOAD          D              C3 DSM_WORKLOAD                   N              C4 CONSOLE_WORKLOAD               N              C5 WL_0                           D              C6 WL_1                           D              C
......

COLLECTACTDATACOLLECTACTPARTITION 的解释,详见 https://www.ibm.com/docs/en/db2/11.5?topic=views-syscatworkloads

问题

清空表 T2 ,然后将 T1 的数据插入 T2

insert into bluadmin.t2 (select * from bluadmin.t1)

Activity event monitor会产生一个event,并在相应的table里产生一些数据。

先来看看 activity_stmt 表:

select partition_number, stmt_text, *
from ibm_rtmon.activity_stmt_1701671110833
where cast(stmt_text as varchar(100)) like 'insert into t2%';

注意:这里 like 条件不要写成 '%insert into t2%' ,否则把其它无关SQL(比如本条SQL也包含 insert into t2 )也查到了。

说明已经产生event了,然后再根据其信息比如 appl_id 来查找 activity_metrics 表:

select partition_number, rows_inserted, *
from ibm_rtmon.activity_metrics_<timestamp>
where appl_id = '<XXXXXX>'

在结果中只有1条记录,其 partition_number 为0,而 rows_inserted 也是0。

在这里插入图片描述

明明插入了160条记录,怎么在Activity event monitor产生的event里, rows_inserted 是0呢?

分析

这是因为,workload SYSDEFAULTUSERWORKLOADcollectactpartitionC ,也就是 ON COORDINATOR MEMBER ,所以 activity_metrics 表只产生了coordinator member所对应的那条记录,而在此member上实际并没有插入数据,所以 rows_inserted 是0。

解决方法

把workload SYSDEFAULTUSERWORKLOADcollectactpartition 改为 D ,也就是 ON ALL MEMBERS

alter workload SYSDEFAULTUSERWORKLOAD COLLECT ACTIVITY DATA ON ALL MEMBERS WITH DETAILS

然后查看 syscat.workloads ,确认修改成功:

[db2inst1@dashmpp-head-0 - Db2wh ~]$ db2 "select workloadid, cast(workloadname as varchar(30)) as workloadname, collectactdata, collectactpartition from syscat.workloads where workloadid = 1"WORKLOADID  WORKLOADNAME                   COLLECTACTDATA COLLECTACTPARTITION
----------- ------------------------------ -------------- -------------------1 SYSDEFAULTUSERWORKLOAD         D              D1 record(s) selected.

现在,将 T2 表清空,再重新插入一些数据,这回在 activity_metrics 表里就会产生多条记录:

在这里插入图片描述

把各个member的 rows_inserted 值加起来,正好等于插入的数据总数160。

可见,要用 activity_metrics 表收集metrics,需要将对应的workload设置为 COLLECT ACTIVITY DATA ON ALL MEMBERS ,不能是 COLLECT ACTIVITY DATA ON COORDINATOR MEMBER ,否则只能收集到coordinator member上的metric。

其它

对于一条插入语句:

  • 若workload指定为 COLLECT ACTIVITY DATA ON COORDINATOR MEMBER ,则 activityactivity_stmtactivity_metrics 都只产生一条记录。
  • 若workload指定为 COLLECT ACTIVITY DATA ON ALL MEMBERS ,则 activityactivity_metrics 会产生多条记录,每个member对应一条记录。而 activity_stmt 只产生一条记录。

要收集 rows_inserted 信息,就要把workload指定为 COLLECT ACTIVITY DATA ON ALL MEMBERS ,同时,不能以 partition_number 作为三个table的连接条件。

正确做法是:

  • 如果只想要总的信息,则先把 activity_metrics 表里各个member的 rows_inserted 信息汇总起来,再和其它表join
  • 如果要看各个member的详细信息,则收集 activity_metrics 表里各个member的 rows_inserted 信息,再和其它表join

总之不要以 partition_number 作为和 activity_stmt table的连接条件,而只以 appl_iduow_idactivity_idactivity_secondary_id 作为连接条件。比如:

with m as (select appl_id, uow_id, activity_id, activity_secondary_id, sum(rows_inserted) as rows_insertedfrom ibm_rtmon.activity_metrics_<timestamp>group by appl_id, uow_id, activity_id, activity_secondary_id)
select s.stmt_text, m.rows_inserted
from ibm_rtmon.activity_<timestamp> a
join ibm_rtmon.activity_stmt_<timestamp> s
on a.appl_id = s.appl_id and a.uow_id = s.uow_id and a.activity_id = s.activity_id and a.activity_secondary_id = s.activity_secondary_id
join m
on a.appl_id = m.appl_id and a.uow_id = m.uow_id and a.activity_id = m.activity_id and a.activity_secondary_id = m.activity_secondary_id

运行结果如下:

在这里插入图片描述

activity 表的 details_xml 字段

activity 表有一个 details_xml 字段,里面包含了很多信息,比如 rows_inserted 。把workload设置为 COLLECT ACTIVITY DATA ON ALL MEMBERSactivity 表会为每个member产生一条记录,然后也可以从 details_xml 字段获取 rows_inserted ,每个member上获取的是各自的 rows_inserted 值。例如:

select a.partition_number, s.stmt_text, xml.rows_inserted from ibm_rtmon.activity_<timestamp> a
join ibm_rtmon.activity_stmt_<timestamp> s
on a.appl_id = s.appl_id and a.uow_id = s.uow_id and a.activity_id = s.activity_id and a.activity_secondary_id = s.activity_secondary_id
, XMLTABLE(XMLNAMESPACES( default 'http://www.ibm.com/xmlns/prod/db2/mon' ),'$metrics/activity_metrics' PASSING XMLPARSE( DOCUMENT a.details_xml ) as "metrics" COLUMNSROWS_INSERTED BIGINT PATH'rows_inserted') as xml
where stmt_text like 'insert into t2%';

在这里插入图片描述

可见,各个member上的 rows_inserted 总和也是160。

参考

  • https://www.ibm.com/docs/en/db2/11.5?topic=views-syscatworkloads
  • https://www.ibm.com/docs/en/db2/11.5?topic=statements-alter-workload#sdx-synid_alter-collect-activity-data-clause
  • https://www.ibm.com/docs/en/db2/11.5?topic=events-activity-event-monitoring

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/196904.shtml

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

相关文章

Linux下设置redis临时密码和长期密码

临时密码 第一步&#xff1a;先启动redis&#xff0c;命令&#xff1a;./src/redis-server ./redis.conf 第二步&#xff1a;进入redis&#xff0c;命令&#xff1a;./src/redis-cli 第三步&#xff1a;查看密码&#xff0c;命令&#xff1a;config get requirepass 如果你re…

leetcode 876.链表的中间结点

补充上次的环形链表没细讲的快慢指针&#xff08;这三道题现在可以连起来看&#xff09;&#xff0c;希望对你做题思路有帮助 876.链表的中间结点 题目 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结…

Python实现FA萤火虫优化算法优化卷积神经网络分类模型(CNN分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法&#xff08;Fire-fly algorithm&#xff0c;FA&#xff09;由剑桥大学Yang于2009年提出 , …

光伏设计方案中最重要的是什么?

随着人们对可再生能源的关注度不断提高&#xff0c;光伏发电成为了越来越受欢迎的选择。然而&#xff0c;在设计和实施光伏项目时&#xff0c;有很多因素需要考虑。那么&#xff0c;在光伏设计方案中&#xff0c;最重要的是什么呢&#xff1f; 地理位置和环境&#xff1a;选择合…

Unity 关于SetParent方法的使用情况

在设置子物体的父物体时&#xff0c;我们使用SetParent再常见不过了。 但是通常我们只是使用其中一个语法&#xff1a; public void SetParent(Transform parent);使用改方法子对象会保持原来位置&#xff0c;跟使用以下方法效果一样&#xff1a; public Transform tran; ga…

Your anti-virus program might be impacting your build performance

Your anti-virus program might be impacting your build performance.解决方案 在使用 AndroidStudio 时&#xff0c;经常会弹出框提示&#xff1a;Your anti-virus program might be impacting your build performance. Android Studio checked the following directories: …

【开源】基于Vue+SpringBoot的婚恋交友网站

项目编号&#xff1a; S 057 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S057&#xff0c;文末获取源码。} 项目编号&#xff1a;S057&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 会员管理模块2.3 新…

QT之QString

QT之QString 添加容器 点击栅格布局 添加容器&#xff0c;进行栅格布局 布局总结&#xff1a;每一个模块放在一个Group中&#xff0c;排放完之后&#xff0c;进行栅格布局。多个Group进行并排时&#xff0c;先将各个模块进行栅格布局&#xff0c;然后都选中进行垂直布…

Pentaho业务分析平台 SQL注入漏洞复现

0x01 产品简介 Pentaho Business Analytics是一款使您能够安全地访问、集成、操作、可视化和分析大数据资产的业务分析平台。 0x02 漏洞概述 Pentaho 业务分析平台在/pentaho/api/repos/dashboards/editor路径query参数存在SQL注入漏洞,攻击者可未授权执行任意SQL语句,获取账…

如何创建maven项目的多模块项目

Maven多模块项目是指一个Maven项目中包含多个子模块&#xff0c;每个子模块又是一个独立的Maven项目&#xff0c;但它们之间可以存在依赖关系。Maven多模块项目可以方便地管理多个子模块的依赖和构建过程&#xff0c;同时也可以提高项目的可维护性和可扩展性。创建maven项目的父…

iOS ------ UICollectionView

一&#xff0c;UICollectionView的简介 UICollectionView是iOS6之后引入的一个新的UI控件&#xff0c;它和UITableView有着诸多的相似之处&#xff0c;其中许多代理方法都十分类似。简单来说&#xff0c;UICollectionView是比UITbleView更加强大的一个UI控件&#xff0c;有如下…

【源码解析】聊聊线程池 实现原理与源码深度解析(二)

AbstractExecutorService 上一篇文章中&#xff0c;主要介绍了AbstractExecutorService的线程执行的核心流程&#xff0c;execute() 这个方法显然是没有返回执行任务的结果&#xff0c;如果我们需要获取任务执行的结果&#xff0c;怎么办&#xff1f; Callable 就是一个可以获…

父类的@Autowired字段被继承后能否被注入

可以 示例 父类&#xff1a;Animal.class public class Animal {Autowiredprivate PrometheusAlertService prometheusAlertService;public void eat(){System.out.println("eat food");}} 子类&#xff1a;Dog.class Service public class Dog extends Animal …

电压驻波比

电压驻波比 关于IF端口的电压驻波比 一个信号变频后&#xff0c;从中频端口输出&#xff0c;它的输出跟输入是互异的。这个电压柱波比反映了它输出的能量有多少可以真正的输送到后端连接的器件或者设备。

python pyaudio 录取语音数据

python pyaudio 录取语音数据 pyaudio安装方法&#xff1a; pip install pyaudio如果这个不行&#xff0c;可以尝试&#xff1a; pip install pipwin pipwin install pyaudio代码如下&#xff1a; import pyaudio import waveRESPEAKER_RATE 44100 # 采样率&#xff0c;每…

JFrog----SBOM清单包含哪些:软件透明度的关键

文章目录 SBOM清单包含哪些&#xff1a;软件透明度的关键引言SBOM清单的重要性SBOM清单包含的核心内容SBOM的创建和管理结论 软件物料清单&#xff08;SBOM&#xff09;是一个在软件供应链安全中越来越重要的组成部分。它基本上是一份清单&#xff0c;详细列出了在特定软件产品…

从0开始使用Maven

文章目录 一.Maven的介绍即相关概念1.为什么使用Maven/Maven的作用2.Maven的坐标 二.Maven的安装三.IDEA编译器配置Maven环境1.在IDEA的单个工程中配置Maven环境2.方式2&#xff1a;配置Maven全局参数 四.IDEA编译器创建Maven项目五.IDEA中的Maven项目结构六.IDEA编译器导入Mav…

AI医疗交流平台【Docola】申请823万美元纳斯达克IPO上市

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;总部位于美国的AI医疗交流平台Docola近期已向美国证券交易委员会&#xff08;SEC&#xff09;提交招股书&#xff0c;申请在纳斯达克IPO上市&#xff0c;股票代码为 (DOCO) &#xff0c;Docola计划…

Java中三种定时任务总结(schedule,quartz,xxl-job)

目录 1、Spring框架的定时任务 2、Quartz Quartz的用法 3、xxl-job 3.1 docker 安装xxl-job 3.2 xxl-job编程测试 补充&#xff1a;Java中自带的定时任务调度 1. java.util.Timer和java.util.TimerTask 2. java.util.concurrent.Executors和java.util.concurrent.Sche…

数据结构第六课 -----链式二叉树的实现

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…