openLDAP bdb_equality_candidates: (memberOf) не проиндексировано

Выполните это:

rm -rf ./-ksh.l.15092015.log
1
18.08.2018, 20:12
2 ответа

Я исправил это предупреждение, переиндексировав:

systemctl stop slapd
rm /var/lib/ldap/alock
slapindex

chown -R ldap:ldap /var/lib/ldap/
systemctl start slapd
-2
28.01.2020, 00:33

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

Имеет ли смысл индексировать атрибут или нет, можно определить, только просмотрев фильтр, вызвавший это предупреждение.

Также можно значительно снизить производительность поиска при добавлении индексов для атрибутов с большими наборами результатов для отдельного значения.

Типичный пример шаблона анти--индексации:

Предположим, что (uid=foobar)всегда возвращает один результат поиска.

Очевидно, вы индексируете атрибут uid:

index uid eq

Теперь довольно часто используются более сложные фильтры, например. для поиска только "активных" пользователей:

(&(uid=foobar)(organizationalStatus=active))

Если у вас много пользователей, соответствующих (organizationalStatus=active), производительность поиска будет значительно хуже, если вы просто индексируете из-за этого неиндексированного предупреждения!

Причина в том, что для каждого индексированного атрибута генерируется набор кандидатов для поиска, и на втором этапе наборы кандидатов для поиска фильтруются с неиндексированными утверждениями. Таким образом, в приведенном выше примере index uid eqприведет к набору кандидатов для поиска с кардинальностью, равной единице, а index uid,organizationalStatus eqприведет к созданию двух наборов кандидатов для поиска, uid по-прежнему с кардинальностью один, но OrganizationalStatus с мощностью все .

=> Не добавляйте индекс только для того, чтобы избавиться от предупреждения без анализа используемых поисковых фильтров и возможных размеров наборов кандидатов для поиска!

3
28.01.2020, 00:33

Теги

Похожие вопросы