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

news2024/12/23 19:04:06

注:本文不是讲解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 table
    activity (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              C
          2 SYSDEFAULTADMWORKLOAD          D              C
          3 DSM_WORKLOAD                   N              C
          4 CONSOLE_WORKLOAD               N              C
          5 WL_0                           D              C
          6 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              D

  1 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_inserted
    from 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" COLUMNS
		   ROWS_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.coloradmin.cn/o/1284238.html

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

相关文章

手把手教你搭建个人地图服务器(高德离线部署解决方案):获取地图瓦片数据、高德JS API、私有化部署和调用。。。

一、概述 众所周知&#xff0c;目前常见的地图&#xff08;高德、百度、腾讯等&#xff09;只提供在线API服务&#xff0c;对于一些内网应用而言&#xff0c;如果需要使用地图展示&#xff0c;则由于不能访问互联网而无法使用类似的第三方地图服务。 本文&#xff0c;通过将高…

【web安全】RCE漏洞原理

前言 菜某的笔记总结&#xff0c;如有错误请指正。 RCE漏洞介绍 简而言之&#xff0c;就是代码中使用了可以把字符串当做代码执行的函数&#xff0c;但是又没有对用户的输入内容做到充分的过滤&#xff0c;导致可以被远程执行一些命令。 RCE漏洞的分类 RCE漏洞分为代码执行…

【C语言】递归详解

目录 1.前言2. 递归的定义3. 递归的限制条件4. 递归举例4.1 求n的阶乘4.1.1 分析和代码实现4.1.2 画图演示 4.2 顺序打印一个整数的每一位4.2.1 分析和代码实现4.2.2 画图推演 4.3 求第n个斐波那契数 5. 递归与迭代5.1 迭代求第n个斐波那契数 1.前言 这次博客内容是与递归有关&…

日期类 - Java

知道怎么查&#xff0c;怎么用即可&#xff0c;不用每个方法都背 日期类 第一代日期类方法演示 第二代日期类方法演示 第三代日期类前面两代日期类的不足分析第三代日期类常见方法方法演示 第一代日期类 Date类&#xff1a;精确到毫秒&#xff0c;代表特定的瞬间SimpleDateFor…

51单片机开发——day01

1、软件安装&#xff1a; 2、单片机&#xff08;Micro Controller Unit&#xff09;MCU: 内部集成了cpu&#xff0c;RAM&#xff0c;ROM&#xff0c;定时器&#xff0c;中断系统&#xff0c;通讯接口&#xff0c; 用于信息采集处理硬件设备控制&#xff1b; 8051内核所以带了这…

手把手教你做基于stm32的红外、语音、按键智能灯光控制(上)

目录&#xff1a; 1.系统实现目标2.硬件选型和软件准备2.1. 硬件选型2.2 软件准备 3. 硬件IO表4.各个模块的驱动函数4.1. 红外遥控模块4.2. 按键模块4.3. LED灯4.4. BH1750光照度传感器4.5. 红外检测模块 1.系统实现目标 本文所设计的基于单片机的灯光控制系统主要由模式选择功…

【C++】树型结构关联式容器:map/multimap/set/multisetの使用指南(27)

前言 大家好吖&#xff0c;欢迎来到 YY 滴C系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 目录 一.键值对二.关联式容器&#xff06;序列…

国产API调试插件:Apipost-Helper

前言 Idea 是一款功能强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它可以帮助开发人员更加高效地编写、调试和部署软件应用程序,Idea 还具有许多插件和扩展&#xff0c;可以根据开发人员的需要进行定制和扩展&#xff0c;从而提高开发效率,今天我们就来介绍一款…

uniapp-距离distance数字太长,截取保留前3为数字

1.需求 将接口返回的距离的字段&#xff0c;保留三位数显示。 2.实现效果 3.代码&#xff1a; 1.这是接口返回的数据&#xff1a; 2.调取接口&#xff0c;赋值前先处理每条数据的distance <view class"left">距你{{item.distance}}km</view>listFun() …

C语言面试之旅:掌握基础,探索深度(面试实战之ARM架构一)

从前不会回头&#xff0c;往后不会将就。 ----小新 一.ARM采用32位架构 ARM约定一个Byte是8 bits&#xff0c;一个Halfword是16 bits (2 byte)&#xff0c;一个Word是32 bits (4 byte)。大部分ARM core …

回溯法及例题(C++实现)

回溯法概念 概念&#xff1a;在包含问题所有解的解空间树中&#xff0c;按照深度优先搜索的策略&#xff0c;根据根结点&#xff08;开始节点&#xff09;出发搜索解空间树。 流程&#xff1a;首先根结点成为活节点&#xff0c;同时也成为当前的扩展结点。在当前的扩展结点处…

蓝桥杯真题:四平方和-Java版

import java.io.*;/*先找后两个数for(int i 0; 2 * i * i < n;i)for(int j i; i * i j * j < n;j ) 再找前两个数 for(int i 0;4 * i * i < n; i )for(int j i;2 * (j * j i * i) < n;j )//这样就可以让后两个数尽量大,前两个数尽量小 这样就可以确定后…

Kubernetes学习笔记-Part.07 Harbor搭建

目录 Part.01 Kubernets与docker Part.02 Docker版本 Part.03 Kubernetes原理 Part.04 资源规划 Part.05 基础环境准备 Part.06 Docker安装 Part.07 Harbor搭建 Part.08 K8s环境安装 Part.09 K8s集群构建 Part.10 容器回退 第七章 Harbor搭建 Docker-Compose是用来管理容器的…

【React 开发】增强你的React 技能:2024年要掌握的4种高级模式

React由于其简单和灵活&#xff0c;近年来已成为最受欢迎的前端库之一。然而&#xff0c;当应用程序的复杂性扩展时&#xff0c;管理状态、处理异步输入和维护可扩展的体系结构可能会变得困难。我们将在本文中介绍四种高级React模式&#xff0c;它们将帮助您克服这些困难以及如…

Unity中C#使用协程控制Shader材质变化

文章目录 前言一、协程是什么二、在Unity中使用协程1、我们在 Start 中测试一下协程的执行顺序2、我们实现一个点击按钮实现角色受击效果 三、协程中的动画过渡1、首先&#xff0c;在协程内实现中毒并且消散的效果2、在 OnGUI 内&#xff0c;给一个新按钮使用刚刚定义的协程 四…

算法基础六

搜索插入位置 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 示例 2: 输入: nums [1,3,5,6], target 2 输…

TCP 半连接队列和全连接队列

在 TCP 三次握手的时候&#xff0c;Linux 内核会维护两个队列&#xff0c;分别是&#xff1a; 半连接队列&#xff0c;也称 SYN 队列&#xff1b; 全连接队列&#xff0c;也称 accept 队列&#xff1b; 服务端收到客户端发起的 SYN 请求后&#xff0c;内核会把该连接存储到半连…

创新零售巨头:揭开山姆与Costco蓬勃发展背后的秘密

会员制商店这个冷门的业态突然之间硝烟弥漫&#xff0c;更多的资本开始涌向付费会员商店这一业态&#xff0c;本文即将探讨的是付费会员制的成功秘诀和零售企业可行的发展路径。Costco的发展经验对国内超市巨头的崛起具有显著的借鉴意义&#xff0c;以优质低价商品服务为中心&a…

辛普森距离(SD,Sampson Distance)

定义 Sampson误差是复杂性介于代数误差和几何误差之间&#xff0c;但非常近似于几何误差的一种误差。 应用 SLAM对极几何中使用到SD来筛选内点&#xff1a; 1.随机采样8对匹配点 2.8点法求解基础矩阵 ​&#xff1b; 3.奇异值约束获取基础矩阵F&#xff1b; 4.计算误差&…

前端开发_CSS

CSS定义 层叠样式表 (Cascading Style Sheets&#xff0c;缩写为 CSS&#xff09;&#xff0c;是一种 样式表 语言&#xff0c;用来描述 HTML 文档的呈现&#xff08;美化内容&#xff09; 书写位置&#xff1a;title 标签下方添加 style 双标签&#xff0c;style 标签里面书…