db2 的应用最常见的状态为UOW Executing, UOW Waiting,  Connect Completed等,这里做一个简单的介绍。

UOW全称是Unit Of Work, 可以认为是事务。

Connect Completed:           应用连库成功了。
UOW Executing: 应用正在执行某个SQL语句
UOW Waiting: 应用执行完一条SQL了,在等着执行同一事务中下一条SQL。 或者执行完了一个事务,在等着执行下一个事务。
Commit Active: 在做commit操作
Lock Wait: 在等其他应用hold住的锁
Rollback Active: 在做rollback操作
Pending Remote Quest: DPF环境下才有,在等其他节点的响应
Federated request pending: 联邦环境才有,在等联邦数据源的返回结果
下面的示例中,应用连接到数据库,完成了两个事务,并断开与数据库的连接,分别指示了各个时间的DB2应用的状态
$ db2 connect to sample                                 <--Database Connect Pending

<-- Connect Completed

$ db2 +c "update t1 set id = 200 where id = 100"        <--Uow Executing

<--Uow Waiting

$ db2 +c "insert into t1 values(300)"                   <--Uow Executing

<--Uow Waiting

$ db2 +c "select * from t1 where id = 300"              <--Uow Executing

<--Uow Waiting

$ db2 commit                                            <--Commit Active

<--Uow Waiting

$ db2 +c "insert into t2 values(200)"                   <--Uow Executing

<--Uow Waiting

$ db2 commit                                            <--Commit Active

<--Uow Waiting

$ db2 terminate                                         <--Database Disconnect Pending

补充解释1:

如果应用状态是UOW Waiting,如何判断它是“等着执行同一事务中下一条SQL”,还是“执行完了一个事务,在等着执行下一个事务”?

在db2 +c "select * from t1 where id = 300" 命令完成之后,抓取应用的snapshot,可以看到UOW stop timestamp为空,说明这个事务目前没有结束,在等着执行下一条SQL.

            Application Snapshot
Application handle =
Application status = UOW Waiting UOW start timestamp = -- ::32.931235
UOW stop timestamp =
UOW completion status =

在第一条commit命令之后,再查看snapshot,会发现UOW stop timestamp不为空了,说明上一个UOW完成,正等待执行下一个事务

UOW start timestamp                        = -- ::32.931235
UOW stop timestamp = 2017-03-07 13:24:47.092684
UOW completion status = Committed - Commit Statement

补充解释2:

有时应用的状态是Commit Active,Commit Active是指应用正在做提交操作,当db2loggw把日志记录写到磁盘上之后,这个状态就会消失。

如果一个应用保持CommitActive状态太久,比如好几秒钟,这说明有性能问题,原因要么是db2loggw太忙,要么是日志所在磁盘的IO太繁忙。

对于前者,可以加大LOGBUFSZ以避免log buffer full(可以从MON_GET_DATABASE表函数的num_log_buffer_full列查看log buffer full的次数) 对于后者,可以通过'iostat -DT 1'命令查看avgserv列,如果超过3 ms,这说明需要检查文件系统的布局和存储的配置了。最佳的实践是将容器磁盘和存放日志的磁盘物理上分开。

补充解释3:

事务占用日志情况

可以通过db2pd -db <dbname> -transactions 查看每个事务正在使用的日志的情况。

查看每个应用使用的日志大小 db2 "select application_handle,UOW_LOG_SPACE_USED,UOW_START_TIME FROM TABLE(MON_GET_UNIT_OF_WORK(NULL,-1)) order by UOW_LOG_SPACE_USED" 查看数据库整体日志的作用率:

https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.sql.rtn.doc/doc/r0060791.html 重点关注的参数有:
ApplHandl
The application handle of the transaction.
SpaceReserved
The amount of log space that is reserved for the transaction.
LogSpace
The total log space that is required for the transaction, including the used space and the reserved space for compensation log records.

