我需要使用Caché数据库分析应用程序,我正在尝试使用CacheMonitor。
我启用了查询统计信息(我想CacheMonitor在内部执行DO SetSQLStats^%apiSQL(3)
),两天后,我的服务器已经没有磁盘空间了。我担心%SYS.PTools.SQLQuery
和%SYS.PTools.SQLStats
中的数据太多了,我想释放一些空间。
是否有管理这些数据的管理工具?如何从sql statistics中删除数据?
注意:我对Caché的了解几乎没有。
答案 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的类文档中所述)。