Sql server 管理对SQL Server数据库的大容量写入

Sql server 管理对SQL Server数据库的大容量写入,sql-server,Sql Server,我有一个web服务,用于管理文件系统上的文件,这些文件也在Microsoft SQL Server数据库中跟踪。我们有一个.NET系统服务,它监视使用FileSystemWatcher类添加的文件。当文件添加回调来自FileSystemWatcher时,有关该文件的元数据将添加到我们的数据库中,并且工作得相当好 我现在遇到了一个可伸缩性问题。我正在快速地向文件系统中添加大量文件,这最终会用添加的文件敲打数据库,从而锁定我的web前端 我还没有研究过数据库的稳定性问题,所以我正试图提出缓解策略。我

我有一个web服务,用于管理文件系统上的文件,这些文件也在Microsoft SQL Server数据库中跟踪。我们有一个.NET系统服务,它监视使用FileSystemWatcher类添加的文件。当文件添加回调来自FileSystemWatcher时,有关该文件的元数据将添加到我们的数据库中,并且工作得相当好

我现在遇到了一个可伸缩性问题。我正在快速地向文件系统中添加大量文件,这最终会用添加的文件敲打数据库,从而锁定我的web前端


我还没有研究过数据库的稳定性问题,所以我正试图提出缓解策略。我曾考虑过缓存文件添加内容,并每隔五分钟左右将其写入数据库,但我不确定这是否实用。无论如何,这些数据都需要在某个时刻进入我们的数据库,因此,在某个时刻,它将不得不受到重击。也许我可以将每秒写入的文件db条目的数量限制在一定的范围内,但这样的话,我就有可能使该范围小于添加文件的速率。我如何才能最好地解决这个问题?

您是否考虑过使用类似的方法?通过这种方式,您可以在一个突发事件中推送成吨的条目,并将插入到数据库中的内容调平

基本上,您将消息推送到一个队列上,然后由一个为您执行插入的接收方存储过程使用该队列。您可以限制执行的接收器的最大数量,以帮助解决web界面中的响应问题


有一份很好的介绍文件。虽然是2005年,但在2005年和更新版本的SQL Server之间没有太大变化。

您有一个性能问题,应该使用类似的性能调查方法来解决。一旦您确定了实际问题,我们就可以讨论解决方案

这只是一个猜测,但是,假设通知“更新元数据”代码是一个直接插入,那么可能的问题是每个通知生成一个事务。这将导致提交刷新等待,请参阅。批提交(提交前聚合多个通知)是标准的解决方案