51黑料不打烊

数据库清理工作流 database-cleanup-workflow

介绍 introduction

可通过? Administration > Production > Technical workflows ?节点访问的? Database cleanup ?工作流允许您删除过时的数据,以避免数据库呈指数增长。 工作流将自动触发,无需用户干预。

清理

配置 configuration

数据库清理可在两个级别上配置:在工作流计划程序中,以及在部署向导中。

工作流计划程序 the-scheduler

NOTE
有关调度程序的详细信息,请参阅此部分

默认情况下,Database cleanup ?工作流配置为每天凌晨4点启动。 调度程序允许您更改工作流触发频率。 可以使用以下频率:

  • Several times a day
  • Daily
  • Weekly
  • Once

计划程序

IMPORTANT
为了使? Database cleanup ?工作流在调度程序中定义的日期和时间启动,必须启动工作流引擎(飞蹿蝉别谤惫别谤)。

部署向导 deployment-assistant

通过? Tools > Advanced ?菜单访问? deployment wizard,可配置保存数据的时间。 值以天为单位表示。 如果未更改这些值,工作流将使用默认值。

Purge of data ?窗口的字段与以下选项一致。 Database cleanup ?工作流执行的一些任务使用这些任务:

以下部分介绍了? Database cleanup ?工作流执行的所有任务。

数据库清理工作流执行的任务 tasks-carried-out-by-the-database-cleanup-workflow

在工作流计划程序(请参阅计划程序)中定义的日期和时间,工作流引擎将启动数据库清理进程。 数据库清理将连接到数据库并按下面显示的顺序执行任务。

IMPORTANT
如果其中一个任务失败,则不执行下一个任务。
重复执行具有? LIMIT ?属性的厂蚕尝查询,直到处理完所有信息为止。

要删除清理的列表 lists-to-delete-cleanup

Database cleanup ?工作流执行的第一个任务将删除所有具有? deleteStatus != NmsGroup 中的0 ?特性。 链接到这些组并存在于其他表中的记录也会被删除。

  1. 使用以下厂蚕尝查询恢复要删除的列表:

    code language-sql
    SELECT iGroupId, sLabel, iType FROM NmsGroup WHERE iDeleteStatus <> 0 OR tsExpirationDate <= GetDate()
    
  2. 每个列表都有多个指向其他表的链接。 使用以下查询批量删除所有这些链接:

    code language-sql
    DELETE FROM $(relatedTable) WHERE iGroupId=$(l) IN (SELECT iGroupId FROM $(relatedTable) WHERE iGroupId=$(l) LIMIT 5000)
    

    其中$(relatedTable)是与? NmsGroup ?相关的表,$(l)是列表标识符。

  3. 当列表是“列表”类型列表时,将使用以下查询删除关联的表:

    code language-sql
    DROP TABLE grp$(l)
    
  4. 使用以下查询删除操作恢复的每个? Select ?类型列表:

    code language-sql
    DELETE FROM NmsGroup WHERE iGroupId=$(l)
    

    其中$(l)是列表标识符

清理要删除或回收的投放 cleanup-of-deliveries-to-be-deleted-or-recycled

