Table of Contents

Open all
Close all
Foreword
13
Preface and Acknowledgments
15
1 Introduction
17
1.1 Tuning Methods
17
1.2 Structure of the Book
19
1.3 How to Use This Book
20
2 SAP System Architecture for ABAP Developers
21
2.1 SAP System Architecture
21
2.1.1 Three-Layer Architecture
22
2.1.2 Distribution of the Three Layers
23
2.2 Performance Aspects of the Architecture
25
2.2.1 Frontend
26
2.2.2 Application Layer
26
2.2.3 Database
27
2.2.4 Summary
27
3 Performance Analysis Tools
29
3.1 Overview of Tools
29
3.2 Usage Time of Tools
31
3.3 Analysis and Tools in Detail
34
3.3.1 SAP Code Inspector (Transaction SCI)
34
3.3.2 Selectivity Analysis (Transaction DB05)
40
3.3.3 Process Analysis (Transactions SM50/SM66) — Status of a Program
44
3.3.4 Debugger — Memory Analysis
47
3.3.5 Memory Inspector (Transaction S_MEMORY_INSPECTOR)
49
3.3.6 Transaction ST10 — Table Call Statistics
51
3.3.7 Performance Trace — General Information (Transaction ST05)
54
3.3.8 Performance Trace — SQL Trace (Transaction ST05)
57
3.3.9 Performance Trace — RFC Trace (Transaction ST05)
70
3.3.10 Performance Trace — Enqueue Trace (Transaction ST05)
72
3.3.11 Performance Trace — Table Buffer Trace (Transaction ST05)
74
3.3.12 ABAP Trace (Transaction SE30)
77
3.3.13 Single Transaction Analysis (Transaction ST12)
89
3.3.14 E2E Trace
101
3.3.15 Single Record Statistics (Transaction STAD)
109
3.3.16 Dump Analysis (Transaction ST22)
119
3.4 Tips for the Performance Analysis
123
3.4.1 Consistency Checks
123
3.4.2 Time-Based Analysis
123
3.4.3 Prevention
123
3.4.4 Optimization
124
3.4.5 Runtime Behavior of Mass Data
124
3.5 Summary
124
4 Parallel Processing
127
4.1 Packaging
127
4.2 Parallel Processing
129
4.2.1 Background
130
4.2.2 Challenges and Solution Approaches for Parallelized Programs
131
4.2.3 Parallel Processing Technologies
140
4.2.4 Summary
145
5 Data Processing with SQL
147
5.1 The Architecture of a Database
147
5.2 Execution of SQL
151
5.2.1 Execution in SAP NetWeaver AS ABAP
151
5.2.2 Execution in the Database
153
5.3 Efficient SQL: Basic Principles
155
5.4 Access Strategies
155
5.4.1 Logical Structures
155
5.4.2 Indexes as Search Helps
158
5.4.3 Operators
167
5.4.4 Decision for an Access Path
169
5.4.5 Analysis and Optimization in ABAP
170
5.4.6 Summary
184
5.5 Resulting Set
185
5.5.1 Reducing the Columns
188
5.5.2 Reducing the Rows
190
5.5.3 Reading a Defined Number of Rows
191
5.5.4 Aggregating
193
5.5.5 Existence Checks
195
5.5.6 Updates
196
5.5.7 Summary
197
5.6 Index Design
198
5.6.1 Read or Write Processing
200
5.6.2 How is Data Accessed
202
5.6.3 Summary
204
5.7 Execution Frequency
205
5.7.1 View
209
5.7.2 Join
210
5.7.3 FOR ALL ENTRIES
211
5.8 Used API
215
5.8.1 Static Open SQL
216
5.8.2 Dynamic Open SQL
216
5.8.3 Static Native SQL
216
5.8.4 Summary
217
5.9 Special Cases and Exceptions
217
5.9.1 Sorting
217
5.9.2 Pool and Cluster Tables
218
5.9.3 Hints and Adapting Statistics
220
6 Buffering of Data
223
6.1 SAP Memory Architecture from the Developer’s Point of View
223
6.1.1 User-Specific Memory
225
6.1.2 Cross-User Memory
225
6.2 User-Specific Buffering Types
227
6.2.1 Buffering in the Internal Session
227
6.2.2 Buffering Across Internal Sessions
230
6.2.3 Buffering Across External Sessions
231
6.2.4 Summary
231
6.3 Cross-User Buffering Types
232
6.3.1 Buffering in the Shared Buffer
232
6.3.2 Buffering in the Shared Memory
233
6.3.3 Buffering via the Shared Objects
234
6.3.4 Summary
235
6.4 SAP Table Buffering
236
6.4.1 Architecture and Overview
237
6.4.2 What Tables Can Be Buffered
243
6.4.3 Performance Aspects of Table Buffering
244
6.4.4 Analysis Options
251
6.5 Summary
251
7 Processing of Internal Tables
253
7.1 Overview of Internal Tables
253
7.2 Organization in the Main Memory
255
7.3 Table Types
258
7.4 Performance Aspects
265
7.4.1 Fill
265
7.4.2 Read
268
7.4.3 Modify
273
7.4.4 Delete
274
7.4.5 Condense
275
7.4.6 Sort
276
7.4.7 Copy Cost-Reduced or Copy Cost-Free Access
277
7.4.8 Secondary Indexes
278
7.4.9 Copy
279
7.4.10 Nested Loops and Nonlinear Runtime Behavior
282
7.4.11 Summary
284
8 Communication with Other Systems
287
8.1 RFC Communication Between ABAP Systems
288
8.1.1 Synchronous RFC
288
8.1.2 Asynchronous RFC
288
8.2 Performance Aspects for the RFC Communication
290
8.3 Summary
293
9 Special Topics
295
9.1 Local Update
295
9.1.1 Asynchronous Update
295
9.1.2 Local Update
297
9.2 Parameter Passings
298
9.3 Type Conversions
299
9.4 Index Tables
299
9.5 Saving Frontend Resources
300
9.6 Saving Enqueue and Message Service
301
10 Outlook
303
10.1 Important Changes to the Tools for the Performance Analysis
303
10.1.1 Performance Trace (Transaction ST05)
303
10.1.2 ABAP Trace (Transaction SAT)
309
10.2 Important Changes to Internal Tables (Secondary Key)
314
10.2.1 Definition
314
10.2.2 Administration Costs and Lazy Index Update
315
10.2.3 Read Accesses
315
10.2.4 Active Key Protection
317
10.2.5 Delayed Index Update for Incremental Key Changes
317
10.2.6 Summary
318
Appendices
319
A Execution Plans of Different Databases
319
A.1 General Information on Execution Plans
319
A.2 IBM DB2 (IBM DB2 for zSeries)
320
A.3 IBM DB2 (DB2 for iSeries)
323
A.4 IBM DB2 (DB2 for LUW)
326
A.5 SAP MaxDB
329
A.6 Oracle
332
A.7 Microsoft SQL Server
336
B The Author
339
Index
341