Sql 数据库缓存

Sql 数据库缓存,sql,sql-server,sql-server-2008,caching,Sql,Sql Server,Sql Server 2008,Caching,我安装了带有microsoft sql server的windows server 2008 r2 在我的应用程序中,我目前正在为我的用户设计一个工具,即查询数据库以查看用户是否有任何通知。由于我的用户可以在短时间内多次访问该应用程序,因此我考虑在查询逻辑中添加某种缓存。但后来我想,我的ms sql server可能已经为我做到了这一点。我说得对吗?或者我需要配置一些东西来实现它吗?如果是,那么它会将缓存保持多长时间?SQL Server将为您处理缓存,是的。创建查询或存储过程时,SQL Ser

我安装了带有microsoft sql server的windows server 2008 r2


在我的应用程序中,我目前正在为我的用户设计一个工具,即查询数据库以查看用户是否有任何通知。由于我的用户可以在短时间内多次访问该应用程序,因此我考虑在查询逻辑中添加某种缓存。但后来我想,我的ms sql server可能已经为我做到了这一点。我说得对吗?或者我需要配置一些东西来实现它吗?如果是,那么它会将缓存保持多长时间?

SQL Server将为您处理缓存,是的。创建查询或存储过程时,SQL Server将缓存该执行计划并相应地重用它。发件人:

SQL Server执行计划包含以下主要组件:查询 计划执行计划的大部分是可重入的只读数据 由任意数量的用户使用的结构。这被称为 查询计划。查询计划中未存储任何用户上下文。有 内存中的查询计划副本不得超过一个或两个:一个 复制用于所有串行执行,另一个用于所有并行执行 处决。并行副本涵盖所有并行执行, 不管它们的并行程度如何

在执行上下文中,当前执行查询的每个用户都有一个包含 特定于其执行的数据,例如参数值。这 数据结构称为执行上下文。行刑 上下文数据结构被重用。如果用户执行一个查询,并且 如果未使用结构的,则使用 新用户的上下文


如果希望清除此缓存,可以执行
sp_recompile
DBCC FREEPROCHCACHE

可以安全地假设MSSQL将很好地处理缓存=) 不要费心自己在上面构建任何东西,只需确保用于查询更改的方法是有效的(例如,不要查询非索引列)


PS:本地缓存不会破坏检查数据库更改的全部目的吗?

在内部,数据库可以做各种事情,包括“缓存”,但在任何时候都非常难确保用户看到最新数据。因此,每次应用程序发出请求时,它都必须做一些工作

如果您想通过在应用程序中保留静态数据来减少工作负载,那么您必须自己实现它


.net framework的更高版本内置了缓存功能,因此您应该看看这些功能(构建自己的缓存可能会变得非常复杂)。

执行计划缓存和重用与问题完全不同。@NenadZivkovic-不太可能,OP是问数据库缓存,缓存的执行计划是缓存的一部分,将在OP执行查询时使用。