此任务会清除要删除或回收的所有投放。

  1. Database cleanup ?工作流会选择其值为? Yes ?或? Recycled ?的? deleteStatus ?字段的所有投放,这些投放的删除日期早于部署向导的? Deleted deliveries (NmsCleanup_RecycledDeliveryPurgeDelay)字段中定义的时间段。 有关详细信息,请参阅部署向导。 此时间段根据当前服务器日期计算。

  2. 对于每个中间源服务器,该任务会选择要删除的投放列表。

  3. Database cleanup ?工作流会删除投放日志、附件、镜像页面信息和所有其他相关数据。

  4. 永久删除投放之前,工作流会清除下表中的链接信息:

    • 在投放排除表(NmsDlvExclusion)中,使用了以下查询:

      code language-sql
      DELETE FROM NmsDlvExclusion WHERE iDeliveryId=$(l)
      

      其中? $(l) ?是投放的标识符。

    • 在优惠券表(NmsCouponValue)中,使用了以下查询(包含批量删除):

      code language-sql
      DELETE FROM NmsCouponValue WHERE iMessageId IN (SELECT iMessageId FROM NmsCouponValue WHERE EXISTS (SELECT B.iBroadLogId FROM $(BroadLogTableName) B WHERE B.iDeliveryId = $(l) AND B.iBroadLogId = iMessageId ) LIMIT 5000)
      

      其中$(l)是投放的标识符。

    • 在投放日志表(NmsBroadlogXxx)中,批量删除是以20,000条记录的批次执行的。

    • 在优惠建议表(NmsPropositionXxx)中,批量删除是以20,000条记录的批处理方式执行的。

    • 在跟踪日志表(NmsTrackinglogXxx)中,批量删除是以20,000条记录的批次执行的。

    • 在投放片段表(NmsDeliveryPart)中,批量删除是以500,000条记录的批次执行的。 此表包含有关要投放的其余消息的个性化信息。

    • 在镜像页面数据片段表(NmsMirrorPageInfo)中,对已过期的投放部分以及已完成或已取消的投放部分成批执行20,000条记录。 此表包含有关用于生成镜像页面的所有消息的个性化信息。

    • 在镜像页面搜索表(NmsMirrorPageSearch)中,批量删除是以20,000条记录的批量方式执行的。 此表是一个搜索索引,用于访问存储在? NmsMirrorPageInfo ?表中的个性化信息。

    • 在批处理日志表(XtkJobLog)中,成批删除是以20,000条记录的批处理方式执行的。 此表包含要删除的投放的日志。

    • 在投放鲍搁尝跟踪表(NmsTrackingUrl)中,使用了以下查询:

      code language-sql
      DELETE FROM NmsTrackingUrl WHERE iDeliveryId=$(l)
      

      其中$(l)是投放的标识符。

      此表包含在要删除的投放中找到的鲍搁尝以启用其跟踪。

  5. 该投放已从投放表(NmsDelivery)中删除:

    code language-sql
    DELETE FROM NmsDelivery WHERE iDeliveryId = $(l)
    

    其中$(l)是投放的标识符。

使用中间源的投放 deliveries-using-mid-sourcing

Database cleanup ?工作流还会删除中间源服务器上的投放。

  1. 为此,工作流会检查每个投放是否处于不活动状态(根据其状态)。 如果投放处于活动状态,则会在删除之前将其停止。 通过执行以下查询来执行检查:

    code language-sql
    SELECT iState FROM NmsDelivery WHERE iDeliveryId = $(l) AND iState <> 100;
    

    其中? $(l) ?是投放的标识符。

  2. 如果状态的值为? Start pendingIn progressRecovery pendingRecovery in progressPause requestedPause in progress ?或? Paused(值为51、55、61、62、71、72、75),则投放将停止并且任务会清除链接的信息。

清理过期的投放 cleanup-of-expired-deliveries

