Free sample lesson from the Platform Data Architect Cert Lab. The full course has 29 lessons and 4 full practice exams.
Get the Cert Lab, $9.99DM7: Data skew: ownership, parent-child and lookup skew
You’ll be able to: recognize the three kinds of data skew, explain why each hurts, and recommend a design or load pattern that avoids it.
The 10,000 line
Data skew happens when more than 10,000 child records are associated with the same parent record, or when a single user owns more than 10,000 records of an object. Skew causes record-lock failures, long sharing recalculations and slow single-record operations.
Three kinds of skew
| Kind | What it looks like | Why it hurts | What to do |
|---|---|---|---|
| Ownership skew | One user, queue or role owns more than 10,000 records | Moving the owner in the role hierarchy or in and out of a sharing-rule group forces a huge sharing recalculation | Spread ownership. If you can’t, leave the owner without a role or put them in a separate top-level role they never leave and out of public groups used by sharing rules |
| Parent-child (account) skew | 300,000 contacts under one dummy account | Implicit sharing: when a user loses access to a child, Salesforce scans the other 299,999 contacts. Updates also lock the parent | Spread children across many parents and keep each under 10,000 |
| Lookup skew | A huge number of records look up to one record | Each insert or update locks the lookup target record | Spread references, reduce concurrency or use another design |
Exam trap
Parking all unassigned leads on a dummy user or all unallocated contacts under one dummy account looks tidy and creates both ownership skew and parent-child skew.
Record-level locking
When you update child records in a master-detail relationship, the system locks the parent and the child records. Two situations are risky: updates to parents and their children in separate threads at once, and updates to children of the same parent in separate threads at once. If locking errors are occasional, retry logic may be enough. If they are frequent, sequence batches so the same records aren’t updated in multiple threads at the same time, and sequence parent and child operations by ParentID.
Predict, then reveal
A nightly integration loads 2 million contacts in parallel threads and fails with lock errors on a few accounts. What are the two fixes in order?
Show the answer
First sort the load by parent account so each thread touches different parents. Then add retry logic for rare leftovers.
Try it
- Run a report that counts child records per parent account and flag any above 10,000.
- Check which users own more than 10,000 records of any object.
- Redesign a dummy-account pattern as a pool of parents that each stay below 10,000.
Practice questions
Ten exam-style questions on this lesson. Answer each one before you open it.
Question 1. According to the Large Data Volumes module, when does data skew happen?
- A. When a report returns more than 10,000 rows
- B. When more than 10,000 child records are associated with the same parent record
- C. When a single role contains more than 10,000 sharing rules, regardless of how many records each rule covers
- D. When an org has more than 10,000 users
Show the answer and explanation
Answer: B. Skew is more than 10,000 children under one parent.
The other options measure different things.
Question 2. What is ownership data skew?
- A. A single user owns more than 10,000 records of an object
- B. An account has more than 10,000 contacts
- C. An org has more than 10,000 inactive users who still own at least one record of any object
- D. A manager has more than 10,000 reports
Show the answer and explanation
Answer: A. Ownership skew is one user owning more than 10,000 records of an object.
Account contacts describe parent-child skew.
Question 3. Leadership assigns every unassigned lead to one integration user. What does the architect recommend?
- A. Keep the ownership and rebuild the sharing rules each quarter so the recalculation runs outside business hours
- B. Give the user a deeper role
- C. Add the user to more public groups
- D. Distribute ownership across more users
Show the answer and explanation
Answer: D. Distributing ownership across more users reduces the chance of long-running updates.
More groups and deeper roles add recalculation work.
Question 4. Ownership can’t be spread for a legitimate reason. What is the smallest change that limits the impact?
- A. Add them to every public group
- B. Move them to the middle of the hierarchy
- C. Assign them a role that is shared with all regional managers so changes propagate to everyone equally
- D. Don’t assign the users to a role
Show the answer and explanation
Answer: D. Not assigning the users to a role minimizes the performance impact.
The role is what ties their records into sharing recalculations.
Question 5. If skewed owners must have a role, what does Salesforce recommend? (Choose 2.)
- A. Place them in a separate role at the top of the hierarchy
- B. Move them between roles every quarter to balance the load
- C. Keep them out of public groups that can be used as the source for sharing rules
- D. Place them in the role of the largest sales team so their data stays near its users
Show the answer and explanation
Answer: A, C. Use a separate top-level role they don’t leave, and keep them out of sharing-rule source groups.
Moving roles triggers recalculation.
Question 6. Why does losing access to one of 300,000 contacts under one account cost so much?
- A. Salesforce deletes all 300,000 contacts and then restores them from the recycle bin for each other user
- B. Salesforce must scan the other 299,999 contacts to see whether the user still has access to the account
- C. Salesforce rebuilds the account hierarchy for every user in the same role as the user who lost access, and then recalculates every sharing rule on the Contact object
- D. The account’s owner changes automatically to the user who lost access, so every contact is reassigned
Show the answer and explanation
Answer: B. Implicit parent sharing requires scanning all other children before removing the user’s parent access.
This is parent-child data skew.
Question 7. What does the system lock when you update a child in a master-detail relationship?
- A. Only the child
- B. Every child of the same parent, even those that aren’t being updated in the transaction
- C. The parent and the child records
- D. Only the parent’s owner
Show the answer and explanation
Answer: C. The system locks the parent and the child to prevent inconsistencies.
This is why same-parent parallel updates collide.
Question 8. What happens to lookup targets when you insert or update a record that has lookup fields?
- A. Salesforce locks the target records selected for each lookup field
- B. Nothing, lookups are read-only references
- C. Salesforce locks the lookup target only when the lookup field is required or the relationship is a master-detail
- D. The lookup targets are copied into the child
Show the answer and explanation
Answer: A. Every insert or update locks the target records of each lookup field.
Lookup skew makes these locks collide.
Question 9. Frequent lock errors occur in parallel integrations that update many contacts under the same few accounts. What should the architect do first?
- A. Move the contacts to a different record type for the duration of the load, then move them back
- B. Add more threads
- C. Sequence batches so the same records aren’t updated in multiple threads at once
- D. Lower the validation rule count
Show the answer and explanation
Answer: C. Sequence batches so different threads work on unique sets of records.
More threads increase collisions.
Question 10. Only a few lock errors appear per run. What is a reasonable fix?
- A. Disable all triggers on the parent object permanently so no lock is ever requested
- B. Delete the parent records
- C. Add retry logic to the integration
- D. Switch the object to a big object
Show the answer and explanation
Answer: C. Locks are brief, so occasional errors can be handled with retries.
Larger design changes are for frequent errors.
Before you move on
1. What number marks data skew?
Show answer
More than 10,000 children per parent or records per owner.
2. What is the best fix for ownership skew?
Show answer
Spread ownership across more users; if not possible, keep the owner without a role.
Key takeaways
- Skew starts around 10,000 records per owner, parent or lookup target.
- Ownership skew triggers long sharing recalculation, parent-child skew costs implicit sharing and locks.
- Spread ownership and children across many owners and parents.
- Sequence loads by parent and use retry logic for rare lock errors.
- Dummy owners and dummy accounts are the classic traps.
Sources
- Trailhead: Large Data Volumes: Design Your Data Model
- Salesforce Developers: Designing Record Access for Enterprise Scale: Ownership Data Skew
- Salesforce Developers: Designing Record Access for Enterprise Scale: Parent-Child Data Skew
- Salesforce Developers: Designing Record Access for Enterprise Scale: Record-Level Locking
Checked against Trailhead, Salesforce developer documentation, Salesforce Help and the exam guide on Oct 25, 2026. Questions follow the Platform Data Architect exam guide.
Liked this lesson?
There are 28 more like it, plus section checks, flashcards and 4 full 60-question practice exams.
Get the Cert Lab, $9.99