CICS Db2 应用程序的 SQL ,线程安全和其他编程注意事项
在开发应用程序时,您必须了解一些编程注意事项,以提高应用程序的性能并避免潜在问题。 无论您是使用限定 SQL 还是不限定 SQL ,都会影响 CICS® Db2® 环境的许多其他方面。 要获得开放式事务环境 (OTE) 的性能优势,应用程序必须是线程安全的。
SQL 语言
CICS 程序员可使用完整的SQL语言,仅存在少量限制。 有关在 CICS 程序中使用SQL语言的详细说明,请参阅 Db2 for z/OS 产品文档中的《 Db2 for z/OS 编程指南》。
在 CICS 程序中,可以使用:
- 数据操作语言 (DML)
- 数据描述语言 (DDL)
- GRANT 和 REVOKE 语句
CICS 还支持动态和静态 SQL 语句。
但是,出于性能和并行原因,建议您通常不要在 CICS中发出 DDL 和 GRANT 和 REVOKE 语句。 您还应该限制动态 SQL 使用。
这些建议的原因是可以锁定 Db2 目录页面,从而降低并行级别。 此外,这些类型的 SQL 语句的资源消耗通常高于静态 DML SQL 语句的资源消耗。
视图
通常建议您在适当情况下使用视图。 请注意,无法更新某些视图。
在实时联机系统中,您通常需要使用视图更新检索到的行。 如果视图更新限制强制您直接更新基本表 (或使用其他视图) ,请仅考虑可更新的视图。 在大多数情况下,这使程序更易于读取和修改。
更新索引列
更新索引列时,必须考虑以下内容。
- 更新表中的字段时, Db2 不会使用包含此字段的任何索引来接收行。 这包括 DECLARE CURSOR 语句的 FOR UPDATE OF 列表中列出的字段。 它与是否更新该字段无关。
- 可以使用多个分区重新创建当前为非分区的表空间。 不允许对分区键字段进行 SQL 更新。 这意味着必须更改对这些字段执行更新的程序,以改为使用 DELETE 和 INSERT 语句。
唯一索引的依赖关系
如果 SELECT 语句中提供了完整键,那么程序员可以利用 Db2 仅返回具有唯一索引的表中的一行这一事实。 在这种情况下,不需要游标。
如果更改了索引并且删除了唯一性,那么当返回两行或更多行时,程序不会正确执行。 程序接收 SQL 错误代码。