WEB开发网
开发学院数据库DB2 通过 DB2 TPC-C 基准实现探索 SQL 阅读

通过 DB2 TPC-C 基准实现探索 SQL

 2008-09-17 16:31:49 来源:WEB开发网   
核心提示: NEW ORDER 事务(本地)NEW ORDER 事务处理来自一个客户的新订单,这里需要做各种不同的事情: 获取下一个订单 id 和客户所在地区的地区税率,通过 DB2 TPC-C 基准实现探索 SQL(3), 增加客户所在地区的下一个订单 id,以便用于随后的事务,在 Microsof

NEW ORDER 事务(本地)

NEW ORDER 事务处理来自一个客户的新订单。这里需要做各种不同的事情:

获取下一个订单 id 和客户所在地区的地区税率。

增加客户所在地区的下一个订单 id,以便用于随后的事务。

对于客户订购的每种产品:

从 ITEM 表检索产品的名称、价格和描述。

从 STOCK 表检索该产品的地区信息和剩下的库存水平。

将该产品的库存水平减去订购的数量。如果库存低于阈值,则应该订购货物(通过简单地增加库存值来实现)。

将获得的相关数据,包括总价格,插入到 ORDER_LINE 中。

将订单插入 ORDERS 和 NEW_ORDER 表。

从 CUSTOMER 检索客户名、折扣、信用信息。

从 WAREHOUSE 检索销售税。

考虑折扣和税,计算总价格。

这是很大的工作量。不过,DB2 使用 SQL 语句来处理所有这些工作。其原理如下:

首先,DB2 处理 DISTRICT 表。这里需要返回数据,并执行更新。经验告诉我们,这需要 2 条 SQL 语句,并且 UPDATE 应该在 SELECT 语句之前执行;否则,当并发增多时,可能会发生死锁。

但是,DB2 支持一种新的 SQL 特性,这种特性正处在标准化的过程中。该特性允许访问触发器中所谓的 过渡表(transition table)。 OLD TABLE 过渡表保存了受影响的行在被 UPDATE 或 DELETE 语句处理之前的初始状态。 NEW TABLE 过渡表保存处理了 INSERT 或 UPDATE 语句之后受影响的行。这是 AFTER 触发器被激发之前的状态。懂得 Microsoft 或 Sybase 的用户可能知道这两个表,在 Microsoft 或 Sybase 中,这两个表的表名是 DELETED 和 INSERTED。

DB2 所做的就是允许 UPDATE、DELETE 和 INSERT 出现在选择语句的 FROM 子句中,并允许用户选择应该从哪个过渡表进行选择:

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

Tags:通过 DB TPC

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