如果在DECLARE CURSOR语句中指定FOR UPDATE子句,当应用程序1提取该行时,将会给该行加上U锁,应用程序2将会等待应用程序1释放U锁,这样,两个应用程序之间就不会发生死锁了。
下面举例说明如何在SELECT语句中使用FOR UPDATE子句。
EXEC SQL DECLARE c1 CURSOR FOR SELECT * FROM employee FOR UPDATE OF job; EXEC SQL OPEN c1; EXEC SQL FETCH c1 INTO …; If(strcmp(change,“YES”)= =0) EXEC SQL UPDATE employee SET job = :newjob WHERE CURRENT OF c1; EXEC SQL CLOSE c1; |
对于CLI编程,我们可以使用函数SQLSetConnectAttr()将DB2 CLI的连接属性SQL_ATTR_ACCESS_MODE的值设置为:SQL_MODE_READ_WRITE,效果是一样的。
4、指定OPTIMIZE FOR n ROWS子句
当我们希望提取的行数远远小于可能返回的行数时,在SELECT语句中指定OPTIMIZE FOR n ROWS子句。基于提取n行的假设,OP
TIMIZE FOR子句会影响查询的优化,同时也决定了通讯缓冲区中行的数目。
SELECT projno,projname,repemp FROM project WHERE deptno=’D11’ OPTIMIZE FOR 10 ROWS |
运用行的分块技术,通过在单一操作中一次性地提取一组行来减轻管理器的负担,这些行存储在缓冲区中,应用程序中的每一个FETCH请求都会从该缓冲区中提取下一行,如果指定OPTIMIZE FOR 10 ROWS,那么,系统会以10行为一组返回给用户。数据库
需要注意的是,OPTIMIZE FOR n ROWS子句既不会限制可以提取的行数,也不会影响提取的结果,但是,该子句会影响应用程序的性能,如果最终提取的行数小于或等于n,该子句会改善性能;否则,如果大于n,性能就会下降。
5、指定FETCH FIRST n ROWS ONLY子句
如果不希望应用程序提取n行以上的记录,我们可以在编程时指定FETCH FIRST n ROWS ONLY子句;反之,如果不指定该子句,结果集中可能就会有很多行(大于n)。注意,该子句不能与FOR UPDATE子句同时使用。
参看下面的例子,程序最多能提取5行。
SELECT projno,projname,repemp FROM project WHERE deptno=’D11’ FETCH FIRST 5 ROWS ONLY |
该子句同OPTIMIZE FOR n ROWS子句一样,也决定通讯缓冲区中行的数目;如果同时指定FETCH FIRST n1 ROWS ONLY子句和OPTIMIZE FOR n2 ROWS子句,则取n1和n2二者中的较小值作为通讯缓冲区的大小。
分享到:
相关推荐
db2常用语句、db2常用语句、db2常用语句、db2常用语句、db2常用语句、db2常用语句、db2常用语句、db2常用语句
DB2 SQL语句性能分析方法
《DB2 SQL性能调优秘笈》不仅详尽阐述了100余条SQL语句优化的技巧和最佳实践、编写高性能SQL语句的标准和原则,以及DB2数据库性能优化的“15步法”,而且还包含大量案例,为解决各种复杂的DB2性能问题提供了解决方案...
深刻理解DB2的锁及并发机制、索引原理、数据库参数、优化器原理、SQL语句调优等内部机理才能针对性地快速提出解决问题的方法;快照、db2pd、db2expln及事件监控器等则是必须熟练掌握的工具。《DB2数据库性能调整和...
很好的东西,使用DB2必备.也可以作平常复习巩固用,免费分享给大家了……
SQL_Server,Oracle,DB2数据库SQL语句比较
DB2之SQL优化浅析,详细介绍了DB2的一些SQL语句的优化。
DB2 怎么使用语句自动产生数据库 尤其当数据库没有测底删掉成功的时候
DB2数据库SQL注入手册1
这是一位有经验的前辈对于DB2 sql 语句总结,个人觉得很不错。
SQL_ServerDB2数据库SQL语句比较
自己总结的关于 db2数据库当前日期和前一天日期的sql语句
可以试试学习一下,不可以滥用, 猜用户表数量: and 0<(SELECT count(NAME) FROM SYSIBM.SYSTABLES where CREATOR=USER)
Db2_存储过程中SQL语句优化操作步骤
讲述了DB2的SQL语法,函数功能,语句块等。
DB2中常用的SQL语句 经典SQL语句集锦 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
db2常见错误类型可以帮助你快速定位存储过程编译时候的各种错误,优化SQL语句可以提高SQL执行效率以及常见的错误SQL
├ 第02周 DB2性能优化方法系统 │ │ 第2周 DB2性能优化方法系统.pdf │ │ 第二周 DB2性能优化方法系统.mp4 ├ 第03周 从监控开始 │ │ 第3周 从监控开始.pdf │ └ 第三周 从监控开始.mp4 ├ 第04周 配置参数...