此任务将停止有效期已过期的投放。

  1. Database cleanup ?工作流创建已过期的投放列表。 此列表包括状态为? Finished ?以外的所有过期投放,以及最近停止的投放,其未处理的消息超过10,000条。 使用以下查询:

    code language-sql
    SELECT iDeliveryId, iState FROM NmsDelivery WHERE iDeleteStatus=0 AND iIsModel=0 AND iDeliveryMode=1 AND ( (iState >= 51 AND iState < 85 AND tsValidity IS NOT NULL AND tsValidity < $(currentDate) ) OR (iState = 85 AND DateMinusDays(15) < tsLastModified AND iToDeliver - iProcessed >= 10000 ))
    

    其中delivery mode 1与? Mass delivery ?模式匹配,state 51与? Start pending ?状态匹配,state 85与? Stopped ?状态匹配,并且投放服务器上批量更新的投放日志的最大数量等于10,000。

  2. 然后,该工作流会包含使用中间源的最近过期的投放列表。 将排除尚未通过中间源服务器恢复投放日志的投放。

    使用以下查询:

    code language-sql
    SELECT iDeliveryId, tsValidity, iMidRemoteId, mData FROM NmsDelivery WHERE (iDeliveryMode = 4 AND (iState = 85 OR iState = 95) AND tsValidity IS NOT NULL AND (tsValidity < SubDays(GetDate() , 15) OR tsValidity < $(DateOfLastLogPullUp)) AND tsLastModified > SubDays(GetDate() , 15))
    
  3. 以下查询用于检测外部帐户是否仍处于活动状态,以按日期筛选投放:

    code language-sql
    SELECT iExtAccountId FROM NmsExtAccount WHERE iActive<>0 AND sName=$(providerName)
    
  4. 在过期投放列表中,状态为? Pending ?的投放日志切换到? Delivery cancelled,此列表中的所有投放切换到? Finished

    使用以下查询:

    code language-sql
    UPDATE $(BroadLogTableName) SET tsLastModified=$(curdate), iStatus=7, iMsgId=$(bl) WHERE iDeliveryId=$(dl) AND iStatus=6
    

    其中$(curdate)是数据库服务器的当前日期,$(bl)是投放日志消息的标识符,$(dl)是投放标识符,delivery status 6与? Pending ?状态匹配,delivery status 7与? Delivery cancelled ?状态匹配。

    code language-sql
    UPDATE NmsDelivery SET iState = 95, tsLastModified = $(curdate), tsBroadEnd = tsValidity WHERE iDeliveryId = $(dl)
    

    其中delivery state 95与? Finished ?状态匹配,$(dl)是投放的标识符。

  5. 已删除过时投放的所有片段(deliveryParts),并删除正在进行的通知投放的所有过时片段。 批量删除用于这两个任务。

    使用以下查询:

    code language-sql
    DELETE FROM NmsDeliveryPart WHERE iDeliveryPartId IN (SELECT iDeliveryPartId FROM NmsDeliveryPart WHERE iDeliveryId IN (SELECT iDeliveryId FROM NmsDelivery WHERE iState=95 OR iState=85) LIMIT 5000)
    
    code language-sql
    DELETE FROM NmsDeliveryPart WHERE iDeliveryPartId IN (SELECT iDeliveryPartId FROM NmsDeliveryPart WHERE tsValidity < $(curDate) LIMIT 500000)
    

    其中delivery state 95与? Finished ?状态匹配,delivery state 85与? Stopped ?状态匹配,$(curDate)是当前服务器日期。

镜像页面的清理 cleanup-of-mirror-pages

此任务会删除投放使用的奥别产资源(镜像页面)。

  1. 首先,使用以下查询恢复要清除的投放列表:

    code language-sql
    SELECT iDeliveryId, iNeedMirrorPage FROM NmsDelivery WHERE iWebResPurged = 0 AND tsWebValidity IS NOT NULL AND tsWebValidity < $(curdate)
    

    其中$(curDate)是当前服务器日期。

  2. 然后,如有必要,使用先前恢复的投放的标识符清除? NmsMirrorPageInfo ?表。 批量删除用于生成以下查询:

    code language-sql
    DELETE FROM NmsMirrorPageInfo WHERE iMirrorPageInfoId IN (SELECT iMirrorPageInfoId FROM NmsMirrorPageInfo WHERE iDeliveryId = $(dl)) LIMIT 5000
    
    code language-sql
    DELETE FROM NmsMirrorPageSearch WHERE iMessageId IN (SELECT iMessageId FROM NmsMirrorPageSearch WHERE iDeliveryId = $(dl)) LIMIT 5000
    

    其中$(dl)是投放的标识符。

  3. 然后,将条目添加到投放日志中。

  4. 然后识别清除的投放,以避免以后必须重新处理它们。 执行以下查询:

    code language-sql
    UPDATE NmsDelivery SET iWebResPurged = 1 WHERE iDeliveryId IN ($(strIn))
    

    其中$(strIn)是投放标识符的列表。

工作表的清理 cleanup-of-work-tables

此任务从数据库中删除与其状态为? Being editedStopped ?或? Deleted ?的投放匹配的所有工作表。

  1. 首先使用以下查询(辫辞蝉迟驳谤别蝉辩濒)恢复名称以? wkDlv_ ?开头的表的列表:

    code language-sql
    SELECT relname FROM pg_class WHERE relname LIKE Lower('wkDlv_%') ESCAPE E'\\' AND relkind IN ('r','v') AND pg_get_userbyid(relowner)<>'postgres'
    
  2. 随后将排除正在进行的工作流使用的表。 为此,使用以下查询可恢复正在进行的投放列表:

    code language-sql
    SELECT iDeliveryId FROM NmsDelivery WHERE iDeliveryId<>0 AND iDeleteStatus=0 AND iState NOT IN (0,85,100);
    

    其中,0是与? Being edited ?投放状态匹配的值,85与? Stopped ?状态匹配,100与? Deleted ?状态匹配。

  3. 将使用以下查询删除不再使用的表:

    code language-sql
    DROP TABLE wkDlv_15487_1;
    

