Где - на каком уровне - блокировка и коллизии происходят в транзакционных операциях в одной и той же группе объектов?В корне?У какого-нибудь распространенного, достаточно широкого родителя?
Мне не ясно, что такое «группа объектов» для транзакции.Всегда ли это группа, исходящая из корневого объекта (без родителя), или есть механизм, который выбирает группу, достаточно широкую для транзакции.
Например, когда у меня есть структура модели, подобная этой:
- School
- Teacher
- Class
- Course
- Lesson
- Evaluation
- Student
- Guardian
- Grade
- PresenceMarker
- TextBook
Всегда ли мои транзакционные операции относятся к "группе объектов" как группе, созданной на уровне школы (независимо от уровнягде происходит фактическая операция), или когда я обновляю сущности учеников в том же классе, я могу столкнуться только с другой транзакционной операцией, происходящей ниже той же сущности класса.Школа или есть группы подэлементов, происходящие на каждом другом уровне в иерархии?Если есть группы подэлементов, используются ли они для изоляции транзакций?
ОБНОВЛЕНИЕ:
Взяв Счетчики Sharding в качестве другого примера.Сработает ли шардинг, если все шарды имеют общего родителя?Приведет ли обновление отдельного сегмента счетчика к обновлениям коллизий транзакций на других сегментах?