我们在 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 性能,例如自动增长?