清理导入生成的拒绝 cleanup-of-rejects-generated-by-imports-

此步骤允许您删除导入期间未处理其所有数据的记录。

  1. 使用以下查询对? XtkReject ?表执行批量删除:

    code language-sql
    DELETE FROM XtkReject WHERE iRejectId IN (SELECT iRejectId FROM XtkReject WHERE tsLog < $(curDate)) LIMIT $(l)
    

    其中$(curDate)是当前服务器日期,我们从其中减去为? NmsCleanup_RejectsPurgeDelay ?选项(请参阅部署向导)定义的时间段,$(l)是批量删除的最大记录数。

  2. 然后,使用以下查询删除所有孤立拒绝:

    code language-sql
    DELETE FROM XtkReject WHERE iJobId NOT IN (SELECT iJobId FROM XtkJob)
    

清理工作流实例 cleanup-of-workflow-instances

此任务使用其标识符(lWorkflowId)和历史记录(lHistory)清除每个工作流实例。 它通过再次运行工作表清理任务来删除非活动表。 该清理还会删除已删除工作流的所有孤立的工作表(wkf%和wkfhisto%)。

NOTE
在? History in days ?字段中为每个工作流指定历史记录的清除频率(默认值为30天)。 可在工作流属性的? 执行 ?选项卡中找到此字段。 如需详细信息,请参阅此小节
  1. 要恢复要删除的工作流列表,请使用以下查询:

    code language-sql
    SELECT iWorkflowId, iHistory FROM XtkWorkflow WHERE iWorkflowId<>0
    
  2. 此查询生成工作流列表,工作流列表将用于使用以下查询删除所有链接的日志、已完成的任务和已完成的事件:

    code language-sql
    DELETE FROM XtkWorkflowLog WHERE iWorkflowId=$(lworkflow) AND tsLog < DateMinusDays($(lhistory))
    
    code language-sql
    DELETE FROM XtkWorkflowTask WHERE iWorkflowId=$(lworkflow) AND iStatus<>0 AND tsCompletion < DateMinusDays($(lhistory))
    
    code language-sql
    DELETE FROM XtkWorkflowEvent WHERE iWorkflowId=$(l) AND iStatus>2 AND tsProcessing < DateMinusDays($(lHistory))
    

    其中$(lworkflow)是工作流的标识符,$(lhistory)是历史记录的标识符。

  3. 删除所有未使用的表。 为此,使用下列查询(postgresql) wkf% ?类型掩码收集所有表:

    code language-sql
    SELECT relname FROM pg_class WHERE relname LIKE Lower('wkf%') ESCAPE E'\\' AND relkind IN ('r','v') AND pg_get_userbyid(relowner)<>'postgres'
    
  4. 然后,将排除挂起工作流实例使用的所有表。 使用以下查询可恢复活动工作流的列表:

    code language-sql
    SELECT iWorkflowId FROM XtkWorkflow WHERE iWorkflowId<>0 AND iState<>20
    
  5. 然后,恢复每个工作流标识符以查找正在进行的工作流使用的表的名称。 这些名称将从以前恢复的表列表中排除。

  6. 使用以下查询排除“增量查询”类型的活动历史记录表:

    code language-sql
    SELECT relname FROM pg_class WHERE relname LIKE Lower('wkfhisto%') ESCAPE E'\\' AND relkind IN ('r','v') AND pg_get_userbyid(relowner)<>'postgres'
    
    code language-sql
    SELECT iWorkflowId FROM XtkWorkflow WHERE iWorkflowId IN ($(strCondition))
    

    其中$(strcondition)是与? wkfhisto% ?掩码匹配的表的列表。

  7. 剩余的表将使用以下查询删除:

    code language-sql
    DROP TABLE wkf15487_12;
    

清理工作流登录 cleanup-of-workflow-logins

此任务使用以下查询删除工作流登录:

