《Windows Azure Platform 系列文章目录》
本次将介绍Cosmos DB的性能指标RU (Request Unit)。
总的来说,我们设置的Azure CosmosDB RU数值越高,则表示该CosmosDB的读写的性能越好。但是每个小时的单价越贵。
Azure CosmosDB的价格=设置的RU+存储的容量,按照每小时进行收费的。
Azure Cosmos DB支持多种API,比如SQL, MongoDB, Cassandra, Gremlin和Table。每种API 具有自身的数据库操作集。 这些操作包括简单的点读取和写入,以及复杂的查询等等。 每个数据库操作根据其复杂性消耗系统资源。
所有数据库操作的成本,将由Azure CosmosDB的Request Unit (RU)来表示。 读取 1-KB 项的成本为 1 个请求单位 (RU)。 以类似方式为其他所有数据库操作分配 RU 成本。 不管使用哪个 API 来与 Azure Cosmos 容器和数据库操作交互,都始终以 RU 来计量成本。 无论数据库操作是写入、读取还是查询,都始终以 RU 来计量成本。
RU抽象化了执行 Azure Cosmos DB 支持的数据库操作所需的系统资源,例如 CPU、IOPS 和内存。 下图显示了不同数据库操作消耗的 RU 数:
请注意:Azure CosmosDB的RU是可以动态调整的,我们可以根据实际的业务需求,通过API或者图形界面的方式,动态的调整Azure CosmosDB的RU。
RU可以设置在Azure Cosmos DB的,或者设置在Azure Container级别
消耗的RU需要考虑:
1.数据量
随着CosmosDB中的数据量增加,读取或者写入CosmosDB需要消耗的RU数量也会增加
2.数据索引
默认情况下,保存在CosmosDB中的数据是自动创建索引的。如果我们不为CosmosDB中的某些项创建索引,则可以减少RU的使用量
3.索引属性
假设我们对CosmosDB的所有属性采用默认索引,则随着数据量的增加,写入需要消耗的RU值也会增加
4.数据一致性
在执行读取操作的时候,Strong强一致性和bounded stalenessy消耗的 RU 数,大约比其他一致性级别要多两倍
5.查询模式
查询的复杂性会影响实际消耗的RU数
- 查询结果数。
- 谓词数。
- 谓词性质。
- 用户定义的函数数目。
- 源数据的大小。
- 结果集的大小。
- 投影数。