Expand my Community achievements bar.

Tuesday Tech Bytes – Adobe Campaign Classic – Week 02 – Best Practices

Avatar

Community Advisor

7/15/24

Best practices for Adobe campaign classic

 

Performance and Data retention

Data Retention and Cleanup

Adobe Campaign is not a data warehouse or reporting tool. To maintain good performance, manage database growth by following these best practices:

  • Purge Configuration: Use the deployment wizard to set how long technical data is stored. Purging is managed by the Database Cleanup workflow.

               Parvesh_Parmar_0-1721072481313.png

 

  • Default Retention: Delivery and tracking logs are retained for 180 days by default. A cleanup process removes logs older than this period.
  • Custom Retention Period: If you need to retain logs longer, evaluate based on database size and message volume. Aim to keep fewer than 1 billion records to avoid reaching the 2.14 billion ID limit. This may mean setting a retention period shorter than 180 days for some customers.
  • Custom Table Cleanup: Custom tables are not included in the standard cleanup process. Implement a purge process for these tables to prevent performance issues.
  • Data Minimization: Export data to an external warehouse or generate aggregated values. For example, retain only recent purchase data instead of a full transaction history.

Indexing

Indexes are crucial for performance. Adobe Campaign automatically creates indexes on primary key and foreign key fields but you can define additional ones:

           

Parvesh_Parmar_1-1721072773002.png

 

  • Performance Impact: Indexes improve read performance but can slow down write operations. Limit the number and size of indexes.
  • Usage: Add indexes based on access patterns and test their impact. Remove unnecessary indexes.
  • Efficiency: An index is effective if your queries return less than 10% of records. Avoid removing native indexes from out-of-the-box tables

 Choice of Data Types

Follow these practices to ensure good performance and architecture:

 
Parvesh_Parmar_2-1721072922651.png

 

  • Field Types: Use numeric fields for large tables as much as possible and link to reference tables for value lists.
  • Calculated Fields: Use the expr attribute for calculated fields, but avoid it for complex calculations to prevent query performance issues.
  • String Length: Define a maximum length for string fields. Adobe's default is 255, but shorter fields are recommended if the expected length is known.

Query performance

To maintain optimal performance, consider these recommendations:

  • Efficient Queries: Avoid using "CONTAINS" in queries. Use specific filter operators like "EQUAL TO."
  • Indexed Joins: Ensure joins are on indexed fields in workflows.
  • Off-Hours Operations: Schedule imports and exports outside business hours and adhere to a schedule for daily activities.
  • Process Coordination: Avoid running daily campaigns during import processes or other critical operations.
  • Reference Tables: Use reference tables for key/value pairs instead of duplicating fields. Numeric keys are preferable.
  • Simplify Data Design: Minimize one-to-many relationships to simplify query construction for users and maintain usability.

Workflow

 

  • Avoid Use of logInfo() in production for frequently running workflows : The JavaScript method logInfo() is useful for debugging workflows. However, use it sparingly, especially for frequently run activities, as it can overload logs and increase the log table size.
  • Avoid to enable the "Keep Interim Result" in production: Available in the General tab of workflow properties, this option retains temporary tables between executions. Use it for development and testing only, never in production, as it can significantly increase database size and slow down backups. Only the last execution's working tables are kept, with previous ones purged daily.

     

    Parvesh_Parmar_1-1721074349711.png

     

  • Avoid to enable the "Log SQL Queries" in production: In the Execution tab of workflow properties, this option logs all SQL queries generated by activities. Use it temporarily during development and deactivate it in production. Purge logs when no longer needed, as workflow history is not automatically purged.

         Parvesh_Parmar_4-1721074473178.png

 

  • Avoid Enabling "Execute in the engine" in production: Never enable the "Execute in the engine" option in workflow properties. This makes the workflow take priority, stopping all other workflows until it finishes.
    Parvesh_Parmar_5-1721074527587.png

 

 Workflow Monitoring

  • Scheduled Workflows: Monitor all scheduled workflows running in production to get alerts for any errors.
  • Define Supervisors: Select a Supervisor group in workflow properties. Ensure at least one operator with an email is part of this group to receive error notifications.
  • Regular Checks: Regularly check the Monitoring tab for active workflow statuses. Use the Workflow HeatMap to monitor instance load and plan workflows. Refer to Managing Errors and Instance Supervision for more details.

 Execution Frequency

  • Minimum Interval: Workflows should not be executed more frequently than once every 15 minutes to maintain optimal performance.
1 Comment