我有使用MongoDB WiredTiger(3.2.3)存储在C#中编写的社交帖子爬虫。
我在我的测试服务器中发布了带有400.000文档的文档集合,其中包含2核Xeon和7GB内存,Windows Server 2012.现在Mongod需要2.7 Gb的内存
文档看起来像:
public class Post
{
public Guid Id { get; set; }
public string SysId { get; set; }
public Guid SiteId { get; set; }
public DateTime Date { get; set; }
public string Type { get; set; }
public string Text { get; set; }
public string ImageUrl { get; set; }
public User User { get; set; }
public bool IsApproved { get; set; }
}
带索引
{
"SiteId" : 1,
"IsApproved" : -1,
"Date" : -1
}
在我的界面中,我使用以下代码批准了切换按钮:
....
var collection = database.GetCollection<Post>("Posts");
var postStatus = await collection.AsQueryable().Select(x => new { x.Id, x.IsApproved }).FirstOrDefaultAsync(x => x.Id == postId);
if (postStatus == null)
throw new EntityNotFoundException<Guid>(post.Id);
var filter = Builders<Post>.Filter.Eq(post => post.Id, postId);
var update = Builders<Post>.Update.Set(x => x.IsApproved, !postStatus.IsApproved);
await collection.UpdateOneAsync(filter, update);
当我多次按下“批准”按钮时,我看到CPU 100%利用率,5秒后一切正常。为什么这么CPU操作最简单?看起来很糟糕......