【发布时间】: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 中并出现了。
【问题讨论】: