performance - 如何使用大blob影响SQL删除性能如何减轻影响?

  显示原文与译文双语对照的内容
0 0

我现在遇到了一个奇怪的问题,我对 SQL Server的理解不完全符合。 我们使用SQL作为我们的内部存储服务的文件存储,我们的数据库有大约half行。 大多数文件( 86% ) 都是 1mb 或者下面的,但即使在我们的数据库的新副本中,我们只需在一个测试中填充数据,就会出现大量的数据,这些数据存储在 SQL Server 下,当我们的正在加载的时候,。 我对 SQL Server 如何删除行的理解是,它是一个垃圾收集过程,换句话说,被标记为一个 ghost,在更改被复制到事务日志之后,该行被鬼清除进程删除。 这就向我建议,无论blob中数据的大小如何,行删除都应该接近即时。 然而,当删除这些行时,我们肯定会遇到大量的超时和令人惊讶的低性能。

在我们的测试数据集中,超过 30mb的文件导致了这个问题。 这是一个边缘案例,我们不经常遇到这些问题,尽管我们正在寻找一个解决问题的解决方案,但我们正在尝试将这些问题作为解决问题的一种方法。

我们在一个事务中执行我们的删除。 我们还对元数据进行了更新,比如文件大小统计信息,但是这些数据存在于独立于文件数据本身的单独表。 分层数据存储在包含文件信息的表中。

实际上,最终,我们在删除的过程中并没有这么做,因为在包含大量数据的行中,我们无法找到对低删除性能的引用。 我们试图确定这是否是值得探索的一条路,或者如果它必须是我们的过程中的一个过程,它会导致问题发生。 在这种情况下,有可能发生这种情况? 当许多这些删除同时发生时,数据库服务器是否会达到完全超时的目的是很常见的? 如果存在这里问题,是否可以解决这里问题?

时间: 原作者:

0 0

你正在描述一个性能问题,并通过第一个测量来处理你需要的任何性能问题。 猜测会让你 nowhere 。 因此,使用适当的调查方法,会等待和队列,然而,同样地应用。 观察,收集数据并分析。 你肯定会发现查询超时的原因( 是否阻塞了)? 它是IO它是CPU),并且基于实际发现我们可以推荐正确的修复。

要回答你的直接问题: 否,删除blob不会导致你所描述的任何症状。 这些是典型的争用 症状。

原作者:
...