KamoCRM

Arrêter la chaîne d'orgine de LeadVendorProduct pour une lecture unique

Performancekamo-shared-library
Expédié
23 septembre 2026 à 14:39 UTC
Auteur
Kamo
Commit
3677d12

findById() sur LeadVendorProduct tire son fournisseur par défaut-EAGER, qui lui-même avide et l'organisation est @Héritage(JOINED), donc chacun de ces houblons aussi des joints extérieurs ORG MTG pour résoudre le sous-type polymorphe. Mesuré dans la production pg stat statements: une jointure à 8 voies, ~780K appels à 10-21ms (~3 heures de DB cumulée), presque entièrement des recherches d'id (`où id=1'), pas un N+1 — chaque appelant a déjà un id et lit au plus vendeur + ses propres champs scalaires. Ajoute deux méthodes de dépôt LeadVendorProduct et interrupteurs à chaque appelant findById() kamo-shared-library + service de sécurité à celui qui correspond à ce qu'il lit réellement: - findIsEmptyCreditFfaById: une projection JPQL scalaire, aucune jointure. - findByIdWithVendor: un @EntityGraph limité à `vendor` (une entité non-JOINÉD) — seller.org et vendor.market reviennent comme des proxies non initialisées dont l'id est encore lisible sans extra requête, qui est tous les contrôles de propriété d'org dans ces appelants jamais nécessaires. Délibérément PAS un @EntityGraph dans seller.org ou seller.market.org: les deux sont Organisation, et un graphique d'entité qui récupère d'autres associations d'une entité de patrimoine JOINED est la forme exacte qui a pris /leads vers le bas dans la production sur Hibernate 6.2.13 (manque de FROM-clause l'entrée pour la table racine — voir LeadAssigneeRef). Les deux appelants qui ont vraiment besoin du marché organisation **************** en service de sécurité) charger LeadMarket comme une seconde, requête ordinaire à la place — la même division cette base de code utilise déjà pour TeamMember. Les formes JSON sont inchangées ; seules les colonnes sont lues dans la base de données modifiée.

Tous les changements

Comme ce que vous voyez l'expédition?

Commencez avec le plan gratuit et lisez à nouveau cette page dans un mois, puis passez à l’abonnement payant pour bénéficier de toutes les fonctionnalités.

Commencez gratuitement pour toujoursVoir la tarification