代码之家  ›  专栏  ›  技术社区  ›  Ahmed

是否禁用SQL 2008缓存?

  •  4
  • Ahmed  · 技术社区  · 17 年前

    我的应用程序使用不同的结果进行不同的查询,因此在我的例子中,缓存是有害的。

    这意味着没有常见的数据可以让SQL直接从内存中获取结果,而不是进行硬盘访问。

    3 回复  |  直到 17 年前
        1
  •  2
  •   Robin Day    17 年前

    从您的评论中,听起来您不希望SQL在太多的内存中使用,因为您认为它是无意义的,因为您运行的任何查询实际上都是随机的。

    首先,这个内存可能被用来存储索引和查询计划,而不是您想要返回的实际数据,因此您可能会发现这个缓存比您想象的要有用得多。

    其次,使用这种内存量的SQL不太可能导致真正随机的未公开查询性能下降。如果SQL Server需要转到磁盘以获取任何信息,那么它使用的内存量几乎不相关。

    但是,可以减少SQL Server使用的内存量。(我不知道该选项在SQL 2008中的位置,但我认为它相当类似)在ManagementStudio中,右键单击服务器并执行属性。在那里你会有一页记忆。在这里,您可以选择SQL将使用的最小值和最大值。这将有效地限制SQL根据您的值所做的任何缓存,而不是物理服务器的限制。

    我真的不认为你会看到任何性能的提高。根据我的经验,最好还是让SQL做自己的事情。

        2
  •  1
  •   gbn    17 年前

    您的问题是错误的:缓存意味着数据在内存中,并且避免了磁盘访问。

    在任何情况下,SQL Server缓存都是无害的。对于学究来说,总是有例外的,但是你必须在代码和配置出现之前就把它搞砸了。

        3
  •  0
  •   Mitch Wheat    17 年前

    关闭(或试图关闭)SQL Server缓存正在完全错误地考虑该问题。如果数据缓存在数据层层中,您应该在那里刷新它。SQL Server永远不会提供过时的数据。