!--a11y-->

ABAP プログラムのパフォーマンスは、データベースアクセスの効率性に大きく依存します。そのため、SQL 命令は詳細に分析する価値があります。このための手助けとして、パフォーマンストレースおよび 実行時間分析ツール (ABAP ワークベンチのテストメニュー) を使用します。特に、パフォーマンストレースの SQL トレース では、オープン SQL 命令のどの部分がどこで処理され、その処理にどのくらい時間がかかるかが示されます。
SQL 命令が ABAP プログラムの実行時間に影響する方法を理解するには、基礎となるシステムアーキテクチャを理解する必要があります。アプリケーションサーバのワークプロセスは、R/3 システムの実行中にはユーザ ( クライアント) としてデータベースシステム ( サーバ) にログオンされます。データベース管理システム (DBMS) は、ユーザとデータ間の接続を形成します。
DBMS の標準構造は以下のとおりです。
キ データベースワークプロセスは、データベースクライアントが呼び出せるサービスを提供します。
キ 接続の確立、データベーステーブルの変更、データベースエントリのロック、アーカイブなど、異なるタスクには異なるデータベースサービスがあります。
キ DBMS キャッシュや命令キャッシュなど他のリソースを含む大規模な共有メモリ領域と REDO 情報があります。
キ データベースファイルはハードディスクに格納され、ファイルシステムによって管理されます。
このアーキテクチャ内に、パフォーマンスに関して重要な 4 つのポイントがあります。
キ 物理入力/ 出力 (I/O)
データベースファイルの読込および書込は最大のボトルネックです。適切に設定されたシステムの目印となるのがI/O の速度です。
キ データベースキャッシュに使用されたメモリ
キ データベースがインストールされたホスト上の CPU 使用率
対照型マルチプロセッサシステムでは、これは関係ありません。
キ ネットワーク通信
少量のデータでは重要ではありませんが、大量のデータがかかわる場合はボトルネックになります。
各データベースシステムでは、SQL 命令の実行計画を登録するためのオプティマイザが使用されます ( たとえば、索引を使用するかテーブルスキャンを使用するかを設定するため) 。オプティマイザには 2 種類あります。
ルールベースオプティマイザは、SQL 命令の構造 ( 主に値を持たない SELECT および WHERE 句) とテーブル索引を分析します。命令の実行に使用するメソッドを見つけるためにアルゴリズムを使用します。
コストベースオプティマイザは上記の手順を使用しますが、WHERE 句およびテーブル統計の一部の値も分析します。統計には、項目の上位値と下位値、またはテーブル内のデータ分布を含むヒストグラムが含まれます。コストベースオプティマイザはテーブルに関する情報をより多く使用するため、通常はデータベースアクセスが速くなります。短所は、統計を定期的に更新しなければならない点です。
リリース 7.1 以前 の ORACLE データベースではルールベースオプティマイザを使用します。リリース 7.2 (R/3 リリース 4.0A) からは、コストベースオプティマイザを使用します。その他のデータベースシステムはすべてコストベースオプティマイザを使用します。
上記のアーキテクチャにもとづいた、ABAP プログラムでのデータベースアクセスをより効率的にするための 5 つのルールがあります。これらのルールは特に以下のデータベースシステムに適用されます。
キ ORACLE
キ INFORMIX
キ ADABAS
キ DB2/400 (EBCDIC コードページを使用)
キ Microsoft SQL Server
以下のデータベースシステムでは、ルールは一部またはまったく適用されません。
キ DB2/6000
キ DB2/MVS
キ ORACLE Parallel Server (OPS)
5 つのルールの説明は、以下のセクションにあります。