【发布时间】:2015-02-27 09:21:16
【问题描述】:
我们在 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 会立即正常化。
但是,我们不知道TempDB 中发生了什么。我们多次运行查询分析器并比较结果,但它的索引优化建议仅与其他数据库统计信息相关,没有任何效果。
你会如何缩小这个问题的范围?过去有没有其他人经历过这种行为?是否可能是新闻查询本身的问题,或者我们是否可能只需要更改一些TempDB 数据库属性以提高其 I/O 性能,例如自动增长?
【问题讨论】:
-
使用和不使用 OR 扩展的执行计划有何不同?
标签: sql-server performance tempdb