Abrufen großer Resultsets
Wenn die Möglichkeit besteht, dass das zurückgegebene Ergebnis mehr als 1.000 Elemente enthält, müssen Sie eine seitenseitige Suche verwenden. Suchvorgänge in Active Directory, die ohne Paging ausgeführt werden, sind auf die Rückgabe von maximal den ersten 1000 Datensätzen beschränkt. Bei einer seitenseitigen Suche wird das Ergebnisset als einzelne Seiten dargestellt, die jeweils eine vordefinierte Anzahl von Ergebniseinträgen enthalten. Bei dieser Art der Suche werden neue Seiten von Ergebniseinträgen zurückgegeben, bis das Ende des Ergebnisses erreicht ist.
Standardmäßig berechnet der Server, der auf eine Abfrageanforderung antwortet, vor der Rückgabe von Daten vollständig ein Resultset. In einem großen Resultset erfordert dies Serverspeicher, wenn das Resultset erworben wird, und Netzwerkbandbreite, wenn das große Ergebnis zurückgegeben wird. Durch Festlegen einer Seitengröße kann der Server die Daten auf Seiten senden, während die Seiten erstellt werden. Der Client speichert diese Daten dann zwischen und stellt einen Cursor für den Code auf Anwendungsebene zur Anwendungsebene zur Anwendung. Paging wird festgelegt, indem definiert wird, wie viele Zeilen der Server berechnet, bevor die Daten über das Netzwerk an den Client zurückgegeben werden.
Die seitenseitige Suche bietet Sowohl für den Client als auch für den Server Vorteile. Beispielsweise kann der Client reaktionsfähiger sein, um die Ergebnisse für Endbenutzer zu präsentieren. Dies ist besonders für grafische Benutzeroberflächentools relevant, die Daten anzeigen können, während ein anderer Thread gleichzeitig mehr Daten vom Server empfängt.
Wenn Sie beim Einrichten der Abfrage eine Sortierreihenfolge für das Resultset angeben, muss der Server das Ergebnisset vollständig berechnen, bevor die Daten an den Client zurückgegeben werden. Dies wirkt sich auf die Antwortzeit für die Abfrage aus.
Auf serverseitiger Seite wird der Vorgang durch die aus paged-Suche skalierbar. Wenn z. B. 100 Clients gleichzeitig Suchanforderungen senden und im Durchschnitt jeder Client 200 Objekte zurückerhalten wird, muss der Server über genügend Arbeitsspeicher verfügen, um das vollständige Resultset von 20.000 Einträgen zu enthalten, wenn die Seitengröße nicht angegeben ist. Wenn jeder Client eine Seitengröße von zehn Objekten angegeben hat, werden die Arbeitsspeicheranforderungen auf dem Server alternativ um den Faktor 20 reduziert.
Hinweis
Nicht alle Verzeichnisdienste unterstützen Seitensuchen. Active Directory implementiert die Seitengrößenarchitektur.
Viele Verzeichnisserver geben einen administrativen Grenzwert für die maximale Anzahl von Objekten an, die sie zurückgeben können, wenn ein Client die Seitengröße nicht an gibt. Wenn das Administrative Limit erreicht ist, generiert ADSI den Fehler _ FEHLER DS ADMIN LIMIT _ _ _ EXCEEDED Win32.
Auf Clientseite ermöglicht eine seitenseitige Suche einem Client, den Vorgang zu beenden, während er noch ausgeführt wird. Im Gegensatz dazu wird bei einer nicht seitenbasierten Suche der Client blockiert, bis die Daten vollständig zurückgegeben werden oder ein Fehler auftritt. Dies kann sich auf die Netzwerkleistung auswirken, wenn sich das Ergebnis als größer erweist und mehr Zeit als erwartet benötigt.
AdsI verarbeitet die Seitengröße im Auftrag des Clients transparent. Der Client muss die Anzahl der ausgeführten Objekte nicht zählen. ADSI kapselt die Serverinteraktion für den Client. Aus Clientsicht gibt die Suche ein vollständiges Resultset zurück.
Weitere Informationen zur Verwendung der Option "Time out" für die Suche mit einer bestimmten Suchschnittstelle finden Sie unter:
Eine seitenseitige Suche ist für Ihre Anwendung transparent, da ADSI automatisch weitere Seiten mit Ergebnissen abruft, bis sie das Ende des Resultses oder das Ende des von Ihnen festgelegten Zeitlimits erreicht. Wenn Sie eine seitenseitige Suche verwenden, überschreibt das Größenlimit die Seitengröße nicht. Die Größenbeschränkung kann nur verwendet werden, wenn Sie ein Resultset abrufen, das weniger als 1.000 Einträge enthält.