KamoCRM

Стоп eager-fetching LeadVendorProduct's org мережа для одностороннього читання

Performancekamo-shared-library
Shipped
23 вересня 2026 р. о 14:39 UTC
Author
Kamo
Commit
3677d12

findById() on LeadVendorПродукт витягне за собою постачальника за замовчуванням-EAGER, який сам витримує його власний орг і його ринок (які еager-fetches ITS org знову) — і організація @Inheritance(JOINED), так що кожен з цих хмепів також зовнішній ORG MTG для вирішення проблеми поліморфний підтип. Вимірюваний у виробництві pg stat statements: 8-ходовий приєднатися, ~780K викликів при 10-21ms (~3 годин примулятивний час DB), практично повністю односторонні погляди (`де id=$1`), а не Пакетний N+1 — кожен абонент вже має одну ідентифікацію і прочитає в більшості постачальників + власні масштабні поля. Додає два пісні LeadVendorProductРепозиторійні методи та перемикачі кожного FindById() дзвоника в kamo-shared-library + служба безпеки до того, що він насправді читає: - FindIsEmptyCreditFfaById: scalar JPQL проекція, не приєднується до всіх. - FindByIdWithVendor: @EntityGraph, обмежений `vendor` (звичайна, не-JOINED суб'єкта господарювання) — постачальник.org і постачальник.market повернувся як неініціалізований проксі, чия id все ще читається без додаткових запит, який є всі перевірки юрисконсультів у цих абонентах, коли-небудь потрібно. Не пишіть @EntityGraph в постачальників.org або постачальник.market.organization: обидва Організація та графік суб’єкта господарювання, що охоплює подальші об’єднання з суб’єктом спадкування є точною формою, яка взяла / вводиться в виробництво на Hibernate 6.2.13 (подача з-за застібки) запис для кореневого столу — див. LeadAssigneeRef. Два абоненти, які дійсно потребують ринку організація ****** in Securityservice) load LeadMarket як другий, Звичайна вікторина замість того, що цей код вже використовує для TeamMember. Форма JSON не змінюється; тільки які стовпчики зчитують базу даних.

All changes

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing