資料の 英語版 に戻るSQL 最適化
SQL の最適化 (SPSS Modeler)
最終更新: 2024年11月22日
パフォーマンスを向上させるために、さまざまなデータ準備操作とマイニング操作をデータベース内に直接プッシュできます。
SPSS Modeler の最も強力な機能の 1 つは、多くのデータ準備およびマイニング操作をデータベース内で直接実行する機能です。 データベースにブッシュバックして実行可能な SQL コードを生成することにより、サンプリング、ソート、新しいフィールドの作成、およびある種のグラフ化などの多くの処理を、クライアントまたはサーバー・コンピューターではなく、データベース内で実行できます。 大規模なデータ・セットを処理している場合、これらのプッシュバック により、いくつかある手段で、劇的にパフォーマンスを改善できます。
- DBMS から Cloud Pak for Dataに転送される結果セットのサイズを減らすことによって。 大きな結果のセットが、ODBC ドライバ、ネットワーク I/O またはドライバーを介して読み込まれる場合、効率が低下する可能性があります。 この理由のため、SQL 最適化からもっとも利益を受ける操作は、行と列の選択と集計です (条件抽出ノード、サンプリング・ノード、レコード集計ノード)。これらの操作は通常、転送されるデータ・セットのサイズを減らします。 データは、将来パフォーマンスを改善するために、フロー内の重要な地点 (例えば、レコード結合ノードや条件抽出ノードの後) で、データベース内の一時テーブルへキャッシュできます。
- データベースのパフォーマンスとスケーラビリティを活用する方法。 効率は、DBMS が並列処理、より高性能なハードウェア、より洗練されたディスク ストレージの管理、およびインデックスの存在などをしばしば活用することで改善されます。
これらの利点を考慮すると、 Cloud Pak for Data は、各 SPSS Modeler フローによって生成される SQL の量を最大化して、SQL にコンパイルできない操作のみが Cloud Pak for Dataによって実行されるように設計されています。 ただし、標準 SQL (SQL-92) で説明されている制限のため、ある種の操作がサポートされないことがあります。
現在サポートされているデータベースについて詳しくは、 SPSS Modelerを参照してください。
ヒント:
- フローを実行すると、データベースにプッシュバックされるノードが強調表示され、そのノードの横に小さい SQL アイコンが表示されます。 実行が完了したフローの編集を開始すると、次にフローを実行するまで、このアイコンが表示されなくなります。
- フローを実行する 前に どのノードがプッシュ・バックするかを確認するには、 「SQL プレビュー」をクリックします。 これにより、例えば、非プッシュバック操作を可能な限りダウンストリームに移動することで、フローを実行する前にフローを変更してパフォーマンスを向上させることができます。
- フロー内の特定のノードをプッシュバックできない場合、そのノードでプッシュバックが停止するため、そのノード以降のすべてのノードについてもプッシュバックされなくなります。 これにより、フロー内でのノード順序の設定方法に影響する場合があります。
注: SQL に関する以下の情報に留意してください。
- SQL 実装には若干の違いがあるため、データベースで実行されるフローは、 Cloud Pak for Dataで実行されると、若干異なる結果を返す可能性があります。 これらの違いは、似たような理由で、データベース・ベンダーによっても異なる可能性があります。 例えば、ストリング比較およびストリング照合での大/小文字の区別に関するデータベース構成に応じて、SQL プッシュバックを使用して実行される SPSS Modeler フローは、SQL プッシュバックを使用せずに実行されるフローとは異なる結果を生成する可能性があります。 データベース構成の詳細は、データベース管理者に問い合わせてください。 Cloud Pak for Dataとの互換性を最大化するには、データベース・ストリングの比較で大/小文字を区別する必要があります。
- Cloud Pak for Data を使用して SQL を生成する場合、一部のプラットフォーム (Linuxなど) では、SQL プッシュバックを使用した結果に一貫性がない可能性があります。 これは、各プラットフォームで、浮動小数点が異なる方法で処理されるためです。