Large Data and Transaction Volumes: What are the impacts of large data volumes?
- Higher chance of hitting governor limits
- Reports slow or timing out
- Increased likelihood of forced SOQL query termination by the System
- Slow data management operations
- Admin sharing locks and end-user record locking
- List views slow to display
- API Integrations timing out
- Slow SOSL search times
- Longer full sandbox refresh times
- Not finding newly added or modified records. For data to be searched, it must first be indexed. Until the records are indexed, they do not show up in searches. For large numbers of new or modified records, this can take a long time.
- Slow VisualForce page performance
Large Data and Transaction Volumes: What strategies can be implemented when Reports/Dashboards/Queries are Slow/Timing Out?
1) Use selective filters: Structure reports using filters that narrow the data to be queried
2) Select report columns carefully: By reducing the columns selected, the number of joins is reduced and report generation is faster
3) Try to avoid complex formula fields on objects with more than 1 million records (can you put this logic in filters?)
4) Use the scheduling email reports or dashboard feature for long running reports
5) Empty soft-deleted data in recycle bin
6) Have an effective data archival strategy
7) System/Custom Indexing
8) Skinny tables
9) Async reporting
What is System/Custom Indexing?
External ID fields are indexed by default. In addition, creating custom indexes (done by Salesforce Support) can be used
to improve performance on report queries against standard or custom Salesforce fields. Note that custom indexes cannot be created on multi-select picklists, currency fields in a multicurrency
organization, long text fields, or binary fields (fields of type blob, file, or encrypted text.).
What are Skinny Tables?
Subset of fields from standard or custom Salesforce objects. Since the skinny table has narrower rows and less data to scan, it allows you to return more rows per database fetch, increasing throughput when reading from a large object. Skinny tables are an option after optimizing through coding best practices and custom indexes, and you find that your application is still performing poorly
What is Async Reporting?
If a report is timing out and all other workarounds have been exhausted, asynchronous reporting is an option. Asynchronous reporting allows a user with the “Modify All Data” permission to have a report execut in the background. The user can navigate to the ‘Export Details’ button which has two options: ‘Export Details Now’ or ‘Run Background Export…’
When ‘Run Background Export…’ is selected, the user can select a CSV or XLS file format and have the option to Save revisions (overwrites original report), or Save revisions to a copy (creates new report). Once the selection is made, the report execution will last for 30 minutes instead of the standard 10-minute timeout threshold. The user will then be emailed when the report is complete with a link where they can go into Salesforce and download the file. File size will be confined to the limits of XLS or CSV. Users cannot see the results of an asynchronously run report in the normal report view they can only download the report result
Why empty Soft-Deleted data in the recycle bin?
Data in the recycle bin remains physically in the objects tables until it is physically
deleted, and should not accumulate to very large volumes to avoid impacting report
generation performance. Keep soft deleted data volume to < 10% of total data - per object