WEB开发网
开发学院数据库DB2 打造更强的Java支持 阅读

打造更强的Java支持

 2010-05-14 15:00:40 来源:WEB开发网   
核心提示:DB2 UDB v.8.2 提供了一组新的 SQL 函数来获取 DB2 服务器性能信息(在 DB2 UDB v.8.2 的 SQL 参考中有相关文档),清单 3 展示了如何收集关于 SQL 查询在 DB2 UDB 服务器的执行时间的信息,打造更强的Java支持(4),该特性使开发人员可以在开发期间确立查询性能的基准,而

DB2 UDB v.8.2 提供了一组新的 SQL 函数来获取 DB2 服务器性能信息(在 DB2 UDB v.8.2 的 SQL 参考中有相关文档)。清单 3 展示了如何收集关于 SQL 查询在 DB2 UDB 服务器的执行时间的信息。该特性使开发人员可以在开发期间确立查询性能的基准,而不必使用 DB2 管理工具或第三方的性能工具。

清单 3. 收集 SQL 查询在 DB2 服务器上的执行时间

with t1 as
(select * from table (snapshot_appl_info('SAMPLE',-1)) as snap_appl_info
where tpmon_client_app = 'Payroll Module' )
select elapsed_exec_time_ms
from table (snapshot_appl ('SAMPLE',-1)) as snap_appl
where (select agent_id from t1) = snap_appl.agent_id
ELAPSED_EXEC_TIME_MS
--------------------
 77

新的 SQL 管理函数便于跟踪 Java 应用程序的执行细节。clientApplicationInformation 属性用于帮助确定用于获得 DB2 UDB 服务器上执行时间的应用程序模块。清单 3 获得标识为 Payroll Module 的应用程序的 agent_id,该应用程序连接到 SAMPLE 数据库。最后一条 SQL 语句的执行时间是 77 毫秒。

现在,让我们修改这段程序,使之获得在应用程序中的耗时和在 DB2 UDB 服务器上的执行时间(见清单 4)。下面是一个示例输出:

Query elapsed time from application: 30 milliseconds.

Total query execution time on DB2 server: 22 milliseconds.

清单 4. 获得应用程序中的耗时以及 DB2 UDB 服务器上的执行时间

// Access the query execution time on DB2 UDB v.8.2 server
query =
"with t1 as " +
"(select * from table (snapshot_appl_info('SAMPLE',-1)) as "+
"snap_appl_info where tpmon_client_app = 'Payroll Module') " +
"select integer(elapsed_exec_time_ms)
from table (snapshot_appl ('SAMPLE',-1)) as snap_appl " +
"where (select agent_id from t1) = snap_appl.agent_id";
resultSet = st.executeQuery (query);
while (resultSet.next()){
System.out.println("Total Query execution time on DB2 Stinger: " +
resultSet.getInt(1) + " milliseconds.");
}
resultSet.close();

这些新的 SQL 函数使 Java 开发人员可以清楚地知道,对于任何查询,网络传输和查询执行各自所占的比重有多大。请注意,要执行快照 SQL 函数,用户必须有 DB2 实例上的 SYSCTRL (或更高)权限。

如果在 JDBC 驱动程序处理期间发生错误,则 DB2 Universal JDBC Driver 会提供基本的 SQL 异常信息以及 DB2 服务器错误细节。现在,让我们修改应用程序,使之包括打印特定于 DB2 的 DB2Diagnosable 对象的细节。我们还将通过将 currentSchema 设置为一个不存在的数据库对象来引入一个 SQL 错误:

prop1.put("currentSchema","FRED"); // Set unqualified references

图 5 展示了 DB2 SQLCA 数据结构。对于使用嵌入式 C 的程序员,这种数据结构可能非常面熟。消息标志指出无效的数据库对象引用(在这个例子中是 FRED.STAFF)。

图 5. DB2 Universal JDBC Driver 错误处理

图 5. DB2 Universal JDBC Driver 错误处理

上一页  1 2 3 4 5  下一页

Tags:打造 Java 支持

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接