【问题标题】:How do I check if a query exists in the query cache?如何检查查询缓存中是否存在查询?
【发布时间】:2011-05-06 07:00:49
【问题描述】:

使用 NHibernate,我如何检查我正在执行的查询是否已经存在于查询缓存中或不以编程方式?

【问题讨论】:

  • 高级缓存的全部意义在于它们是透明的。
  • @Diego:我有一个函数 A(),当它在非缓存查询上调用时会花费很长时间,但有一种非常有效的方式来访问缓存。另一方面,我有函数 B() 从数据库加载速度更快(从而将查询保存在缓存中),但不从缓存中获取。所以我需要知道它是否已经被缓存了。
  • 如果您需要如此细粒度的控制,请手动使用底层缓存而不是查询缓存。

标签: c# .net nhibernate caching


【解决方案1】:

看看http://msdn.microsoft.com/en-us/library/ms174283.aspx。本文有一个示例,它检索特定查询的查询计划(在“A. 从计划缓存中清除查询计划”部分下):

SELECT plan_handle, st.text
FROM sys.dm_exec_cached_plans 
WHERE text LIKE N'SELECT * FROM Person.Address%';

然而,这并没有集成到 NHibernate 中,您必须知道查询的 SQL 代码。

【讨论】:

    【解决方案2】:

    一种简单的方法是启用 SQL Profiler。如果您看到查询命中数据库,则它不在缓存中。

    【讨论】:

    • 好主意,但我的意思是如何以编程方式执行此操作。
    猜你喜欢
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多