Compartilhar via


Recuperando grandes conjuntos de resultados

Quando houver a possibilidade de que o conjunto de resultados que será retornado contenha mais de 1000 itens, você deve usar uma pesquisa paginada. As pesquisas do Active Directory realizadas sem paginação são limitadas a retornar um máximo dos primeiros 1000 registros. Com uma pesquisa paginada, o conjunto de resultados é apresentado como páginas individuais, cada uma contendo um número predeterminado de entradas de resultados. Com esse tipo de pesquisa, novas páginas de entradas de resultados são retornadas até que o final do conjunto de resultados seja alcançado.

Por padrão, o servidor que responde a uma solicitação de consulta calcula completamente um conjunto de resultados antes de retornar dados. Em um grande conjunto de resultados, isso requer memória do servidor quando o conjunto de resultados é adquirido e largura de banda de rede quando o resultado grande é retornado. A definição de um tamanho de página permite que o servidor envie os dados em páginas à medida que as páginas estão sendo criadas. Em seguida, o cliente armazena esses dados em cache e fornece um cursor para o código de nível de aplicativo. A paginação é definida definindo quantas linhas o servidor calcula antes que os dados sejam retornados pela rede para o cliente.

A pesquisa paginada oferece benefícios tanto para o cliente quanto para o servidor. Por exemplo, o cliente pode ser mais ágil na apresentação dos resultados aos usuários finais. Isso é especialmente relevante para ferramentas de interface gráfica do usuário que podem exibir dados enquanto outro thread recebe simultaneamente mais dados do servidor.

Ao configurar a consulta, se você especificar uma ordem de classificação para o conjunto de resultados, o servidor deverá calcular completamente o conjunto de resultados antes de retornar os dados ao cliente, o que afeta o tempo de resposta da consulta.

No lado do servidor, a pesquisa paginada torna a operação escalável. Por exemplo, se cem clientes emitirem solicitações de pesquisa simultaneamente e, em média, cada cliente retornará duzentos objetos, se o tamanho da página não for especificado, o servidor deverá ter memória suficiente para armazenar o conjunto de resultados completo de 20.000 entradas. Como alternativa, se cada cliente especificasse um tamanho de página de dez objetos, os requisitos de memória no servidor seriam reduzidos por um fator de 20.

Observação

Nem todos os serviços de diretório oferecem suporte a pesquisas paginadas. O Active Directory implementa a arquitetura de tamanho de página.

 

Muitos servidores de diretório especificam um Limite Administrativo para o número máximo de objetos que podem retornar se um cliente não especificar o tamanho da página. Quando o limite administrativo é atingido, ADSI gera o erro Win32 ERROR_DS_ADMIN_LIMIT_EXCEEDED .

No lado do cliente, uma pesquisa paginada permite que um cliente pare a operação enquanto ela ainda está em andamento. Por outro lado, em uma pesquisa não paginada, o cliente é bloqueado até que os dados sejam completamente retornados ou ocorra um erro. Isso pode afetar o desempenho da rede se o conjunto de resultados for maior e levar mais tempo do que o esperado.

Em nome do cliente, a ADSI lida com o tamanho da página de forma transparente. O cliente não precisa contar o número de objetos em andamento. ADSI encapsula a interação do servidor para o cliente. Da perspectiva do cliente, a pesquisa retorna um conjunto de resultados completo.

Para obter mais informações sobre como usar a opção de tempo limite de pesquisa com uma interface de pesquisa específica, consulte:

Uma pesquisa paginada é transparente para seu aplicativo porque o ADSI continua automaticamente a recuperar páginas adicionais de resultados até que atinja o final do conjunto de resultados ou o final do limite de tempo definido. Quando você usa uma pesquisa paginada, o limite de tamanho não substitui o tamanho da página. O limite de tamanho só pode ser usado quando você recupera um conjunto de resultados que contém menos de 1000 entradas.