索引创建

以下主题说明了索引或后台索引构建失败时的操作。

索引构建失败

在索引创建过程中,Amazon DocumentDB 将使用实例上的本地存储。您可以使用 FreeLocalStorage CloudWatch 指标 (CloudWatch -> Metrics -> DocDB -> Instance Metrics) 监控此磁盘的使用情况。如果索引构建用尽所有本地磁盘并且失败,您将收到错误。将数据迁移到 Amazon DocumentDB 时,我们建议您先创建索引,然后再插入数据。有关迁移策略和创建索引的更多信息,请参阅 迁移到 Amazon DocumentDB 文档中的Amazon DocumentDB和博客文章: 使用离线方法从 MongoDB 迁移到 Amazon DocumentDB。

在现有集群上创建索引时,如果索引构建花费的时间超过预期或构建失败,我们建议您扩展实例来创建索引,创建好索引后,再缩减回来。Amazon DocumentDB 让您能够使用 AWS 管理控制台或 AWS CLI 在数分钟内快速扩展实例大小。有关更多信息,请参阅管理实例类。使用每秒实例定价时,您只需为使用 1 秒以上的资源付费。

后台索引构建延迟问题和失败

在索引构建启动前在主实例上启动的所有查询完成执行之前,Amazon DocumentDB 中的后台索引构建不会启动。如果存在长时间运行的查询,后台索引构建将阻塞,直到查询完成,因此,可能需要比预期长的时间才能完成。即使集合为空也是如此。

前台索引构建不会显示相同的阻塞行为。相反,在索引构建完成之前,前台索引构建将对集合进行独占锁定。因此,要在空集合上创建索引并避免阻止任何长时间运行的查询,我们建议您使用前台索引构建。

注意

在任何给定时间,Amazon DocumentDB只允许在一个集合中构建一个后台索引。如果后台索引构建期间在相同集合上出现 DDL(数据定义语言)操作(如 createIndex()dropIndex()),后台索引构建将失败。