KamoCRM

Fermare la catena di org di LeadVendorProduct per una lettura single-id

Performancekamo-shared-library
Spegnimento
23 settembre 2026 alle ore 14:39 UTC
Autore
Kamo
Impegno
3677d12

findById() su LeadVendorProduct tira il suo fornitore di default-EAGER, che di per sé fa ansioso proprio org E il suo mercato (che aggrappa ITS org di nuovo) — e l'organizzazione è @Inheritance (JOINED), così ogni uno di quei hops anche esterna-joins ORG MTG per risolvere il sottotipo polimorfico. Misurato nella produzione pg stat statements: un raccordo a 8 vie, ~780K chiama a 10-21ms (~3 ore di tempo cumulativo DB), quasi interamente single-id lookups (`dove id=$1`), non un batchable N+1 — ogni chiamante ha già un id e legge alla maggior parte dei fornitori + i suoi campi scalari. Aggiunge due metodi magra LeadVendorProductRepository e passa ogni ricercaById() caller in kamo-shared-library + servizio di sicurezza a quello che corrisponde a quello che effettivamente legge: - findIsEmptyCreditFfaById: una proiezione scalare JPQL, nessun partecipa affatto. - findByIdWithVendor: un @EntityGraph limitato a `vendor` (una entità normale, non-JOINED) — vendor.org e vendor.market torna come proxy non inizializzati il cui id è ancora leggibile senza alcun extra query, che è tutti i controlli di org-ownership in questi chiamanti mai necessari. Deliberatamente NON un @EntityGraph in vendor.org o vendor.market.organization: entrambi sono Organizzazione, e un grafico di entità che fetches ulteriori associazioni fuori un'entità JOINED-inheritance è la forma esatta che ha preso /leads giù in produzione su Hibernate 6.2.13 (che manca voce per la tabella radice — vedere LeadAssigneeRef). I due chiamanti che hanno veramente bisogno del mercato organizzazione Carica LeadMarket come secondo, query ordinaria invece — la stessa divisione questo codebase utilizza già per TeamMember. Le forme JSON sono invariate; solo quali colonne vengono lette dal database modificato.

Tutte le modifiche

Come quello che vedi la spedizione?

Tutto questo arriva nel vostro spazio di lavoro da solo. Iniziare sul piano gratuito e leggere di nuovo questa pagina in un mese.

Inizia gratis per sempreVisualizza il prezzo