次の方法で共有


大きな結果セットの取得

返される結果セットに1000を超える項目が含まれる可能性がある場合は、ページング検索を使用する必要があります。 ページングなしで実行されるActive Directoryの検索は、最大で最初の1000レコードを返すように制限されます。 ページング検索では、結果セットは個別のページとして表示され、各ページには事前に定義された数の結果エントリが含まれます。 この種類の検索では、結果セットの末尾に到達するまで、結果エントリの新しいページが返されます。

既定では、クエリ要求に応答するサーバーは、データを返す前に結果セットを完全に計算します。 大きな結果セットでは、結果セットを取得するときにサーバーメモリが必要になり、大きな結果が返されるときにネットワーク帯域幅が必要になります。 ページサイズを設定すると、サーバーはページの作成時にデータをページ単位で送信できます。 次に、クライアントはこのデータをキャッシュし、アプリケーションレベルのコードにカーソルを提供します。 ページングを設定するには、データがネットワーク経由でクライアントに返される前にサーバーが計算する行数を定義します。

ページング検索は、クライアントとサーバーの両方に利点があります。 たとえば、クライアントがエンドユーザーに結果を表示する際の応答性が向上します。 これは、別のスレッドがサーバーからより多くのデータを同時に受信している間にデータを表示できるグラフィカルユーザーインターフェイスツールに特に関連します。

クエリを設定するときに、結果セットの並べ替え順序を指定すると、サーバーはデータをクライアントに返す前に結果セットを完全に計算する必要があり、クエリの応答時間に影響します。

サーバー側では、ページング検索によって操作がスケーラブルになります。 たとえば、100のクライアントが同時に検索要求を発行し、平均して各クライアントに200個のオブジェクトが返される場合、ページサイズが指定されていない場合、サーバーには2万エントリの完全な結果セットを保持するための十分なメモリが必要です。 また、各クライアントが10オブジェクトのページサイズを指定した場合、サーバーのメモリ要件は20倍になります。

Note

すべてのディレクトリサービスがページング検索をサポートしているわけではありません。 Active Directoryでは、ページサイズアーキテクチャが実装されています。

 

多くのディレクトリサーバーでは、クライアントがページサイズを指定していない場合に返すことができるオブジェクトの最大数に対して管理制限を指定します。 管理制限に達すると、ADSIによってERROR_DS_ADMIN_LIMIT_EXCEEDED Win32エラーが生成されます。

クライアント側では、ページングされた検索では、クライアントは進行中の操作を停止できます。 これに対し、非ページ検索では、データが完全に返されるか、エラーが発生するまで、クライアントはブロックされます。 これにより、結果セットが大きくなり、予想よりも時間がかかる場合は、ネットワークのパフォーマンスに影響する可能性があります。

クライアントに代わって、ADSIはページサイズを透過的に処理します。 クライアントは、進行中のオブジェクトの数をカウントする必要はありません。 ADSIは、クライアントのサーバーとの対話をカプセル化します。 クライアントの観点からは、検索によって完全な結果セットが返されます。

特定の検索インターフェイスで検索タイムアウトオプションを使用する方法の詳細については、次を参照してください。

結果セットの最後または設定した時間制限の最後に達するまで、ADSIが自動的に結果の追加ページを取得し続けるため、ページング検索はアプリケーションに対して透過的です。 ページング検索を使用する場合、サイズ制限はページサイズをオーバーライドしません。 サイズ制限は、1000未満のエントリを含む結果セットを取得する場合にのみ使用できます。