0

我们在 Windows 2012 R2 服务器(32 GB RAM)上使用 SQL Server 2008 Web Edition 来存储基于 ASP.NET 的 Web 应用程序的数据。有几个带有新闻表和不同视图的数据库,我们SqlDataReader使用不同的连接和过滤条件定期查询它们(Linq-to-SQL)。查询本身更长且特定于域,因此我跳过一个示例。

到目前为止一切正常。

现在我们必须更改这样的查询并用一个简单的OR条件扩展它。结果是读写次数TempDB急剧增加。戏剧性地意味着每分钟超过 100 MB 的 1000 次写入,这导致当前的总 tempdb 文件大小为 1.5 GB。

如果我们OR从原始查询中删除过滤器语句,TempDB文件 I/O 会立即标准化。

I/O 性能图表

但是,我们不知道TempDB. 我们多次运行查询分析器并比较结果,但它的索引优化建议仅与其他数据库统计信息相关,没有任何效果。

你会如何缩小这个问题的范围?过去有没有其他人经历过这种行为?这可能是新闻查询本身的问题,还是我们可能只需要更改一些TempDB数据库属性来提高其 I/O 性能,例如自动增长?

4

1 回答 1

1

首先分析您的执行计划并使用统计信息运行您的查询(使用分析器)。问题不在于 de tempdb,而在于您的查询。然后你会看到你在哪里选择了许多临时保存在 de tempdb 中的行。然后您可以更改查询或添加您缺少的索引。

于 2015-02-27T11:10:00.397 回答