WEB开发网
开发学院数据库MSSQL Server 调优 SQL 过程 阅读

调优 SQL 过程

 2008-09-09 10:03:14 来源:WEB开发网   
核心提示: 这个图有什么问题吗?DECLARE 和 DROP 之间的 insert 语句每次都要重新进行编译,因为 DB2 无法知道该 DGTT 下次是否将具有相同的属性,调优 SQL 过程(4),实际上,DECLARE 和 DROP 之间有许多语句,第一种方法要求程序在在进行每一个重大操作之后,检查

这个图有什么问题吗?DECLARE 和 DROP 之间的 insert 语句每次都要重新进行编译,因为 DB2 无法知道该 DGTT 下次是否将具有相同的属性。实际上,DECLARE 和 DROP 之间有许多语句,都可用于处理该临时表结果集的格式,直到它最终满足要求为止。

为了避免这种疯狂编译,将该临时表的声明移至一个单独过程中会更合适一些,该过程只在启动工作负载时执行一次。

调优 SQL 过程

正如您可以在上面看到的,其结果是令人震惊的。但这里将有更多要了解的东西。请观察取代 DROP 语句的 DELETE 语句。它将总是因用户引起的错误而失败,然后,将由一个 continue 处理程序解决这个错误。这里发生了什么事?

为了提高速度,需要优化临时表,因此,当插入行时,DB2 不用费心在临时表中寻找空闲空间,而是将表行为替换为 APPEND ONLY。虽然常规的 DELETE 将删除这些行,但是它不会真正让 DB2 回收这些空间。应用程序将继续消费越来越多的用户临时表空间。

实际上,另外一个因素在这里提供了帮助。那就是,所有 DGTT 都被声明为 NOT LOGGED。毕竟,您可以相当容易地重新构建临时表的内容。如果 NOT LOGGED 表在执行数据修改语句期间碰到了执行错误,那么对于 DB2 来说,就只有一个选择:清空(truncate)该表。而这就是 DELETE 语句所进行的工作。

条件处理程序

计算机语言有两种处理错误的常用方法。

第一种方法要求程序在在进行每一个重大操作之后,检查错误。在 DB2 中编写 C-UDF 或 C 存储过程的开发人员已经学会在其代码的每条 EXEC SQL 语句之后检查 SQLCA。

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

Tags:SQL 过程

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