Java jdbc和z/os db2

Java jdbc和z/os db2,java,jdbc,db2,Java,Jdbc,Db2,有人能解释为什么我在访问z/OSDB2的JavaJDBC中看到这种行为吗 我有一个z/OSDB2V10表,有三列,两列组成uniue索引,第三列是一个pureXML列,它保存一个1KB长的xml文档 这个表有一百万行。出于测试目的,每行都有相同的xml文档 当我运行一个对表进行10000次随机读取的循环时,每次读取都会找到一行,jdbc跟踪文件中显示的db2服务器时间在2ms到62000ms之间变化 什么会导致响应时间如此之长 还有,为什么我的jdbc跟踪对核心和网络有负时间 [jcc][Sy

有人能解释为什么我在访问z/OSDB2的JavaJDBC中看到这种行为吗

我有一个z/OSDB2V10表,有三列,两列组成uniue索引,第三列是一个pureXML列,它保存一个1KB长的xml文档

这个表有一百万行。出于测试目的,每行都有相同的xml文档

当我运行一个对表进行10000次随机读取的循环时,每次读取都会找到一行,jdbc跟踪文件中显示的db2服务器时间在2ms到62000ms之间变化

什么会导致响应时间如此之长

还有,为什么我的jdbc跟踪对核心和网络有负时间


[jcc][SystemMonitor:start]
[jcc][Time:2012-08-02-11:43:48.188][Thread:main][PreparedStatement@10b4b2f]调用了executeQuery()
[jcc][Time:2012-08-02-11:43:48.219][Thread:main][PreparedStatement@10b4b2f]executeQuery()返回com.ibm.db2.jcc.t4。j@812862
[jcc][SystemMonitor:stop]核心:22.185222ms |网络:21.831545ms |服务器:2.956ms


[jcc][Time:2012-08-02-11:44:23.251][Thread:main][PreparedStatement@10b4b2f]调用了executeQuery()
[jcc][Time:2012-08-02-11:45:25.251][Thread:main][PreparedStatement@10b4b2f]executeQuery()返回com.ibm.db2.jcc.t4。j@68ef48
[jcc][SystemMonitor:stop]核心:-3615.90705ms |网络:-3616.401806ms |服务器:61978.244ms

这是java/jdbc环境的详细信息


[jcc]驱动程序:用于JDBC和SQLJ 4.12.79的IBM数据服务器驱动程序
[jcc]兼容的JRE版本:{1.6}
[jcc]目标服务器许可限制:{z/OS:已启用;SQLDS:已启用;iSeries:已启用;DB2 for Unix/Windows:已启用;Cloudscape:已启用;Informix:已启用}
[jcc]已启用范围检查:true
[jcc]错误检查级别:0xff
[jcc]默认提取大小:64
[jcc]默认隔离:2
[jcc]收集性能统计信息:false
[jcc]未检测到安全管理器。
[jcc]安全管理器允许访问包sun.io。
[jcc]JDBC 1系统属性JDBC.drivers=null
[jcc]Java运行时环境版本1.6.0_21
[jcc]Java运行时环境供应商=Sun Microsystems Inc。
[jcc]Java供应商URL=
[jcc]Java安装目录=C:\Program Files\Java\jre6
[jcc]Java虚拟机规范版本=1.0
[jcc]Java虚拟机规范供应商=Sun Microsystems Inc。
[jcc]Java虚拟机规范名称=Java虚拟机规范
[jcc]Java虚拟机实现版本=17.0-b17
[jcc]Java虚拟机实施供应商=Sun Microsystems Inc。
[jcc]Java虚拟机实现名称=Java热点(TM)客户端虚拟机
[jcc]Java运行时环境规范版本=1.6
[jcc]Java运行时环境规范供应商=Sun Microsystems Inc。
[jcc]Java运行时环境规范名称=Java平台API规范
[jcc]Java类格式版本号=50.0
[jcc]操作系统名称=Windows XP
[jcc]操作系统体系结构=x86
[jcc]操作系统版本=5.1
[jcc]文件分隔符(“/”在UNIX上)=\
[jcc]路径分隔符(“:”在UNIX上)=;
[jcc]正在转储所有文件属性:{}
[jcc]pureQuery present=false

数据库产品名称:DB2 数据库产品版本:DSN10015 驱动程序名称:用于JDBC和SQLJ的IBM数据服务器驱动程序 驱动程序版本:4.12.79

稍高于分钟的等待闻起来像是某个地方设置了一分钟的超时。可能是您的应用程序无法分配足够的线程来发出请求(异步)?或者服务器中类似的超时-10000个顺序或并行请求对于任何数据库来说都是一个相当沉重的负载。

z/OS拥有世界上最先进的调度器,可以控制资源的分配方式……这是硬件昂贵时代的遗物,企业希望控制这些稀缺资源的去向

绩效周期就是一个例子。这是一种可以为短时间运行的程序提供出色响应时间的方法,同时防止较长的进程占用资源。在繁忙的系统上,琐碎的工作会立即运行,但大量资源用户的速度会减慢。这很容易成为你看到的一部分

尽管如此,还有很多变量……想想所有涉及的组件:客户端程序、网络、LPAR虚拟机监控程序、z/OSTCP/IP堆栈、DB2,然后还有磁盘场、内存等所有物理内容。任何这些都可以在响应时间引入变异性


IBM、CA和其他公司提供了非常复杂的性能监控产品,这些产品将为您提供比您想要的更多的详细信息。如果您的组织拥有这些工具中的任何一种,那么只要有一个训练有素的人花一点时间告诉您发生了什么

请注意计时,如果你计算经过的毫秒数,你会看到它大约在62000左右。将其压缩成一个有符号的short(所有Java类型都有符号),您将获得+--3500。那么,这可能只是一个简单的溢出情况吗?谢谢,这么简单的原因,很好,至少可以解释负面时间,现在就来看看为什么响应时间会有如此巨大的差异。

[jcc][SystemMonitor:start] 
[jcc][Time:2012-08-02-11:43:48.188][Thread:main][PreparedStatement@10b4b2f] executeQuery () called
[jcc][Time:2012-08-02-11:43:48.219][Thread:main][PreparedStatement@10b4b2f] executeQuery () returned com.ibm.db2.jcc.t4.j@812862
[jcc][SystemMonitor:stop] core: 22.185222ms | network: 21.831545ms | server: 2.956ms

[jcc][Time:2012-08-02-11:44:23.251][Thread:main][PreparedStatement@10b4b2f] executeQuery () called
[jcc][Time:2012-08-02-11:45:25.251][Thread:main][PreparedStatement@10b4b2f] executeQuery () returned com.ibm.db2.jcc.t4.j@68ef48
[jcc][SystemMonitor:stop] core: -3615.90705ms | network: -3616.401806ms | server: 61978.244ms

[jcc] Driver: IBM Data Server Driver for JDBC and SQLJ 4.12.79
[jcc] Compatible JRE versions: { 1.6 }
[jcc] Target server licensing restrictions: { z/OS: enabled; SQLDS: enabled; iSeries: enabled; DB2 for Unix/Windows: enabled; Cloudscape: enabled; Informix: enabled }
[jcc] Range checking enabled: true
[jcc] Bug check level: 0xff
[jcc] Default fetch size: 64
[jcc] Default isolation: 2
[jcc] Collect performance statistics: false
[jcc] No security manager detected.
[jcc] Access to package sun.io is permitted by security manager.
[jcc] JDBC 1 system property jdbc.drivers = null
[jcc] Java Runtime Environment version 1.6.0_21
[jcc] Java Runtime Environment vendor = Sun Microsystems Inc.
[jcc] Java vendor URL = http://java.sun.com/
[jcc] Java installation directory = C:\Program Files\Java\jre6
[jcc] Java Virtual Machine specification version = 1.0
[jcc] Java Virtual Machine specification vendor = Sun Microsystems Inc.
[jcc] Java Virtual Machine specification name = Java Virtual Machine Specification
[jcc] Java Virtual Machine implementation version = 17.0-b17
[jcc] Java Virtual Machine implementation vendor = Sun Microsystems Inc.
[jcc] Java Virtual Machine implementation name = Java HotSpot(TM) Client VM
[jcc] Java Runtime Environment specification version = 1.6
[jcc] Java Runtime Environment specification vendor = Sun Microsystems Inc.
[jcc] Java Runtime Environment specification name = Java Platform API Specification
[jcc] Java class format version number = 50.0
[jcc] Operating system name = Windows XP
[jcc] Operating system architecture = x86
[jcc] Operating system version = 5.1
[jcc] File separator ("/" on UNIX) = \
[jcc] Path separator (":" on UNIX) = ;
[jcc] Dumping all file properties: {  }
[jcc] pureQuery present = false

Database product name: DB2 Database product version: DSN10015 Driver name: IBM Data Server Driver for JDBC and SQLJ Driver version: 4.12.79