6.4. 使用索引来提升数据库性能
根据数据库的大小,客户端应用程序执行的搜索可以是时间和资源密集型。为了帮助缓解这个问题,请使用索引来提高搜索性能。
索引是存储在目录数据库中的文件。为目录服务中的每个数据库维护单独的索引文件。每个文件根据其索引的属性命名。特定属性的索引文件可以包含多个类型的索引,因此可以为每个属性维护多种类型的索引。例如,名为
cn.db 的文件包含通用 name 属性的所有索引。
根据使用目录服务的应用程序类型,使用不同类型的索引。不同的应用可能会经常搜索特定属性,或者可能会以不同语言搜索目录,或者可能需要特定格式的数据。
6.4.1. 目录索引类型概述 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
目录服务器支持以下索引类型:
- presence index - 列出具有特定属性的条目,如
uid。 - equality index - 列出包含特定属性值的条目,如 cn=Babs Jensen。
- 大约索引 - 允许近似(或"类似于"的")搜索。例如,条目可能包含 cn=Babs L. Jensen 的属性值。大约搜索将返回针对 cn~=Babs Jensen、cn~=Babs 和 cn~=Jensen 进行搜索的值。注意大约索引要求使用 ASCII 字符以英文写入名称。
- substring index - 允许搜索条目内的子字符串。例如,搜索 cncategoriesderson 将匹配包含此字符串的通用名称(如 Bill Anderson、Norma Henderson 和 netobserv Sanderson)。
- 国际索引 - 提高了搜索在国际目录中信息的性能。通过将区域设置(internationalization OID)与要索引的属性关联,将索引配置为应用匹配的规则。
- 浏览索引或虚拟列表视图(VLV)索引 - 提高了 web 控制台中条目的显示性能。可以在目录树中的任何分支中创建 浏览索引,以提高显示性能。
6.4.2. 评估索引的成本 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
索引提高了目录数据库中的搜索性能,但成本涉及到:
- 索引会增加修改条目所需的时间。维护的索引越长,目录服务需要更新数据库所需的时间。
- 索引文件使用磁盘空间。使用更多属性进行索引,会创建更多文件。如果包含长字符串的属性有大约和子字符串的索引,则这些文件可能会快速增长。
- 索引文件使用内存。要更有效地运行,目录服务会将尽可能多的索引文件放在内存中。根据数据库缓存大小,索引文件使用池中可用的内存。大量索引文件需要更大的数据库缓存。
- 创建索引文件需要一些时间。虽然索引文件在搜索过程中节省时间,但维护不必要的索引会浪费时间。请确保仅使用目录服务维护客户端应用程序所需的文件。