清除运行时数据
概述
生产系统中生成和存储的数据量往往会被低估。由于要存储的数据量很大程度上取决于用例,因此 PTC 对此没有明确的建议,但我们建议为所有生产系统制定一个清除旧数据的计划,以避免性能问题。在规划数据清除时,应考虑以下事项:
记录了多少属性?
有多少事物已记录属性?
这些属性的记录频率如何?
是否应为记录存档数据?请参阅 运行时数据部分。
通常,如果每隔几分钟对数百个边缘设备上的一些属性记录一次数据,则可以将数据保留数月到一年的时间。如果对一千个不同事物上的 100 个属性每分钟记录几次数据,则可能每隔几周就需要清除一次旧数据。建议您连续地对小块数据进行查询和清除。更频繁地定期清除 (每天而不是每周) 有助于提高性能。
如果数据存储需要保留一年以上,PTC 建议使用外部数据库进行存储。
如何清除数据
尽管用于清除数据的 JavaScript 将因方案而异,但以下常规步骤将是相同的:
1. 创建新事物并将其“基本事物模板”设置为“计划程序”
2. 打开“配置”部分并设置 runAsUserschedule 属性。
有关 schedule 属性的正确格式设置的信息,请参阅 https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm
根据清除的不同,JVM 的使用率在作业期间需要增加。因此,最好在非高峰时间将大型作业分解为较小的作业。
3. 选择“订阅”,然后单击“添加”按钮。
4. “订阅信息”部分中,选择“我”并选中“已启用”
5. 单击“输入”
6. “事件”字段中,选择 ScheduledEvent
7. 为清除作业添加 JavaScript 详细信息。
* 
对于值流和流服务,如果未提供开始日期,则将从 epoch 开始清除所有值。如果未提供结束日期,则执行服务之前的所有属性都会被清除。
计划程序最佳做法
不要在事物模板级别订阅计时器或计划程序事件。请改为订阅事物。
不要在经常触发的计时器中查询大量数据。有关详细信息,请参考 PTC 社区中的文章。
尽量避免在订阅中查询并随即更新同一数据源。应改为,在每个订阅中查询一次数据表流,必要时,在计划程序作业结束时 (使用批处理更新语句) 再执行一次。
清除值流、流、文件信息库