4.3. 设置索引扫描限制

在大型目录中,搜索结果列表会变得非常大。具有一千个 inetorgperson 条目的目录将有一千个条目,它返回的过滤器(如 (objectclass=inetorgperson) ),而 sn 属性的索引将至少有一个条目。
从数据库加载长 ID 列表可显著降低搜索性能。配置参数 nsslapd-idlistscanlimit 会对在键被视为与整个主索引(表示搜索被视为具有不同资源限值集)之前读取的 ID 数量设置限制。
对于大型索引,实际上,将与索引匹配的搜索视为未索引搜索时更有效。搜索操作只能查找处理结果(整个目录)的一个位置,而不要搜索几乎是目录大小的索引,加上目录本身。
nsslapd-idlistscanlimit 属性的默认值为 4000,它为常见的数据库大小和访问模式提供了良好的性能。通常不需要更改此值。如果数据库索引的小于 4000 条目,但仍然小于总体目录,则增加扫描限制可提高搜索,否则达到 4000 的默认限制。
另一方面,降低限制可能会显著提高搜索速度,否则按 4000 条目限制,但不需要扫描每个条目的位置。

4.3.1. 使用命令行设置索引扫描限制

使用命令行设置索引扫描限制:
  1. 例如,要将目录服务器在搜索操作期间搜索的条目 ID 数量设置为 8000
    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend config set --idlistscanlimit=8000
  2. 重启 Directory 服务器实例:
    # dsctl instance_name restart

4.3.2. 使用 Web 控制台设置索引扫描限制

使用 Web 控制台设置索引扫描限制:
  1. 在 web 控制台中打开 Directory Server 用户界面。详情请参阅 Red Hat Directory Server Administration Guide 中的使用 Web 控制台登录到 目录服务器一节。
  2. 选择 实例。
  3. Database 选项卡上,选择 Global Database Configuration
  4. 更新 ID List Scan Limit 字段中的值。
  5. 单击 Save Configuration
  6. 单击 Actions 按钮,然后选择 Restart Instance