4.3. 设置索引扫描限制
在大型目录中,搜索结果列表会变得非常大。具有一千个 inetorgperson 条目的目录将有一千个条目,它返回的过滤器(如 (objectclass=inetorgperson) ),而
sn
属性的索引将至少有一个条目。
从数据库加载长 ID 列表可显著降低搜索性能。配置参数 nsslapd-idlistscanlimit 会对在键被视为与整个主索引(表示搜索被视为具有不同资源限值集)之前读取的 ID 数量设置限制。
对于大型索引,实际上,将与索引匹配的搜索视为未索引搜索时更有效。搜索操作只能查找处理结果(整个目录)的一个位置,而不要搜索几乎是目录大小的索引,加上目录本身。
nsslapd-idlistscanlimit 属性的默认值为 4000,它为常见的数据库大小和访问模式提供了良好的性能。通常不需要更改此值。如果数据库索引的小于 4000 条目,但仍然小于总体目录,则增加扫描限制可提高搜索,否则达到 4000 的默认限制。
另一方面,降低限制可能会显著提高搜索速度,否则按 4000 条目限制,但不需要扫描每个条目的位置。
4.3.1. 使用命令行设置索引扫描限制
使用命令行设置索引扫描限制:
- 例如,要将目录服务器在搜索操作期间搜索的条目 ID 数量设置为 8000 :
# dsconf -D "cn=Directory Manager" ldap://server.example.com backend config set --idlistscanlimit=8000
- 重启 Directory 服务器实例:
# dsctl instance_name restart
4.3.2. 使用 Web 控制台设置索引扫描限制
使用 Web 控制台设置索引扫描限制:
- 在 web 控制台中打开 Directory Server 用户界面。详情请参阅 Red Hat Directory Server Administration Guide 中的使用 Web 控制台登录到 目录服务器一节。
- 选择 实例。
- 在 Global Database Configuration。选项卡上,选择
- 更新 ID List Scan Limit 字段中的值。
- 单击。
- 单击 Restart Instance。按钮,然后选择