我有一个 Web 服务,用于管理文件系统上的文件,这些文件也在 Microsoft SQL Server 数据库中进行跟踪。我们有一个 .NET 系统服务来监视使用 FileSystemWatcher 类添加的文件。当文件添加回调来自 FileSystemWatcher 时,有关文件的元数据将添加到我们的数据库中,并且运行良好。
我现在遇到了一些可扩展性问题。我正在快速连续地将大量文件添加到文件系统中,这最终会通过文件添加来敲击数据库,从而导致锁定我的 Web 前端。
我还没有解决数据库可扩展性问题,所以我正在尝试提出缓解策略。我在考虑也许缓存文件添加并且每五分钟左右将它们写入数据库,但我不确定这有多实用。无论如何,这些数据都需要在某个时候进入我们的数据库,因此在某个时候它必须受到重击。也许我可以将每秒写入的文件数据库条目数限制为一定数量,但是我冒着使该数量小于添加文件的速率的风险。我怎样才能最好地解决这个问题?