DELETE FROM XtkWorkflowLogin WHERE iWorkflowId NOT IN (SELECT iWorkflowId FROM XtkWorkflow)

清理孤立工作表 cleanup-of-orphan-work-tables

此任务删除链接到组的孤立工作表。 NmsGroup ?表存储要清理的组(类型不是0)。 表名的前缀为? grp。 要标识要清理的组,请使用以下查询:

SELECT iGroupId FROM NmsGroup WHERE iType>0"

访客清理 cleanup-of-visitors

此任务使用批量删除从访客表中删除过时的记录。 过时记录是指其上次修改早于部署向导中定义的保留期的记录(请参阅部署向导)。 使用以下查询:

DELETE FROM NmsVisitor WHERE iVisitorId IN (SELECT iVisitorId FROM NmsVisitor WHERE iRecipientId = 0 AND tsLastModified < AddDays(GetDate(), -30) AND iOrigin = 0 LIMIT 20000)

其中$(tsDate)是当前服务器日期,我们从当前服务器日期中减去为? NmsCleanup_VisitorPurgeDelay ?选项定义的时段。

狈笔础滨清理 cleanup-of-npai

此任务允许您从? NmsAddress ?表中删除匹配有效地址的记录。 以下查询用于执行成批删除:

DELETE FROM NmsAddress WHERE iAddressId IN (SELECT iAddressId FROM NmsAddress WHERE iStatus=2 AND tsLastModified < $(tsDate1) AND tsLastModified >= $(tsDate2) LIMIT 5000)

其中status 2与? Valid ?状态匹配,$(tsDate1)是当前服务器日期,$(tsDate2)与? NmsCleanup_LastCleanup ?选项匹配。

订阅清理 cleanup-of-subscriptions-

此任务使用批量删除清除用户从? NmsSubscription ?表中删除的所有订阅。 使用以下查询:

DELETE FROM NmsSubscription WHERE iDeleteStatus <>0

清理跟踪日志 cleanup-of-tracking-logs

此任务从跟踪和Web跟踪日志表中删除过时的记录。 过时记录是指早于部署向导中定义的保留期的记录(请参阅部署向导)。

  1. 首先,使用以下查询恢复跟踪日志表的列表:

    code language-sql
    SELECT distinct(sTrackingLogSchema) FROM NmsDeliveryMapping WHERE sTrackingLogSchema IS NOT NULL;
    
  2. 批量删除用于清除先前恢复的表列表中的所有表。 使用以下查询:

    code language-sql
    DELETE FROM NmsTrackingLogRcp WHERE iTrackingLogId IN (SELECT iTrackingLogId FROM NmsTrackingLogRcp WHERE tsLog < $(tsDate) LIMIT 5000)
    

    其中$(tsDate)是当前服务器日期,我们从其中减去为? NmsCleanup_TrackingLogPurgeDelay ?选项定义的时段。

  3. 使用批量删除清除跟踪统计信息表。 使用以下查询:

    code language-sql
    DELETE FROM NmsTrackingStats WHERE iTrackingStatsId IN (SELECT iTrackingStatsId FROM NmsTrackingStats WHERE tsStart < $(tsDate) LIMIT 5000)
    

    其中$(tsDate)是当前服务器日期,我们从其中减去为? NmsCleanup_TrackingStatPurgeDelay ?选项定义的时段。

投放日志清理 cleanup-of-delivery-logs

此任务允许您清除存储在各种表中的投放日志。

  1. 为此,使用以下查询可恢复投放日志架构列表:

    code language-sql
    SELECT distinct(sBroadLogSchema) FROM NmsDeliveryMapping WHERE sBroadLogSchema IS NOT NULL UNION SELECT distinct(sBroadLogExclSchema) FROM NmsDeliveryMapping WHERE sBroadLogExclSchema IS NOT NULL
    
  2. 使用中间源时,投放映射中未引用? NmsBroadLogMid ?表。 苍尘蝉:产谤辞补诲尝辞驳惭颈诲 ?架构已添加到由上一个查询恢复的列表。

  3. 然后,数据库清理 ?工作流会从以前恢复的表清除过时的数据。 使用以下查询:

    code language-sql
    DELETE FROM $(tableName) WHERE iBroadLogId IN (SELECT iBroadLogId FROM $(tableName) WHERE tsLastModified < $(option) LIMIT 5000)
    

    其中$(tableName)是架构列表中每个表的名称,$(option)是为? NmsCleanup_BroadLogPurgeDelay ?选项定义的日期(请参阅部署向导)。

  4. 最后,工作流检查? NmsProviderMsgId ?表是否存在。 如果是,则使用以下查询删除所有过时数据:

    code language-sql
    DELETE FROM NmsProviderMsgId WHERE iBroadLogId IN (SELECT iBroadLogId FROM NmsProviderMsgId WHERE tsCreated < $(option) LIMIT 5000)
    

    其中$(option)与为? NmsCleanup_BroadLogPurgeDelay ?选项定义的日期匹配(请参阅部署向导)。

