5.7. 使用索引提高数据库性能
根据数据库的大小,客户端应用程序执行的搜索可能需要大量时间和资源。因此,为了提高搜索性能,您可以使用索引。
索引是目录数据库存储的文件。为您的目录中的每个数据库维护单独的索引文件。每个文件根据其索引的属性命名。特定属性的索引文件可以包含多个类型的索引。例如,名为 cn.db
的文件包含通用名称(cn
)属性的所有索引。
根据使用目录的应用程序类型,使用不同类型的索引。不同的应用程序可能会频繁搜索特定的属性,或者可能会以不同语言搜索目录,或者可能需要特定格式的数据。
5.7.1. 目录索引类型概述 复制链接链接已复制到粘贴板!
目录服务器支持以下索引类型:
- 存在索引
-
列出具有特定属性的条目,如
uid
。 - 相等索引
-
列出包含特定属性值的条目,如
cn=Babs Jensen
。 - 大约索引
-
允许搜索大约(或类似"sounds")搜索。例如,条目可能包含
cn=Babs L. Jensen
的属性值。大约搜索将返回针对cn~=Babs Jensen
、cn~=Babs
和cn~=Jensen
进行搜索的值。
大约索引需要使用 ASCII 字符以英语编写。
- 子字符串索引
-
允许针对条目内的子字符串进行搜索。例如,您搜索
cn swigderson
将匹配常见名称,如 Bill Anderson、Norma Henderson 和 contains this string。 - 国际索引
- 提高了在国际目录中搜索信息的性能。您可以通过将区域设置(异步 OID)与您要索引的属性关联,将索引配置为应用匹配的规则。
- 浏览索引或虚拟列表视图(VLV)索引
- 提高了 web 控制台中条目的显示性能。您可以在任何目录树分支上创建 浏览索引,以提高显示性能。
5.7.2. 评估索引成本 复制链接链接已复制到粘贴板!
在使用索引来提高搜索性能时请考虑以下点:
索引增加修改条目所需的时间。
维护的更多索引,需要更长的时间来更新数据库。
索引文件使用磁盘空间。
您可以索引的更多属性,即您创建的更多文件。另外,如果您为包含长字符串的属性创建大约和子字符串的索引,索引文件可能会快速增长。
索引文件使用内存。
为了更有效地运行,目录服务器会将尽可能多的索引文件放入内存中。根据数据库缓存大小,索引文件使用池中可用的内存。大量索引文件需要更大的数据库缓存。
创建索引文件需要一些时间。
虽然索引文件在搜索过程中节省时间,但维护不必要的索引可能会浪费时间。在使用目录时,仅维护客户端应用程序所需的文件。