管理%SYS.PTools.SQLStats数据

时间:2012-05-30 11:24:50

标签: profiling intersystems-cache

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

我启用了查询统计信息(我想CacheMonitor在内部执行DO SetSQLStats^%apiSQL(3)),两天后,我的服务器已经没有磁盘空间了。我担心%SYS.PTools.SQLQuery%SYS.PTools.SQLStats中的数据太多了,我想释放一些空间。

是否有管理这些数据的管理工具?如何从sql statistics中删除数据?

注意:我对Caché的了解几乎没有。

1 个答案:

答案 0 :(得分:2)

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

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

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

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

删除它们后,您需要实际缩小数据库(与大多数数据库一样,它可以动态增长但不会自动放弃任何空间)。有关一种方法的示例,请参阅this reference。基本思路在第3页 - 您可以创建一个新数据库,然后将所有数据复制到其中,然后在您确定不需要时删除旧数据库。不要忘记先备份。

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