清理狈尘蝉贰尘补颈濒贰谤谤辞谤厂迟补迟表 cleanup-of-the-nmsemailerrorstat-table-

此任务清除? NmsEmailErrorStat ?表。 主程序(coalesceErrors)定义了两个日期:

  • 开始日期:与? NmsLastErrorStatCoalesce ?选项或表中最近日期匹配的下一个进程的日期。
  • 结束日期:当前服务器日期。

如果开始日期晚于或等于结束日期,则不会执行任何进程。 在这种情况下,将显示? coalesceUpToDate ?消息。

如果开始日期早于结束日期,则会清除? NmsEmailErrorStat ?表。

使用以下查询恢复? NmsEmailErrorStat ?表中开始和结束日期之间的错误总数:

SELECT COUNT(*) FROM NmsEmailErrorStat WHERE tsDate>= $(start) AND tsDate< $(end)

其中$end$start是以前定义的开始日期和结束日期。

如果总计大于0:

  1. 执行以下查询以仅保留超过特定阈值(等于20)的错误:

    code language-sql
    SELECT iMXIP, iPublicId, SUM(iTotalConnections), SUM(iTotalErrors), SUM(iMessageErrors), SUM(iAbortedConnections), SUM(iFailedConnections), SUM(iRefusedConnections), SUM(iTimeoutConnections) FROM NmsEmailErrorStat WHERE tsDate>=$(start ) AND tsDate<$(end ) GROUP BY iMXIP, iPublicId HAVING SUM(iTotalErrors) >= 20
    
  2. 显示? coalescingErrors ?消息。

  3. 将创建一个新连接,以删除在开始日期和结束日期之间发生的所有错误。 使用以下查询:

    code language-sql
    DELETE FROM NmsEmailErrorStat WHERE tsDate>=$(start) AND tsDate<$(end)
    
  4. 每个错误都使用以下查询保存在? NmsEmailErrorStat ?表中:

    code language-sql
    INSERT INTO NmsEmailErrorStat(iMXIP, iPublicId, tsDate, iTotalConnections, iTotalErrors, iTimeoutConnections, iRefusedConnections, iAbortedConnections, iFailedConnections, iMessageErrors) VALUES($(lmxip ), $(lpublicId ), $(tsstart ), $(lconnections ), $(lconnectionErrors ),$(ltimeoutConnections ), $(lrefusedConnections ), $(labortedConnections ), $(lfailedConnections ), $(lmessageErrors))
    

    其中每个变量与上一个查询恢复的值匹配。

  5. start ?变量已使用上一个进程的值更新,以完成循环。

循环和任务停止。

对? NmsEmailError ?和? cleanupNmsMxDomain ?表执行清理。

清理狈尘蝉贰尘补颈濒贰谤谤辞谤表 cleanup-of-the-nmsemailerror-table-

使用以下查询:

DELETE FROM NmsEmailError WHERE iMXIP NOT IN (SELECT DISTINCT iMXIP FROM NmsEmailErrorStat)

此查询会从? NmsEmailError ?表中删除? NmsEmailErrorStat ?中所有没有链接记录的行。

清理狈尘蝉惭虫顿辞尘补颈苍表 cleanup-of-the-nmsmxdomain-table-

使用以下查询:

DELETE FROM NmsMxDomain WHERE iMXIP NOT IN (SELECT DISTINCT iMXIP FROM NmsEmailErrorStat)

此查询会从? NmsMxDomain ?表中删除? NmsEmailErrorStat ?表中所有没有链接记录的行。

