0

有人可以解释为什么我从访问 z/os DB2 的 java JDBC 中看到这种行为吗

我有一个包含三列的 z/os db2 v10 表,两列组成 uniue 索引,第三列是一个 pureXML 列,它包含一个长度为 1KByte 的 xml 文档。

该表有 100 万行。每一行都有相同的 xml 文档用于测试目的。

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

什么会导致如此广泛的响应时间?

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


[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

这是 java/jdbc 环境详细信息


[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

4

2 回答 2

2

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

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

尽管如此,还是有很多很多的变量……想想所有涉及的组件:客户端程序、网络、LPAR 管理程序、z/OS TCP/IP 堆栈、DB2——然后是磁盘场等所有物理东西,内存等。任何这些都可能导致响应时间的可变性。

IBM、CA 和其他公司提供了非常复杂的性能监控产品,它们将为您提供比您想要的更多的详细信息。如果您的组织拥有这些工具中的任何一个,那么受过训练的人只需片刻就可以告诉您正在发生的事情。

于 2014-08-27T01:26:44.400 回答
0

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

于 2013-08-16T17:01:29.623 回答