KamoCRM

Les plombs disponibles et les soldes de crédit lisent un registre au lieu de compter les lignes

Performancekamo-shared-library
Expédié
23 septembre 2026 à 01:27 UTC
Auteur
Kamo
Commite
ae437eb

Le "Leads available" était le COUNT(-) sur le pool Cessable, et la piscine d'un org contient 796 000 pistes: 7,8 s par nombre (marché, produit) et 11 s pour le groupe (mesuré 2026-09-17). Gérer les Crédits a couru le nombre unique une fois par ligne d'attribution, plomb-disponible une fois par produit, et chaque Ajusté Un autre juste pour diffuser le nouveau chiffre. Les soldes de crédit étaient la même forme sur les crédits- leads, qui garde tous les crédits dépensés pour toujours. Les deux chiffres proviennent maintenant des totaux maintenus: plomb-pool-counts / lead-credit-balances plus un Journal d'appendices de deltas qui se déclenchent sur des leads / leads-credits écrivent dans la même transaction au fur et à mesure du changement (stationner, application 2026-09-22). Un montant total en l'air dans une déclaration, donc c'est exact, et Hibernate bouffle en instance écrit avant une requête native, Ainsi, une transaction voit ses propres menthes et dépense. Les méthodes du dépôt gardent leurs noms, donc tous l'appelant dans chaque service se déplace avec cette bibliothèque. DaemonService plie le journal tous les 30 s et recountmet la nuit, en ajoutant une correction pour toute dérive. En outre : - Le pick Accept (trouvdAssignablePool) lise et trie l'ensemble du pool de produits: 9,5 s selon Accept. Il est maintenant trouvéAssignablePoolUids, épinglé avec un indice pg-hint-plan-plan vers le nouvel indice partiel Le programme ix-leads-assignable-pool, parce que le planificateur de l'héritage de ce cluster préfère le marché ix-leads-org-g-market et sortes. 9 470 ms - 4 ms sur la piscine vivante; la sonde d'existence (échantillons de PoolUids) de même, et un produit vide ne coûte plus cher un balayage de l'ensemble de son marché. - Lire par lots pour les grilles: (en termes de solde de chaque ligne en une seule lecture), findSpentCreditsInRange (tout membre dépense depuis le premier minuit local), countAccepté-suppressionProduits et le jumeau en mémoire de findApplicableAllotments pour résoudre de nombreuses paires (marché, produit) à partir d'une liste. Tests: LeadLedgerQueryShapeTest picing le grand livre indique, la pince non négative, les moulages bigints et l'indice de l'index; LeadAllotmentMostSpecificOfTest brosse le résolveur aux règles de la requête. Le déclencheur DDL, chaque lecture, le pli et le recomptage ont été rejoués contre YugabyteDB (tableaux temporaires, 60 contrôles). Suite complète: 3012 tests, 5 en échec exactement comme sur a6374937 (StorageDomainCoverage, StorageDomainAssociationLookup, ReportVisability, PhiServiceTypeMapping, SystemBugCountContract).

Tous les changements

Comme ce que tu vois expédier ?

Tout cela arrive dans votre espace de travail par lui-même. Commencez sur le plan gratuit et relisez cette page dans un mois.

Commencez gratuitement pour toujoursPrix de visualisation