Skew means something is not right and in a data set, if the data is not distributed uniformly then it is referred to as Data skew. In Salesforce also when data is not uniformly assigned and we have more than 10,000 child records linked to the same parent or they are owned by a single owner, we call it Data Skew.
Data Skew Impact
Data Skew has a major effect on the performance of salesforce applications. This causes issues with record locking and sharing performance.
Types of Data Skew
Data skews are divided into below three categories that need to be addressed carefully for faster performance :
- Account Data Skew
- Ownership Data Skew
- Lookup Data Skew
Let us understand all the above data skews.
1. Account Data Skew
When we have a very large number of child records(>10,000) associated with the same account in salesforce, it is called Account Data Skew.
Account Data Skew Solution
We should always try to avoid account data skew situations which will help to avoid locking and performance issues. Here are a few of the strategies for mitigating issues related to account data skew:
- Whenever a single account has more than 10,000 child records, always try to create multiple accounts and link similar child records to their respective accounts.
- If the skewed accounts are there, then we can re-distribute the child objects to reduce the record-level hurdles.
- For skewed accounts, redistribute child objects in chunks during off-peak hours to reduce the impact of record-level locking.
- Consider a Public Read/Write sharing model to avoid sharing recalculations for skewed accounts.
2. Ownership Data Skew
When a large number of records (>10,000) are owned by a single user then it results in an Ownership Skew. This will lead to performance issues while modification or sharing recalculation.
Ownership Data Skew Solution
We should avoid a large number of records being assigned to a single user.
- Assign ownership to different users after every set of 10,000 records or data objects.
- It is best to ensure the skewed owner(Owner of a record) does not have a role.
- In cases where the skewed owner must hold a role, the role should be at the top of the hierarchy in its own branch of the role hierarchy.
- Try to avoid keeping them in any public groups that could be used as the source of sharing rules.
3. Lookup Data Skew
When a large number of records are linked to a single object record through a lookup relationship, it is called a Lookup Skew. As it is possible to create lookup fields on any object in Salesforce, Lookup Skew can cause performance issues for any object.
Lookup Data Skew Solution
- Reducing Record Save Time
- Increasing record save performance reduces the duration of locks, which reduces or eliminates lock failures, and has the added benefit of providing an enhanced end-user experience!
- Distributing the skew.
- For lookup skew, the root of the problem is that a large number of records look up to a single record. We can distribute the skew to resolve the problem.
- Using a picklist field
- When we have a low number of lookup values, it’s generally a good idea to use a picklist field rather than a lookup field to define those values. By defining those values as a picklist, we can eliminate locks associated with lookups on those records, which eliminates any kind of locking issues related to lookup skew.
To handle data skew
- Avoid Large number (>10,000)of child records in master/detail relationship
- Avoid a Large Number of records owned by one user
- Avoid Record Locking