无需查询即可获取 RavenDB 索引统计信息
Get RavenDB index stats without a query
我正在尝试以编程方式查明索引是否过时,理想情况下它落后了多远。
我的例子是一个索引,看用户是否有权限,根据这个索引;
public class PermissionType_GrantedTo : AbstractIndexCreationTask<Person, GrantedPermissionResult>
{
...
}
到目前为止,我做的最好的是这个 -- 'take 0 results' 查询索引结果 -- 我不喜欢它;
RavenQueryStatistics stats;
var results = await session.Query<GrantedPermissionResult>()
.Statistics(out stats)
.Take(0)
.ToListAsync();
stale = stats.IsStale;
log($"{(stale ? "Stale" : "Fresh")}");
一定有办法获取索引的当前状态,对吗?
如果您只需要知道给定索引是否过时,您可以执行以下操作:
var indexName = new GrantedPermissionResult().IndexName;
var isStale = documentStore.DatabaseCommands.GetStatistics().StaleIndexes.Contains(indexName);
如果您需要有关任何索引的其他统计信息,可以在此处找到:
documentStore.DatabaseCommands.GetStatistics().Indexes
希望对您有所帮助。
//J
我正在尝试以编程方式查明索引是否过时,理想情况下它落后了多远。
我的例子是一个索引,看用户是否有权限,根据这个索引;
public class PermissionType_GrantedTo : AbstractIndexCreationTask<Person, GrantedPermissionResult>
{
...
}
到目前为止,我做的最好的是这个 -- 'take 0 results' 查询索引结果 -- 我不喜欢它;
RavenQueryStatistics stats;
var results = await session.Query<GrantedPermissionResult>()
.Statistics(out stats)
.Take(0)
.ToListAsync();
stale = stats.IsStale;
log($"{(stale ? "Stale" : "Fresh")}");
一定有办法获取索引的当前状态,对吗?
如果您只需要知道给定索引是否过时,您可以执行以下操作:
var indexName = new GrantedPermissionResult().IndexName;
var isStale = documentStore.DatabaseCommands.GetStatistics().StaleIndexes.Contains(indexName);
如果您需要有关任何索引的其他统计信息,可以在此处找到:
documentStore.DatabaseCommands.GetStatistics().Indexes
希望对您有所帮助。
//J