配置数据删除操作
当 Notification Services 应用程序运行时,它会在事件表、通知表和分发表以及 Notification Services 组件用于协调其操作的控制表中积累数据。如果未从应用程序数据库中删除数据,则会导致数据库变得非常庞大并会降低应用程序性能。为了避免这种情况,您可以配置称为“数据清空**”的数据自动删除进程。
数据删除进程
Notification Services 数据删除进程称为 vacuumer。vacuumer 从应用程序数据库的下列表中删除过时的事件数据、通知数据以及批次标头数据:
- NSQuantum1
- NSRuleFirings1
- NSEventClassNameEventBatches
- NSEventClassNameEvents
- NSNotificationClassNameNotificationBatches
- NSNotificationClassNameNotifications
- NSDistributorWorkItems
- NSDistributionLog
只从系统中删除已被处理的事件批次,以及已被发送、已过期或已失败且未进行更多预定传递尝试的通知的数据。
vacuumer 根据每个表的最大记录数限制每次删除的记录数。这样限制了每个数据删除间隔的持续时间,并允许 vacuumer 正常运行而不会占用太多的系统资源,也不会延长应用程序处理时间。
重要提示: |
---|
数据删除将占用大量数据库系统资源。请仅在系统不忙的情况下运行数据删除进程。 |
保持期
当您配置 vacuumer 时,可以指定事件数据和通知数据的保持期。当 vacuumer 启动时,它会读取数据库服务器上的系统时钟,然后标识所有已到达保持期的数据。
当您指定保持期时,需要确定事件数据和通知数据的保持时间。由于数据删除也将删除分发日志中的数据,因此,请确保在数据未超过其保持期之前对数据执行必要的操作。
默认的保持期为七天。
计划
当您配置 vacuumer 时,还要指定 vacuumer 的运行计划。该计划可以包含多个开始时间和持续时间。
- 开始时间采用 UTC(通用协调时间)或格林尼治标准时间的形式,指定 vacuumer 应在何时运行。
- 持续时间指定 vacuumer 应运行多长时间。默认的持续时间为六个小时,或者直到下次开始时间为止。
重要提示: |
---|
没有默认的数据删除计划。如果您未指定数据删除计划,则 Notification Services 将不会从应用程序数据库中删除旧数据。 |
vacuumer 每分钟检查一次以查看是否应该运行。这样可导致指定的开始时间与实际的开始时间最多相差一分钟。
每当 vacuumer 完成一个工作单元时,它都会检查系统时钟以查看是否已超过持续时间。它还会检查数据库以查看其关联的应用程序是否已禁用。如果出现这两个事件中的任意一个,vacuumer 都将停止,并在事件日志中记录消息,然后进入休眠状态,直到到达下一个预定的数据清空间隔。
当确定数据清空计划时,最好选择应用程序和数据库服务器使用率较低的时间。如果没有使用率较低的时间,则可能需要更加频繁地运行数据删除进程以便在每个数据清空期间删除较少的数据,这可以最小化对应用程序性能的影响。
配置数据删除进程
如果您通过 XML 定义应用程序,则请在该应用程序定义文件 (ADF) 中配置数据删除。如果您通过编程方式定义应用程序,则请使用 Notification Services 管理对象 (NMO) 配置数据删除。
- Vacuum Element (ADF)
- VacuumRetentionAge 属性 (NMO)
- VacuumSchedules 属性 (NMO)