SAP ABAP 性能优化技巧 — 性能分析的工具
以下是SAP提供的各种对ABAP对象进行性能分析的工具:
1.运行实时分析 transaction SE30
这个 transaction 可以给出对一个ABAP程序的所有分析,包括数据库和非数据库处理操作。
2.SQL 追踪 transaction ST05
追踪列表有很多行不是关于 SELECT 语句的,因为任何ABAP程序的执行都会需要很多附加的管理性SQL调用。可以使用过滤器来显示追踪列表的输出来只显示有关的行。
追踪列表同时包 含与一个SELECT语句相关的多个不同 SQL 命令,因为 R/3 数据库接口 — R/3应用服务器的一个复杂的组成部分 — 将每一个 Open SQL 命令映射为一个或一系列的物理数据库调用指令并执行这些指令。这种映射依赖于具体的调用和数据库系统,对R/3的性能是非常重要的。例如在我们的测试程序中,SPFLI表上的 SELECT-ENDSELECT 循环被映射成为一连串Oracle环境下的 PREPARE-OPEN-FETCH 的物理调用。
追踪列表中的SQL语句的WHERE条件与ABAP语句中的 WHERE 是不同的。因为在 R/3 系统中,客户是一个具有自己的主记录(master records)和自己的一组数据表的独立单元。使用ABAP,每一个 Open SQL 的命令都会自动在相应的客户环境中运行。因此,如果被查找的表有客户(client)字段的话,每一个WHERE语句都会自动添加一个条件包含实际的客户代码。
要查看一个语句的执行计划(execution plan),只需要将光标放在 PREPARE 语句上,然后选择 Explain SQL。具体的执行计划的解释取决于使用的数据库。
以下是SAP提供的各种对ABAP对象进行性能分析的工具:
1.运行实时分析 transaction SE30
这个 transaction 可以给出对一个ABAP程序的所有分析,包括数据库和非数据库处理操作。
2.SQL 追踪 transaction ST05
追踪列表有很多行不是关于 SELECT 语句的,因为任何ABAP程序的执行都会需要很多附加的管理性SQL调用。可以使用过滤器来显示追踪列表的输出来只显示有关的行。
追踪列表同时包 含与一个SELECT语句相关的多个不同 SQL 命令,因为 R/3 数据库接口 — R/3应用服务器的一个复杂的组成部分 — 将每一个 Open SQL 命令映射为一个或一系列的物理数据库调用指令并执行这些指令。这种映射依赖于具体的调用和数据库系统,对R/3的性能是非常重要的。例如在我们的测试程序中,SPFLI表上的 SELECT-ENDSELECT 循环被映射成为一连串Oracle环境下的 PREPARE-OPEN-FETCH 的物理调用。
追踪列表中的SQL语句的WHERE条件与ABAP语句中的 WHERE 是不同的。因为在 R/3 系统中,客户是一个具有自己的主记录(master records)和自己的一组数据表的独立单元。使用ABAP,每一个 Open SQL 的命令都会自动在相应的客户环境中运行。因此,如果被查找的表有客户(client)字段的话,每一个WHERE语句都会自动添加一个条件包含实际的客户代码。
要查看一个语句的执行计划(execution plan),只需要将光标放在 PREPARE 语句上,然后选择 Explain SQL。具体的执行计划的解释取决于使用的数据库。