db2 应用的最常见状态(转)的更多相关文章

  1. 了解一下Http常见状态码、Http协议的工作特点和原理、Http请求Post与Get的区别

    HTTP协议常见状态码状态码的作用负责标记客户端请求服务器的返回结果,标记服务器端的处理是否正常,通知出现的错误等等职责,借助客户端可以知道客户端是否正常请求服务端.五大类:1XX(信息类状态码,接收 ...

  2. HTTP协议、HTTP请求方法、常见状态码、HTTP消息

    HTTP协议 客户端请求,服务端响应.浏览器与服务器不建立持久连接,响应后连接失效. HTTP请求方法 一.GET GET方法用于获取请求页面的指定信息. 二.HEAD 除了服务器不能在响应里返回消息 ...

  3. http协议与常见状态码

    什么是http: http是属于应用层(基于tcp的连接方式)的面向对象的协议,是计算机通过网络通信的规则,使得浏览器向web服务器请求信息和服务 http协议特点: http是一种无状态协议(对食物 ...

  4. tcp常见状态

    常见状态 1.建立连接 2.关闭连接

  5. http常见状态码有哪些?

    ajax常见面试题 1:什么是ajax?ajax作用是什么? 异步的javascript和xml AJAX 是一种用于创建快速动态网页的技术. ajax用来与后台交互 2:原生js ajax请求有几个 ...

  6. 计算机网络【9】—— HTTP1.0和HTTP1.1的区别及常见状态码

    一.HTTP1.0与HTTP1.1的区别 1.HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理 HTTP 1.0规定浏览器与服务器只保持 ...

  7. URI、URL、请求、响应、常见状态代码

    URI:路径(统一资源标识符,包括本地地址和网络地址) URL是URI的一种子路径, URI范围比URL范围广. URL (Uniform Resource Locator,统一全球资源定位符): 通 ...

  8. Python Requests库 Get和Post的区别和Http常见状态码

    (1)   在客户端,Get方式在通过URL提交数据,数据在URL中可以看到:POST方式,数据放置在HTML HEADER内提交. (2)   GET方式提交的数据最多只能有1024 Byte,而P ...

  9. 19. HTTP协议二:HTTP请求与响应、常见状态码

    HTTP请求与响应 HTTP请求 HTTP请求是指从客户端到服务器端的请求消息.HTTP请求主要由三部分构成,请求行.请求头(headers).body(请求数据). 上图是笔者用Charles抓包工 ...

随机推荐

  1. linux系统下创建oracle表空间和用户权限查询

    创建用户和表空间: 1.登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su - oracle命令切换成oracle用户) 2.以sysdba方式来打开sqlplus,命令 ...

  2. zabbix 客户端安装配置

      1.下载zabbix wget http://netix.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.7/zabb ...

  3. 【PMP】项目浮动的三种时间

    自由浮动时间 不影响后续工作最早可以开始时间的前提下,这项工作可以拖延的时间叫做自由浮动时间. 总浮动时间 不影响项目总工期的情况下活动可以拖延的总时间. 项目浮动时间 在已经排好的总工期的基础上,领 ...

  4. orocos_kdl学习(二):KDL Tree与机器人运动学

    KDL(Kinematics and Dynamics Library)中定义了一个树来代表机器人的运动学和动力学参数,ROS中的kdl_parser提供了工具能将机器人描述文件URDF转换为KDL ...

  5. 用Docker启动php-5.6 fpm服务配合宿主机nginx运行php测试环境

    因为Ubuntu18.04默认的openssl版本就是1.1.0, 而PHP5.6无法在openssl 1.1下编译 "PHP 5.6 is receiving only security ...

  6. 【LeetCode】236. Lowest Common Ancestor of a Binary Tree

    Lowest Common Ancestor of a Binary Tree Given a binary tree, find the lowest common ancestor (LCA) o ...

  7. Redis相关技巧

    一. 内存占用过大,设置内存最大上限. vi /etc/redis.conf maxmemory 1g maxmemory-policy allkeys-lru (慎用) appendonly yes ...

  8. 【Linux】top命令

    top命令经常用来监控linux的系统状况,比如cpu.内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解.本文通过一个运行中的W ...

  9. Android 使用开源库StickyGridHeaders来实现带sections和headers的GridView显示本地图片效果

    大家好!过完年回来到现在差不多一个月没写文章了,一是觉得不知道写哪些方面的文章,没有好的题材来写,二是因为自己的一些私事给耽误了,所以过完年的第一篇文章到现在才发表出来,2014年我还是会继续在CSD ...

  10. 深入浅出理解c++虚函数

    深入浅出理解c++虚函数   记得几个月前看过C++虚函数的问题,当时其实就看懂了,最近笔试中遇到了虚函数竟然不太确定,所以还是理解的不深刻,所以想通过这篇文章来巩固下. 装逼一刻: 最近,本人思想发 ...