【问题标题】:How to Clear Cache in Sybase ASE如何清除 Sybase ASE 中的缓存
【发布时间】:2017-10-26 10:25:08
【问题描述】:

我想清除 Sybase ASE 的缓存,这样我就可以始终在两个不同的查询中测试最坏的情况。

我在研究中发现使用以下命令清除缓存,并使用 sp_helpcache 检查缓存的对象:

sp_unbindcache <dbname>, <table>
sp_unbindcache_all <cache name>

我是如何测试它的?

我在运行 sp_unbindcache 之前和之后对表运行了 SELECT Count,第二个测试是在 sp_unbindcache_all 之前和之后运行查询

发生了什么?

我第一次运行查询时有物理 I/O,随后的尝试没有,只有逻辑 I/O。 (尽管运行了 unbindcache 命令,缓存仍保留)

奇怪的东西

当我运行 sp_helpcache 时,它​​没有在缓存绑定信息 (CBI) 的对象列表中显示我的表。运行 sp_unbindcache_all 后,sp_helpcache 在 CBI 上没有显示任何行。然后我重新运行查询,并且 sp_helpcache 仍然 CBI 为空。 这很奇怪,因为这可能意味着当我运行查询时,我的表缓存在其他地方。

问题

所以我想知道当我运行查询时如何找到我的表被缓存的位置,然后如何从那里清除它?

其他信息

数据库:SYBASE ASE 15.7

sp_helpcache 只显示“默认数据缓存”

缓存绑定信息 (CBI) - 是 sp_helpcache 输出的一部分

更新:

我做了一个新的测试,我将表绑定到“默认数据缓存”,看看它是否会出现在 CBI 中并出现了。

【问题讨论】:

    标签: database caching sap-ase


    【解决方案1】:

    Sp-helpcache 仅显示绑定,而不显示缓存中的内容。为此,您可以使用一些 MDA 表。 要清除缓存,绑定和取消绑定表(或数据库)将完成这项工作。当然,重启 ASE 也可以。

    【讨论】:

    • 感谢 RobV!我还没有权限检查缓存的 MDA,但我会尽可能尝试!开发时,我不可能重新启动。一点都不实用。欢呼
    • 在这种情况下,我认为你别无选择。
    【解决方案2】:
    • 要清除“默认数据缓存”中的缓存,您应该使用 dbcc 缓存数据删除
    • 对于用户定义的缓存,您应该使用 sp_unbindcache , 或 sp_unbindcache_all

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-24
      • 2012-01-31
      相关资源
      最近更新 更多