例として、銀行当座預金情報を含む表を使用する、以下のTeradata SQL要求について考えてみましょう。この例では、AcctNo 列がTable_01 の固有基本索引であるものと仮定しています。Teradata Databaseで使用される索引のタイプについては、データ分散とデータ アクセスの方法を参照してください。
1. SELECT * FROM Table_01 WHERE AcctNo = 129317 ; 2. SELECT * FROM Table_01 WHERE AcctBal > 1000 ;
ここでは、次のように仮定します。
- PE 1とPE 2がそれぞれ要求1と要求2を受け取る。
- 口座129317のデータは、AMP1に格納されている行R9に入っている。
- すべての勘定残高に関する情報が、4つの全AMP間に均等に分散されている。
上記のSQL文は、次の手順で処理されます。
- PE 1は、その要求が基本索引検索であり、特定の1行へのアクセスとその行の返信を要求していると判断する。
- PE 1のディスパッチャは、該当する読み取りステップとR9/AMP 1の経路指定情報を含んだメッセージをBYNETへ送る。AMP 1から該当する行が返ってきたら、PE 1はそのデータをクライアントへと転送する。
- PE 2の構文解析プログラムは、これが全AMP要求であると判断して、該当する読み取りステップを含むメッセージをBYNETに送る。これらのメッセージは、全AMPに同時に送られる。
- AMPから結果が返ってきたら、PE 2はそのデータをクライアントへと転送する。
AMPのステップは、次の手順で処理されます。
- ロック - 同時アクセスによってデータの一貫性が損なわれる可能性がある状況下で、アクセスを逐次化する。
固有基本索引(UPI)、非固有基本索引(NUPI)、または固有副次索引(USI) のアクセスを使用する単純な要求については、このロック手順がステップ2に組み込まれます。索引とその使用方法については、データ分散とデータ アクセスの方法を参照してください。
- 操作 - 要求されたタスクを実行する。複雑な問合わせの場合、操作ステップ数が数百に上る場合がある。
- トランザクション終了 - ステップ1 または2 で設定されたロックが解除される。
この段階で、関係する全AMPに処理の完了を知らせます。それぞれのAMPには、ディスクが接続されています。