Получение больших наборов результатов

Если есть вероятность того, что результирующий набор, который будет возвращен, будет содержать более 1000 элементов, необходимо использовать поиск по страницам. Поиски Active Directory, выполненные без разбиения по страницам, ограничены возвратом не более 1000 записей. При поиске по страницам результирующий набор представлен как отдельные страницы, каждый из которых содержит предопределенное количество записей результатов. При таком типе поиска возвращаются новые страницы с результатами, пока не будет достигнут конец набора результатов.

По умолчанию сервер, который отвечает на запрос, полностью формирует результирующий набор перед возвратом данных. При большом результирующем наборе требуется память сервера для его получения и пропускная способность сети при возврате этого большого результата. Установка размера страницы позволяет серверу отправлять данные на страницах по мере создания страниц. Затем клиент кэширует эти данные и предоставляет курсор к коду на уровне приложения. Разбиение по страницам устанавливается путем указания количества строк, вычисляемых сервером, прежде чем данные возвращаются клиенту через сеть.

Поиск по страницам предоставляет преимущества как клиенту, так и серверу. Например, клиент может быть более адаптивным при представлении результатов конечным пользователям. Это особенно важно для графических инструментов пользовательского интерфейса, которые могут отображать данные, а другой поток одновременно получает больше данных от сервера.

При настройке запроса, если вы указываете порядок сортировки для результирующего набора, сервер должен полностью вычислить результирующий набор, прежде чем возвращать данные клиенту, что влияет на время отклика запроса.

На стороне сервера поиск страниц делает операцию масштабируемой. Например, если один сотня клиентов одновременно выдает поисковые запросы и, в среднем, каждый клиент возвращает дваста объектов, если размер страницы не указан, сервер должен иметь достаточно памяти для хранения полного результированного набора из 20 000 записей. Кроме того, если каждый клиент указал размер страницы десяти объектов, требования к памяти на сервере будут сокращены на 20.

Заметка

Не все службы каталогов поддерживают поиск по страницам. Active Directory реализует архитектуру размера страницы.

 

Многие серверы каталогов указывают ограничение администрирования для максимального количества объектов, которые они могут возвращать, если клиент не указывает размер страницы. По достижении ограничения администрирования ADSI создает ошибку ERROR_DS_ADMIN_LIMIT_EXCEEDED Win32.

На стороне клиента поиск по страницам позволяет клиенту остановить операцию во время выполнения. В отличие от этого, в нестраничном поиске клиент блокируется до тех пор, пока данные не будут полностью возвращены, или возникает ошибка. Это может повлиять на производительность сети, если результирующий набор оказывается большим и занимает больше времени, чем ожидалось.

От имени клиента ADSI прозрачно обрабатывает размер страницы. Клиенту не нужно подсчитывать количество объектов, выполняемых в процессе. ADSI инкапсулирует взаимодействие с сервером для клиента. С точки зрения клиента поиск возвращает полный результирующий набор.

Для получения дополнительной информации о параметре времени ожидания поиска для определенного интерфейса поиска см. следующую статью:

Поиск по страницам является прозрачным для приложения, так как ADSI автоматически продолжает получать дополнительные страницы результатов, пока не достигнет конца результирующих наборов или окончания заданного ограничения времени. При использовании поиска по страницам ограничение размера не переопределяет размер страницы. Ограничение размера можно использовать только при получении результирующего набора, содержащего менее 1000 записей.