共用方式為


擷取大型結果集

當傳回的結果集可能會包含超過 1000 個專案時,您必須使用分頁搜尋。 未分頁執行的 Active Directory 搜尋僅限於傳回前 1000 筆記錄的最大值。 使用分頁搜尋時,結果集會顯示為個別頁面,每個頁面都包含預先決定的結果項目數目。 使用這種類型的搜尋,結果專案的新頁面會傳回,直到到達結果集的結尾為止。

根據預設,回應查詢要求的伺服器會在傳回數據之前完整計算結果集。 在大型結果集中,這需要取得結果集的伺服器記憶體,並在傳回大型結果時網路頻寬。 設定頁面大小可讓伺服器在建置頁面時,以頁面傳送數據。 客戶端接著會快取此數據,並提供數據指標給應用層級程序代碼。 分頁是藉由定義伺服器在透過網路傳回數據給用戶端之前計算的數據列數目來設定。

分頁搜尋提供客戶端和伺服器的優點。 例如,用戶端在向使用者呈現結果時,可以更有回應。 這特別適用於圖形使用者介面工具,可顯示數據,而另一個線程同時從伺服器接收更多數據。

當您設定查詢時,如果您指定結果集的排序順序,則伺服器必須完整計算結果集,再將數據傳回給用戶端,這會影響查詢的回應時間。

在伺服器端,分頁搜尋可調整作業。 例如,如果一百個用戶端同時發出搜尋要求,而且平均每個用戶端都會傳回兩百個物件,如果未指定頁面大小,伺服器必須有足夠的記憶體來保存 20,000 個專案的完整結果集。 或者,如果每個用戶端指定了10個物件的頁面大小,伺服器上的記憶體需求會減少20。

注意

並非所有目錄服務都支援分頁搜尋。 Active Directory 會實作頁面大小架構。

 

許多目錄伺服器會針對用戶端未指定頁面大小時,可以傳回的物件數目上限指定 管理員 限制。 達到 管理員 限制時,ADSI 會產生 ERROR_DS_ADMIN_LIMIT_EXCEEDED Win32 錯誤。

在用戶端上,分頁搜尋可讓用戶端在仍在進行中時停止作業。 相反地,在未分頁的搜尋中,用戶端會遭到封鎖,直到數據完全傳回或發生錯誤為止。 如果結果集變大且花費的時間超過預期,這可能會影響網路效能。

ADSI 代表用戶端以透明方式處理頁面大小。 用戶端不需要計算進行中的物件數目。 ADSI 會封裝客戶端的伺服器互動。 從客戶端的觀點來看,搜尋會傳回完整的結果集。

如需搭配特定搜尋介面使用搜尋逾時選項的詳細資訊,請參閱:

應用程式的分頁搜尋對您的應用程式而言是透明的,因為 ADSI 會自動繼續擷取其他頁面的結果,直到它到達結果集的結尾或您設定的時間限制結束為止。 當您使用分頁搜尋時,大小限制不會覆寫頁面大小。 只有在擷取包含少於1000個專案的結果集時,才能使用大小限制。