- Verschifft
- 23. September 2026 um 01:27 UTC
- Autor
- Kamo
- Ausschuss
- ae437eb
"Leads available" war COUNT(*) über den zuweisenden Pool, und der Pool einer org hält 796k Leads: 7,8 s pro (Markt, Produkt) und 11 s für die gruppierte (geerstanden 2026-09-17). Manage-Credits lief die einzelne Zählung einmal pro Zuteilungsreihe, Leads-Verfügbarkeit einmal pro Produkt, und jeder Accept lief eine andere nur, um die neue Figur zu senden. Kreditguthaben waren die gleiche Form auf Lead_ Credits, die hält jeden ausgegebenen Kredit für immer. Beide Zahlen stammen nun aus gewarteten Summen: lead_pool_counts / lead_credit_balances plus an append-only journal von deltas, die Zeile löst auf Lead / lead_credits schreiben in der gleichen Transaktion als Änderung (securityservice create_lead_ledgers.sql, angewendet 2026-09-22). Eine Lekulation Summen + Journal in einer Erklärung, so ist es genau, und Hibernate Flushes anhängig schreibt vor einer nativen Abfrage, so eine Transaktion sieht seine eigenen Minzen und Ausgaben. Die Repository-Methoden behalten ihre Namen, so dass jeder Anrufer in jedem Dienst wechselt mit dieser Bibliothek. DaemonService faltet die Zeitschrift alle 30 s und Nachzählt nächtlichen, eine Korrektur für jede Drift. Auch: - Der Accept Pick (findAssignablePool) lesen und sortierten den gesamten Produktpool: 9,5 s pro Accept. Es ist jetzt findAssignablePoolUids, angeheftet mit einem pg_hint_plan Hinweis auf den neuen Teilindex ix_leads_assignable_pool, weil der Legacy-Planer dieses Clusters ix_leads_org_market bevorzugt und sortiert. 9.470 ms - 4 ms auf dem Live-Pool; die Existenzsonde (SampleAssignablePoolUids) ebenfalls, und ein leeres Produkt kostet keinen Scan seines gesamten Marktes mehr. - Batch liest für die Gitter: ************ (die Bilanz jeder Zeile in einer Lektüre), findSpentCreditsInRange (jedes Mitglied gibt seit der frühesten lokalen Mitternacht aus), countAcceptedSeConvedConnce, and ************ der In-Gedächtnis-Zwilling von findApplicableAllotments für die Auflösung vieler (Markt-, Produkt-) Paare aus einer Liste. Tests: LeadLedgerQueryShapeTest pins das Ledger liest, die nicht-negative Klemme, die bigint Guss und der Index-Hinweis; LeadAllotmentMostSpecificOfTest pins setzt den Resolver auf die Regeln der Abfrage. Der Auslöser DDL, jede Lesart, die Falte und die Nachzählung wurden gegen YugabyteDB (Temp-Tabellen, 60 Schecks) wiedergegeben. Volle Suite: 3012 Tests, 5 Ausfall genau wie auf a6374937 (StorageDomainCoverage, StorageDomainAssociationLookup, ReportVisibility, PhiServiceTypeMapping, SystemBugCountContract).
