通过DB2 TPC-C基准实现探索SQL(2)
2009-12-23 15:00:07 来源:WEB开发网结束语
在本文中,Rielau 简要地介绍了 TPC-C 基准的模式及其事务。为了在 DB2 已达到的极限级别上执行这个基准,需要更多的东西,但对 SQL 的简洁的使用处于首要地位。高效的 SQL 产生高效的查询计划,高效的查询计划又意味着只需要执行必不可少的代码路径。只读取必不可少的行。Rielau 认为 DB2 在 TPC-C 基准中使用的 SQL 已经非常接近最优。要进一步精化的东西非常少。
总而言之,以下是 TPC-C 这个实现暴露出的有趣的 SQL 特性:
SQL 表函数的使用使您可以将过程性逻辑放入到查询的 FROM 子句中。通过 关联(correlation),SQL 表函数允许以一种更高效的方式实现迭代,而不是使用游标。
SQL 表函数中的 MODIFIES SQL DATA 使您甚至可以将 INSERT、UPDATE、DELETE 和 MERGE ( 数据更改操作)放入到关联连接的内表中。
在 FROM 子句中对 数据更新操作 的使用允许对生成的列(例如 ID)的检索,以及对要被删除或更新的数据的检索。
通过使用 作为 数据更改操作 的目标的查询 ,可以删除或更新由复杂的 SQL(包括 ORDER BY)确定的行。对这一特性的一个常见应用就是 POP 队列语义 的实现。
ORDER BY 结合 FETCH FIRST 可以有效地用于选择最大或最小行,包括对不是聚合函数本身一部分的列的检索。
当按条件选择行,而不是简单地选择最大或最小行时,可以考虑 OLAP 函数。
公共表表达式(WITH 子句)允许 数据更新操作 的高效 管道。
虽然 TPC-C 基准非常简单,但是它在 OLTP 处理的很多方面仍然非常有效。
注意,虽然 DB2 不是第一种引入从 INSERT、UPDATE 和 DELETE 返回数据的手段的产品,但它是第一种将此概念集成到 SQL 本身当中的产品,它为结果的即时关系处理提供了支持,而无需使用临时表和过程语言结构。
更多精彩
赞助商链接