ABAP Performance Tuning343411326097630

29
ABAP Training ABAP Performance Tuning

Transcript of ABAP Performance Tuning343411326097630

Page 1: ABAP Performance Tuning343411326097630

ABAP Training

ABAP Performance Tuning

Page 2: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 2

3 Major Areas

Select statements Internal table usage Database index

Page 3: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 3

Select Statements

Ensure that data is selected with primary key /secondary index support with the fields in the select statement’s WHERE clause in the same order as fields in the index

Avoid negative WHERE clause (“NE”) because negative where clauses disable the index

Avoid long selects within AT SELECTION-SCREEN event

Page 4: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 4

Select Statements Where Clause Fields

Select up to 1 rows when 'where' clause fields <> 'primary key fields‘E.G. Select MATNR UPTO 1 rows from VBAP

Where VBELN = ‘0001500080’ Select single when 'where' clause fields = 'primary key fields'

E.G. Select single AUDAT VBTYP from VBAKWhere VBELN = ‘0001500080’

Page 5: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 5

Joined Select Statements

Select with join instead of nested select statements, if the number of records to be fetched is more than 5. Ensure that the join fields are the keyed fields

Limit tables in a join to three tables

Page 6: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 6

Select Statements Contd..

Select fields only instead of select *, when no. Of fields < 1/3rd of total fields in table or no. Of fields getting selected less than or equal to 16.

Use SAP standards views for multiple table data selection Data should not be selected within loop .. Endloop statements. Instead

use the select statement in join or for for all entries

Page 7: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 7

Select Statements Contd..

Select with where condition instead of checking them yourself with check-statements in transparent tables, else use the check statement in the pooled/cluster tables.

For a buffered table, if a program does require the latest data from a table it is better to qualify the SELECT statement with ‘BYPASSING BUFFER’ specification

Accesses to cluster type tables via non-key selection criteria should be avoided if possible

Page 8: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 8

Select Statements Contd..

Select using an aggregate function (SUM, MIN, MAX, COUNT) instead of computing the aggregates yourself

Use select into table than select + append statement

Page 9: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 9

Internal Table Usage

Check whether the internal table has records in it before executing the validation checks and related processing steps for that internal table. Example – before ‘for all entries in itab1’, ‘loop at itab1’

It is more efficient to use the AT statements ( AT NEW, AT END OF, AT LAST ...) for summing and control breaks purpose. Avoid using ON CHANGE OF

If using loop at WHERE statement never use internal tables events such as AT new inside the loop…Endloop

Page 10: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 10

Internal Table Usage Contd..

All internal table reads with binary search only, after sorting it on the 'with key' fields

To add data to an internal table and keep it sorted, use a READ with… BINARY SEARCH followed by an INSERT rather than using the APPEND statement followed by the SORT statement E.G. Read table INT_table with key INT_table binary search.

If SY-SUBRC <> 0.Insert INT_table index SY-TABIX.

ENDIF

Page 11: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 11

Internal Table Usage Contd..

When deleting records from an internal table, if possible, WHERE should be used together with FROM...And/or to ... to enhance performance even more E.G. Delete ITAB [from ...] [to ...] where …

When nested loops, include a 'read table itab2 with key binary serach transporting no fields + 'loop at ' itab2 from sy-tabix + key fields not equal to exit check)

Page 12: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 12

Internal Table Usage Contd..

Specify the sort fields explicitly in a sort statement Use 'if itab[] is initial' instead of 'describe table itab lines n + if n ge 0

…..') Key access to multiple lines use LOOP … WHERE which is faster than

LOOP/CHECK. Performance can be further enhanced if the LOOP WHERE is combined with FROM i1 and/or TO i2

For copying internal tables of same structure use TAB_DEST[] = TAB_SRC[]

Page 13: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 13

Internal Table Usage Contd..

Avoid unnecessary moves by using the explicit workarea for internal table operations

Internal tables of same structure can be compared in logical expressions just like other data objects. If tab1[] = tab2[]. ... ENDIF

Use DELETE itab WHERE, instead of LOOP AT itab WHERE … DELETE itab. Endloop

Page 14: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 14

Database Index

The purpose of an index is to quicken the scanning process when searching for specific records in a table.

An index is a copy of a table reduced to particular sorted fields to enable faster access to needed data.

Page 15: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 15

Creating Indexes

Indexes may be developed when the required access to a database table is based on fields other than the primary key of the table

Only include fields in an index if they reduce the selected data significantly

As indexes are adjusted each time table contents are changed, create secondary indexes discerningly to minimize the impact on the system

Page 16: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 16

Creating Indexes Contd..

Place the most “common” columns at the beginning of an index. The most “common” columns are those where reports are selecting columns with no ranges - the WHERE clause for these columns is an “equal to” expression. Rearrange columns of an index to match the selection criteria. For example, if a SELECT statement is written to include columns 1 and 2 with “equal to” expressions in the where clause and column 3 and 4 are selected with value ranges, then the index should be created with columns in the sequence of 1, 2, 3, 4.

Place columns toward the end of the index if they are either infrequently used in SELECTS or are part of reporting SELECTS that involve ranges of values

Page 17: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 17

Creating Indexes Contd..

Indexes should be small (few fields). Some optimizers are able to combine two or more indexes to execute a query. This is not possible with wide indexes

Multiple indexes of one table should be disjoint (have few common fields), in order not to confuse the optimizer which index to use

Page 18: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 18

Using Indexes

When selecting data from a table, look at the structure of all of the available indexes and tailor the WHERE clause to take advantage of the most selective index. Use all fields in the WHERE clause in the same order for an index, as skipping one field disables the index

Be sure to order the columns in the WHERE clause of a SELECT in the same order as an index table

Page 19: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 19

Time Costs for Key Access

Page 20: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 20

When To Use Which Table

Page 21: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 21

Explicit Binary Search

Page 22: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 22

Memory Costs

Page 23: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 23

Points to Be Considered

Each index slows down the inserts into the table. Updates are only slowed down if indexed fields are updated. On the other hand, the indexes increase the efficiency of reads. These tradeoffs must be weighed against one another. In general, frequently updated tables should have only few indexes while frequently selected tables might have more

Remove unused indexes or ones that change due to report design changes

Page 24: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 24

Points of Caution

The creation of an index can affect performance adversely The most suitable index for the select criteria might not be the index

chosen for use by the database optimizer. Validate the use of table indexes by performing a SQL trace

Creating indexes should be done carefully and jointly with the SAP database administrator

Page 25: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 25

Performance Tuning Tools

Extended syntax check

Runtime analysis

SQL trace

Page 26: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 26

Extended Syntax Check

Transaction code - SLIN or go through Choose program check extended program check

The system checks the entire program and allows you to run additional checks with a greater scope than the normal syntax check

Page 27: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 27

Runtime Analysis

Transaction code – SE30

Allows you to examine the performance of any transaction, ABAP program, or function module that you create in the ABAP workbench

Is intended for fine-tuning individual transactions, programs, and function modules

Page 28: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 28

SQL Trace

Transaction code – ST05 (performance trace tool)

Allows you to monitor the database access from reports and transactions

Allows you to see how the OPEN SQL statements that you use in ABAP programs are converted to standard SQL statements

Page 29: ABAP Performance Tuning343411326097630

ABAP Training ABAP Performance Tuning 29

SQL Trace Contd..

The SQL trace tells you: The SQL statements executed by your program. The values that the system uses for particular database access and

changes. How the system converts ABAP open SQL statements (such as SELECT)

into standard SQL statements. Where your application executes commits. Where your application repeats the same database access. The database accesses and changes that occur in the update part of

your application