2.7. 使用命令行创建索引以提高视图的性能
视图基于给定的过滤器从搜索结果衍生而来。过滤器的一部分是 nsViewFilter 中明确指定的属性;过滤器的其余部分基于条目层次结构,查找视图中包含的实际条目的 entryid 和 parentid 操作属性。
(|(parentid=search_base_id)(entryid=search_base_id))
如果没有索引搜索的属性 - entryid、parentid 或 nsViewFilter - 中的属性,则搜索会部分取消索引,Directory 服务器会搜索整个目录树以查找匹配条目。
要提高性能,请创建索引,如下所示:
-
为
entryid创建 相等索引 (eq)。parentid属性默认在系统索引中索引。 -
如果
nsViewFilter测试存在的过滤器(属性为),则为正在测试 的属性创建存在索引 (pres)。您应该只将这个索引类型用于目录条目的次要显示的属性。 -
如果
nsViewFilter测试中的过滤器相等(attribute=value),请为要测试的属性创建 相等索引 (eq)。 -
如果
nsViewFilter中的过滤器测试了一个子字符串(attribute=value*),为要测试的属性创建 子字符串索引 (sub)。 -
如果
nsViewFilter中的过滤器测试了 approximation (attribute~=value),为正在测试的属性创建大约索引 (大约)。
例如,当您使用以下视图过滤器时:
nsViewFilter: (&(objectClass=inetOrgPerson)(roomNumber=*66))
您应该使用 equality 索引索引(默认完成)索引 index,子字符串 索引为 roomNumber。
先决条件
- 您已了解您在视图过滤器中使用的属性。
流程
可选:列出后端以确定要索引的数据库:
# dsconf instance_name backend suffix list dc=example,dc=com (userroot)请注意所选的数据库名称(在括号中)。
使用所选后端数据库的
dsconfig工具创建索引配置。指定属性 name, index type, 以及可选的匹配规则来设置 collation order (OID),特别是在国际化实例时。
# dsconf instance_name backend index add --attr roomNumber --index-type sub userroot对 view 过滤器中使用的每个属性重复此步骤。
重新索引数据库以应用新的索引:
# dsconf instance_name backend index reindex userroot
验证
执行基于您在视图中使用的相同过滤器的标准目录树的搜索:
# ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -x -b dc=example,dc=com (&(objectClass=inetOrgPerson)(roomNumber=*66)) # ldapsearch -D "cn=Directory Manager" -W -H ldap://server.example.com -x -b dc=example,dc=com "(&(objectClass=inetOrgPerson)(roomNumber=*66))"查看
/var/log/dirsrv/slapd-instance_name/ access 中的访问日志。搜索的
RESULT不应在详细信息中包含note=U或Partially Unindexed Filter。