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. Centos或Windows中部署Zookeeper集群及其简单用法

    一.简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件 ...

  2. Android + Eclipse + PhoneGap 2.9.0 安卓最新环境配置,部分资料整合网上资料,已成功安装.

    前言:最近心血来潮做了一个以品牌为中心的网站,打算推出本地服务o2o应用.快速开发手机应用,最后选择了phonegap,这里我只是讲述我安装的过程,仅供大家参考. 我开发的一个模型http://www ...

  3. poj 2068 Nim(博弈dp)

    Nim Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 1403   Accepted: 791 Description Le ...

  4. iOS 几种加密方法

    iOS常见的几种加密方法 普通加密方法是讲密码进行加密后保存到用户偏好设置中 钥匙串是以明文形式保存,但是不知道存放的具体位置 1.base64加密 base64 编码是现代密码学的基础 基本原理: ...

  5. 你真的了解Python吗 ---Python的内存管理

    请看下面的一段代码: origin = {'a':100,'b':[1,2,34,5]} obj_copy ={}; print origin; obj_copy['key1']= origin; o ...

  6. easyui confirm提示框 调整显示位置

    方法一: $.messager.confirm("确认对话框","该客户已经存在!确定:查看该客户 ", function(r){ if(r){ alert(& ...

  7. 6种常见的Git错误以及解决的办法

    我们都会犯错误,尤其是在使用像Git这样复杂的东西时.如果你是Git的新手,可以学习如何在命令行上开始使用Git.下面介绍如何解决六个最常见的Git错误. Photo by Pawel Janiak  ...

  8. C++11模版元编程的应用

    1.概述 关于C++11模板元的基本用法和常用技巧,我在程序员2015年2月B<C++11模版元编程>一文(后称前文)中已经做了详细地介绍,那么C++11模版元编程用来解决什么实际问题呢, ...

  9. json简介及JsonCpp用法

    [时间:2017-04] [状态:Open] [关键词:数据交换格式,json,jsoncpp,c++,json解析,OpenSource] json简介 本文仅仅是添加我个人对json格式的理解,更 ...

  10. 《软件测试自动化之道》读书笔记 之 SQL 存储过程测试

    <软件测试自动化之道>读书笔记 之 SQL 存储过程测试 2014-09-28 待测程序测试程序   创建测试用例以及测试结果存储  执行T-SQL脚本  使用BCP工具导入测试用例数据  ...