我正在使用Microsoft.Azure.Cosmos SDK (用于SQL )从Azure中读取项。在这个SDK下,在读取条目(使用container.ReadItemAsync)时,我们可以在以下两个位置覆盖默认的consistencyLevel (在Azure门户中的数据库级别上设置):
这两个属性都表明它们覆盖在数据库帐户级别(从Azure门户)指定的默认一致性。
现在,如果在数据库帐户级别(在Azure门户中)的默认一致性为“强”,并且在创建CosmosClient (使用CosmosClientOptions)时将一致性级别重写为“会话”,如下所示:
var clientOption = new CosmosClientOptions
{
ConsistencyLevel = ConsistencyLevel.Session
};
var cosmosClient = new CosmosClient(connectionString, clientOption);现在,当我尝试使用container.ReadItemAsync读取一个条目时(使用我刚刚创建的CosmosClient获取的容器),并且在ItemRequestOptions下面不指定任何ConsistencyLevel,如下所示:
var itemRequestOptions = new ItemRequestOptions();
container.ReadItemAsync<string>(id, partitionKey, itemRequestOptions)那么,执行读取操作(强操作还是会话操作)的一致性级别是什么?
发布于 2021-07-28 15:25:04
一致性将是会议。
这很容易通过检查RU的读取费用来检查。对于1kb或更少使用强一致性的数据,ReadItemsAsync()将是2RU/s,因为使用强一致性的读取是针对2个副本进行的。当使用会话或较弱的一致性时,读取是在单个副本上完成的,因此只需花费1个RU/s。
https://stackoverflow.com/questions/68557805
复制相似问题