9.3. 设置索引扫描限制以便在加载长 ID 列表时提高性能
在大型目录中,搜索结果列表可能会非常大。例如,具有一百万个条目的目录将通过过滤器返回所有这些条目,如 (objectclass= 。
inetorgperson )
从数据库中加载长 ID 列表可显著降低搜索性能。ID 列表扫描限制会在考虑键与整个主索引匹配前对 ID 目录服务器读取设置限制。这意味着目录服务器将搜索视为一组不同的资源限值的未索引搜索。
对于大型索引,将任何与索引匹配的搜索视为未索引的搜索效率更高。搜索操作只需要查看整个目录(整个目录)的一个位置,而不是通过接近目录大小的索引来搜索结果,以及目录本身。
您可以在全局范围内或特定数据库设置索引扫描限制。
9.3.1. 使用命令行设置全局索引扫描限制 复制链接链接已复制到粘贴板!
默认情况下,Directory 服务器中的 ID 列表扫描限值为 4000。在大多数情况下,这个值为常见的数据库大小和访问模式提供了良好的性能,您不需要更改默认值。如果数据库索引比 4000 条目稍大,但仍然比整个目录小,则 ID 列表扫描限制可提高搜索。
另一方面,降低限制可显著加快搜索速度,否则达到 4000 条目限制,但不需要扫描每个条目。
流程
更新 ID 列表扫描限制:
dsconf <instance_name> backend config set --idlistscanlimit=8000
# dsconf <instance_name> backend config set --idlistscanlimit=8000Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令将限制设置为
8000条目。重启实例:
dsctl <instance_name> restart
# dsctl <instance_name> restartCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.3.2. 使用 Web 控制台设置全局索引扫描限制 复制链接链接已复制到粘贴板!
默认情况下,Directory 服务器中的 ID 列表扫描限值为 4000。在大多数情况下,这个值为常见的数据库大小和访问模式提供了良好的性能,您不需要更改默认值。如果数据库索引比 4000 条目稍大,但仍然比整个目录小,则 ID 列表扫描限制可提高搜索。
另一方面,降低限制可显著加快搜索速度,否则达到 4000 条目限制,但不需要扫描每个条目。
流程
-
导航到
。 - 更新 ID List Scan Limit 字段。
- 单击 。
- 点右上角的 ,然后选择 Restart Instance。
9.3.3. 使用命令行将索引扫描限制设置为数据库 复制链接链接已复制到粘贴板!
在某些情况下,定义特定索引的限制很有用,或者根本不使用 ID 列表。您可以为不同类型的搜索过滤器配置 ID 列表扫描限制。
例如,在一个大型数据库中,包含对象类 inetOrgPerson、(& ( 大型数据库,首先创建一个 ID 列表,其中包含匹配的 1,000万个 ID,所有与 pleasenetOrgPerson 匹配的 1,000万 ID。当数据库应用过滤器的第二个部分时,它会搜索与 objectClass=inetOrgPerson ) (uid=user))过滤器的uid=user 匹配的对象的结果列表。在这种情况下,定义特定索引的限制很有用,或者根本不使用 ID 列表。
此流程演示了如何配置目录服务器,以记录 AND 子句中的 swig =inetOrgPerson 条件的 ID 列表。
流程
设置
nsIndexIDListScanLimit参数:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用这些设置,目录服务器不会为
AND子句中的 swig=inetOrgPerson条件创建任何 ID 列表。在所有其他情况下,Directory 服务器应用全局 ID 列表扫描限制值。nsIndexIDListScanLimit参数使用以下语法:nsIndexIDListScanLimit: limit=NNN [type=eq[,sub,...]] [flags=AND[,XXX,...]] [values=val[,val,...]]
nsIndexIDListScanLimit: limit=NNN [type=eq[,sub,...]] [flags=AND[,XXX,...]] [values=val[,val,...]]Copy to Clipboard Copied! Toggle word wrap Toggle overflow Limit: 设置 ID 列表的最大大小。有效值为:-
-1: 无限 -
0:不要使用索引 -
1到 32 位整数的最大数量(2147483647):最大 ID 数量
-
type: 可选:设置更改扫描限制行为的标记。有效值为:-
AND:应用扫描限制仅搜索属性出现在AND子句中。 -
或:应用扫描限制仅搜索属性出现在OR子句中。
-
值: 可选:以逗号分隔的值列表,值必须与搜索过滤器匹配,才能应用限制。由于匹配是一次,如果任何值匹配,这些值将匹配。一次仅使用带有一种类型的值。值必须与索引类型以及应用索引的属性的语法对应。例如,如果您指定基于整数的属性
uidNumber,并且它被索引为eq类型,则无法使用type=eq values=abc。如果值包含需要转义的空格、逗号、NULL 或其他值,则使用 LDAP 过滤器转义语法:反斜杠(\),后跟字符的 2 个十六进制数字代码。在以下示例中,DN 值中的逗号使用
\2C转义:nsIndexIDListScanLimit: limit=0 type=eq values=uid=user\2Cou=People\2Cdc=example\2Cdc=com
nsIndexIDListScanLimit: limit=0 type=eq values=uid=user\2Cou=People\2Cdc=example\2Cdc=comCopy to Clipboard Copied! Toggle word wrap Toggle overflow