Tuesday, October 31st, 2006...1:24 am

ADFind – statystyki zapytaÅ„ do katalogu

Jump to Comments

Dzisiaj tylko szybki wpis na temat możliwości uzyskania statystyk zapytań do katalogu za pomocą ADFind, opcji przydatnej a pewnie rzadko używanej. Jakiś czas temu pisałem o tym że tworząc zapytania kierowane do katalogu Active Directory warto zadbać o to żeby były one jak najbardziej wydajne. Jednym z narzędzi, których możemy użyć do testowania naszych zapytań jest adfind.exe (ktoś spodziewał się czegoś innego po tytule :)? ).

ADFind posiada przełącznik -stats, z kilkoma dodatkowymi opcjami, z których przydatna do testów wydaje się być opcja -stats+only. Aby pokazać o co w tym wszystkim chodzi posłużmy się najbardziej popularnym przykładem zapytania, czyli wyszukaniem użytkowników w katalogu w oparciu o atrybuty objectClass i objectCategory omawianym poprzednio.

W przypadku zapytania z filtrem (objectClass=user) wywołanie adfind przeszukującego całą domene z przełącznikiem -stats+only zwraca nastepujący rezultat:

Statistics
=================================
Elapsed Time: 40 (ms)
Returned 11 entries of 3230 visited – (0.34%)

Used Filter:
(objectClass=user)

Used Indices:
DNT_index:2720:N

Analysis
———————————
Hit Rate of 0.34% is Inefficient

No dedicated indices used for search, this is inefficient.

Indices used:

Index Name : DNT_index
Record Count: 2720 (estimate)
Index Type : Normal Attribute Index

Filter Breakdown:

(objectClass=user)

Wynika z niego, że nasze zapytanie spowodowało przeszukanie 3230 obiektów, bez użycia indeksu, z czego ostatecznie zwrócone zostało tylko 11 obiektów. Daje nam to efektwyność zapytania mierzoną ilością trafionych obiektów na poziomie 0,34%.

Teraz powtórzmy to samo zapytanie z filtrem (&(objectClass=user)(objectCategory=person)):

Statistics
=================================
Elapsed Time: 10 (ms)
Returned 7 entries of 7 visited – (100.00%)

Used Filter:
( & (objectClass=user) (objectCategory=CN=Person,CN=Schema,CN=Configuration,DC=w2k,DC=pl)

Used Indices:
idx_objectCategory:7:N

Analysis
———————————
Hit Rate of 100.00% is Efficient

Indices used:

Index Name : idx_objectCategory
Record Count: 7 (estimate)
Index Type : Normal Attribute Index

Filter Breakdown:

(&
(objectClass=user)
(objectCategory=CN=Person,CN=Schema,CN=Configuration,DC=w2k,DC=pl)
)

Przeszukaliśmy 7 obiektów, z użyciem indeksu, z których to wszystkie odpowiadały naszym kryteriom, dając efektywność zapytania na poziomie 100%. Oczywiście przykład został bardzo celowo przejaskrawiony, chociaż pokazuje dlaczego należy unikać zapytań z użyciem atrybutów które nie są zindeksowane. Szybki przykład mniej oczywisty czyli jak wyszukać wszystkie kontroler w domenie. Filtr użyty w tym celu może być oparty na kilku atrybutach:

  • wartoÅ›ci userAccountControl, kontroler domeny można zidentyfikowac po wartoÅ›ci 532480,
  • czÅ‚onkostwie w grupie Domain Controlers, której identyfikator jest znany (516),
  • dodatkowo na kategorii obiektu, czyli Computer.

Jak będą wyglądały statystyki w takich przypadkach:

  • Zapytanie tylko po wartoÅ›ci userAccountControl:
    Returned 2 entries of 15 visited – (13.33%)
  • Zapytanie z użyciem userAccountControls i identyfikatora grupy:
    Returned 2 entries of 15 visited – (13.33%)
  • Zapytanie oparte tylko o identyfikator grupy:
    Returned 2 entries of 2 visited – (100.00%)

Wprowadzenie dodatkowego ograniczenia poprzez użycie kategorii obiektu nie wprowadzi tutaj znaczÄ…cej różnicy. Wnioski … pozostawiam dla czytajÄ…cych :).

Przy okazji maÅ‚e pytanie – czy tego typu wiadomoÅ›ci sÄ… użyteczne(chodzi oczywiÅ›cie o caÅ‚y post a nie o to czy statystyki AD sÄ… użyteczne 🙂 )? Może pierwszy odważny skorzysta z komentarzy, jeżeli nie komentarze to bÄ™dÄ™ wdziÄ™czny za e-mail. Być może ADFind i jego możliwoÅ›ci sÄ… powszechnie znane już (przynajmniej wÅ›ród czytelników w2k.pl).

Leave a Reply