小编alp*_*pav的帖子

如何提高 MS SQL Server 中原始查询的性能?

我有一个 ASP.NET 网站,它自己独立缓存数据,并且数据在很长一段时间内不会改变,所以它不需要用相同的查询第二次查询 SQL Server。我需要提高到该 SQL Server 的首次(原始)查询的性能。某些查询处理的数据过多,可能会导致 SQL Server 使用tempdb. 我不使用临时表变量或临时表,因此 SQL Server 决定tempdb在需要时自行使用。

我的数据库大小是 16Gb,我的服务器机器上有 32Gb 的物理 RAM。

我知道 MS SQL Server 缓存策略会尝试将数据保留在 RAM 中,以在类似查询需要再次加载相同数据时提高它们的性能。除此之外,它会尝试使用可用 RAM 而不是 tempdb 来提高性能,而不会导致磁盘访问。

我想当需要在 tempdb SQL Server 中存储某些内容的查询出现并且没有足够的可用 RAM 时,SQL Server 有两种选择:

1) 卸载一些缓存数据并使用备用 RAM 而不是 tempdb 以避免磁盘写入

2) 为将来的查询保留缓存数据并开始使用 tempdb,这会导致写入磁盘速度变慢。

我不知道 SQL Server 在这种情况下会做出什么选择,但我希望它做出选择 #1,因为我只关心首次(原始)查询的性能,因为我再也不会向 SQL Server 发送相同的查询(虽然我可能会发送类似的查询)。

这种情况下的 SQL Server 缓存策略是什么?

它如何在避免原始查询的 tempdb 和第二次查询的速度之间平衡 RAM 的使用?

是否可以将 SQL Server 配置为做出选择 #1 的方式?如果是,那么如何?

我还能如何提高所有原始 SQL 查询的性能?

由于我不知道 …

performance sql-server query sql-server-2008-r2 cache

10
推荐指数
1
解决办法
6234
查看次数