WEB开发网
开发学院数据库DB2 SQL语句优化DB2应用程序性能 阅读

SQL语句优化DB2应用程序性能

 2008-08-27 16:26:24 来源:WEB开发网   
核心提示: 谓词“deptno=’D11’”是数据参数谓词,因为没有索引定义在deptno列上,SQL语句优化DB2应用程序性能(3),必须存取基本表来评估该谓词,剩余谓词是指那些除了对基本表进行简单的存取操作之外,这样,当处理后续的UPDATE语句时,

谓词“deptno=’D11’”是数据参数谓词,因为没有索引定义在deptno列上,必须存取基本表来评估该谓词。

剩余谓词是指那些除了对基本表进行简单的存取操作之外,还要进行I/O操作的谓词,包括使用子查询的谓词(子查询中带有ANY,ALL,IN或SOME),以及读取LONG VARCHAR或大对象(LOB)数据的谓词(在DB2中,LONG VARCHAR、大对象和表是分开存放的)。

剩余谓词是用关系数据服务(RDS)来进行评估的,而且,它在这四类谓词中成本最昂贵。由于相对范围界定谓词和索引参数谓词来说,剩余谓词和数据参数谓词的成本比较高,所以,我们应该尽可能地限制范围界定谓词和索引参数谓词界定的行数。

我们来看一下DB2的组件:索引管理器,数据管理服务和关系数据服务。图1显示DB2的各个组件和处理这四类谓词的位置。

SQL语句优化DB2应用程序性能

图1 DB2 UDB组件和谓词

其实,DB2组件很多,图1只是一个简化后的示意图。

关系数据服务(RDS)从应用程序那里接收到SQL请求,并返回结果集;除了剩余谓词外,RDS将所有谓词都发送给数据管理服务(DMS);剩余谓词由RDS进行评估。

DMS评估数据参数谓词。如果SELECT列表中存在一些不能由索引搜索进行评估的列,那么,DMS就会直接扫描数据页。

索引管理器从DMS那里接收、评估范围界定谓词和索引参数谓词,然后,将数据页的行标识符(RID)返回给DMS。

了解各种谓词的定义、转换条件及其使用场所,对我们深入剖析应用程序,提高应用程序性能是有所裨益的。

3、指定FOR UPDATE子句

如果想更新提取的数据,我们应该在游标定义的SELECT语句中指定FOR UPDATE子句。这样做的好处在于,数据库管理器在开始的时候就可以选择适当的加锁级别,例如,使用U(更新)锁,而不是S(共享)锁,这样,当处理后续的UPDATE语句时,就可以省去从S锁转换到U锁的开销了。

上一页  1 2 3 4 5 6  下一页

Tags:SQL 语句 优化

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