价格示例
本页包含一些最常见场景中计费单元的计算方式示例。请注意,每个查询处理的数据可能会因查询计划、数据格式和可用索引等因素而异。
我们建议您使用 Query Explain 功能,更好地了解特定查询的费用和性能。
读取操作次数
大多数读取操作都涉及执行特定文档的点读取,或根据标识符扫描一组数据。读取操作会消耗读取单元。读取单位以 4 KiB 为单位计算。请参阅以下示例。
点读取
相应点读取的计费示例:
- 对单个 1 KiB 文档进行点读。消耗:1 个读取单元
- 对单个 4 KiB 文档进行点读。消耗:1 个读取单元
- 对单个 1 MiB 文档进行点读。消耗:256 个读取单元
- 对 100 个文档(每个 1 KiB)进行点读。消耗:100 个读取单元
扫描
以下示例包含扫描文档或索引条目的场景。
扫描文档
- 扫描 100 个文档(每个 1 KiB)的查询。消耗:25 个读取单元
扫描索引
无论是扫描文档还是索引,扫描费用(以字节为单位)都是相同的。不过,索引条目通常较小。因此,它们通常可以更经济高效地扫描数据。
- 扫描 100 个索引条目(每个 1 KiB)的查询。消耗:25 个读取单元。
- 扫描 100 个索引条目(每个 128 字节)的查询。消耗:4 个读取单元。
文档或索引条目大小下限
在某些情况下,您可能无需读取文档或索引条目的内容即可满足查询要求。这包括简单的计数查询,例如统计集合中的文档总数。在这些情况下,每个扫描项的最低费用为 32 字节。
- 统计集合中的文档数量。该查询会扫描集合中的 1,000 项。消耗:8 个读取单元。
扫描和点读取的组合
许多查询会结合执行扫描和点读取,以满足操作。
- 扫描 128 个索引条目(每个 256 字节),并对 128 个文档(每个 4 KiB)执行点读取的查询。消耗:136 个读取单元,包括:
- 128 个读取单元(用于点读取)
- 8 个读取单元用于索引扫描
查询解释
查询解释可帮助您了解数据库如何执行查询。提供的详细信息可帮助您优化查询。
使用查询解释功能时,需支付以下费用:
- 用于执行查询的查询解释:会产生查询费用。
- 使用“仅显示计划”选项的查询解释。消耗:1 个读取单元(查询的最低费用)
写入操作次数
写入操作(创建、更新和删除)的费用取决于操作期间创建、修改或删除的文档和索引的大小。写入操作会消耗写入单元。写入单位以 1 KiB 为单位计算。
简单的写入操作(例如按文档 ID 更新)只会产生写入费用。需要查询才能执行的写入操作还会产生与查询相关的读取费用。
请参阅以下示例。
创建
- 创建一个不含索引且大小为 10 KiB 的新文档。消耗:10 个写入单元
- 在集合上创建一个 1 KiB 的文档,其中包含 1 个大小为 256 字节的索引条目。消耗:2 个写入单元
更新
- 按文档 ID 查找 10 KiB 的文档,并在不对集合创建索引的情况下进行更新。消耗:10 个写入单元
- 按文档 ID 查找一个 1 KiB 的文档,并更新 1 个字段,其中包含 1 个大小为 256 字节的索引条目。消耗:3 个写入单元。注意:在这种情况下,更新索引条目会消耗 2 个写入单元,一个用于删除,另一个用于重新创建索引条目。
- 按文档 ID 查找 1 KiB 的文档,然后不更新任何内容(无任何更改)。消耗:1 个写入单元(最小写入费用)
- 查询集合中的所有 1 KiB 文档(系统会扫描 1, 000 个文档),并在集合中插入一个没有索引的 256 字节新字段:1,000 个读取单元和 1, 000 个写入单元。
删除
- 删除一个 1 KiB 的文档,该文档在集合中有一个索引。消耗:2 个写入单元
- 删除一个 1 KiB 的文档,该文档没有集合索引。消耗:1 个写入单元
索引 build
索引 build 会按 build 操作期间创建或修改的索引条目收费。每当添加或移除索引定义时,都会产生这些费用。索引条目的计费方式与写入相同,每 1KiB 产生 1 个写入单元。
- 为包含 500 个文档的集合创建一个新索引,创建的索引条目每个 1 KiB。消耗 500 个写入单元。
- 删除包含 500 个文档的集合的现有索引,删除的索引条目每个 1KiB。消耗 500 个写入单元。