1

我需要使用 Caché 数据库分析应用程序,并且我正在尝试为此使用CacheMonitor

我启用了查询统计信息(我想 CacheMonitor 在DO SetSQLStats^%apiSQL(3)内部执行),两天后,我的服务器磁盘空间不足。恐怕其中的数据太多%SYS.PTools.SQLQuery%SYS.PTools.SQLStats我想腾出一些空间。

是否有任何管理工具来管理这些数据?如何从 sql 统计信息中删除数据?

注意:我对 Caché 的了解几乎为零。

4

1 回答 1

2

听起来这是一个非常普遍的问题,即如何删除全局然后回收磁盘空间。

要删除数据,您应该能够使用 SQL 删除语句来清除 %SYS.PTools.SQLStats(应该更大)和/或 %SYS.PTools.SQLQuery。

由于这是缓存,您也可以从命令行中终止全局。我没有使用这些类,但是查看 ^oddDEF 中的类定义,它似乎将数据存储在 ^%SYS.PTools.SQLQueryD、^%SYS.PTools.SQLQueryI 和 ^%SYS.PTools.SQLQueryS(其中是标准的默认存储,所以无论如何这都是可能的)。

如果您只想删除其中的一部分,则需要为它制作自己的 SQL。

一旦它们被删除,您就需要实际收缩数据库(像大多数数据库一样,它可以动态增长但不会自动放弃任何空间)。有关执行此操作的一种方法的示例,请参见此参考。基本思想在第 3 页 - 您可以创建一个新数据库,然后将所有数据复制到其中,然后在确定不需要它时删除旧数据库。不要忘记先做备份。

为了在将来更容易做到这一点,您可以使用全局映射功能将 %SYS.PTools 全局变量保存到它们自己的新数据库中。然后,当您想缩小该数据库时,您可以将其替换为新数据库,而无需复制所有数据(如 %SYS.PTools.SQLStats 的类文档中所建议的那样)。

于 2012-05-30T17:39:41.863 回答