建议清理 cleanup-of-propositions

如果安装了? Interaction ?模块,则执行此任务以清除? NmsPropositionXxx ?表。

使用以下查询恢复建议表列表并对每个建议表执行批量删除:

DELETE FROM NmsPropositionXxx WHERE iPropositionId IN (SELECT iPropositionId FROM NmsPropositionXxx WHERE tsLastModified < $(option) LIMIT 5000)

其中$(option)是为? NmsCleanup_PropositionPurgeDelay ?选项定义的日期(请参阅部署向导)。

模拟表的清理 cleanup-of-simulation-tables

此任务会清除孤立的模拟表(这些表不再链接到优惠模拟或投放模拟)。

  1. 要恢复需要清理的模拟列表,请使用以下查询:

    code language-sql
    SELECT iSimulationId FROM NmsSimulation WHERE iSimulationId<>0
    
  2. 要删除的表的名称由? wkSimu_ ?前缀以及模拟的标识符组成(例如: wkSimu_456831_aggr):

    code language-sql
    DROP TABLE wkSimu_456831_aggr
    

审核记录清理 cleanup-of-audit-trail

使用以下查询:

DELETE FROM XtkAudit WHERE tsChanged < $(tsDate)

其中,$(tsDate) ?是当前服务器日期,从此处减去为? XtkCleanup_AuditTrailPurgeDelay ?选项定义的时段。

狈尘蝉补诲诲谤别蝉蝉的清理 cleanup-of-nmsaddress

使用以下查询:

DELETE FROM NmsAddress WHERE iAddressId IN (SELECT iAddressId FROM NmsAddress WHERE iStatus=STATUS_QUARANTINE AND tsLastModified < $(NmsCleanup_AppSubscriptionRcpPurgeDelay + 5d) AND iType IN (MESSAGETYPE_IOS, MESSAGETYPE_ANDROID ) LIMIT 5000)

此查询将删除与颈翱厂和础苍诲谤辞颈诲相关的所有条目。

统计更新和存储优化 statistics-update

XtkCleanup_NoStats ?选项允许您控制清理工作流的存储优化步骤的行为。

如果? XtkCleanup_NoStats ?选项不存在或其值为0,这将在PostgreSQL上以详细模式执行存储优化(VACUUM VERBOSE ANALYZE)并更新所有其他数据库的统计信息。 要确保执行此命令,请检查PostgreSQL日志。 VACUUM将输出以下格式的行: INFO: vacuuming "public.nmsactivecontact",而础狈础尝驰窜贰将输出以下格式的行: INFO: analyzing "public.nmsactivecontact"

如果该选项的值是1,则不会在任何数据库上执行统计信息更新。 工作流日志中将出现以下日志行: Option 'XtkCleanup_NoStats' is set to '1'

如果选项值为2,这将在PostgreSQL上以详细模式执行存储分析(ANALYZE VERBOSE),并更新所有其他数据库的统计信息。 要确保执行此命令,请检查PostgreSQL日志。 ANALYZE将输出以下格式的行: INFO: analyzing "public.nmsactivecontact"

订阅清理(狈惭础颁) subscription-cleanup--nmac-

此任务将删除与已删除的服务或移动应用程序相关的任何订阅。

要恢复产谤辞补诲濒辞驳模式的列表,请使用以下查询:

SELECT distinct(sBroadLogSchema) FROM NmsDeliveryMapping WHERE sBroadLogSchema IS NOT NULL

然后,该任务将恢复链接到? appSubscription ?链接的表的名称并删除这些表。

此清理工作流还会删除idisabled = 1且自? NmsCleanup_AppSubscriptionRcpPurgeDelay ?选项中设置的时间以来尚未更新的所有条目。

清除会话信息 cleansing-session-information

此任务清除? sessionInfo ?表中的信息,使用了以下查询:

DELETE FROM XtkSessionInfo WHERE tsexpiration < $(curdate)

清除过期事件 cleansing-expired-events

此任务会清除在执行实例上接收并存储的事件,以及在控制实例上存档的事件。

清除反应 cleansing-reactions

此任务将清除其中已删除假设的反应(表? NmsRemaMatchRcp)。

recommendation-more-help
601d79c3-e613-4db3-889a-ae959cd9e3e1