第 3 章 设置索引扫描限制以便在载入长 ID 列表时提高性能

在大型目录中,搜索结果列表可能非常大。例如,一个带有 inetorgperson 属性的条目的目录将以过滤器(如 (objectclass=inetorgperson) )返回搜索中的所有条目。

从数据库加载长 ID 列表会显著降低搜索性能。ID 列表扫描限制设置在键被视为与整个主索引匹配前的 ID Directory Server 读取次数的限制。这意味着目录服务器将搜索视为非索引搜索,并设置不同的资源限值。

对于大型索引,实际上,处理与索引搜索匹配的任何搜索效率更高。搜索操作只需要查看整个目录,以处理结果,而不是搜索几乎是目录大小的索引,以及目录本身。

您可以在全局范围内或特定数据库设置索引扫描限制。

3.1. 使用命令行设置全局索引扫描限制

默认情况下,Directory 服务器中的 ID 列表扫描限值为 4000。在大多数情况下,这个值可以为常见的数据库大小和访问模式提供良好的性能,您不需要更改默认值。如果数据库索引比 4000 条目稍大,但仍然比整个目录小得多,增加 ID 列表扫描限制可提高搜索。

另一方面,降低限制可能会显著加快搜索速度,否则点击 4000 条目限制,但不需要扫描每个条目的位置。

流程

  1. 更新 ID 列表扫描限制:

    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend config set --idlistscanlimit=8000

    这个命令将限制设置为 8000 条目。

  2. 重启实例:

    # dsctl instance_name restart