KamoCRM

Behalten Sie commit_logs.translation_count zur Schreibzeit

PerformanceSecurityService
Verschifft
23. September 2026 um 14:40 UTC
Autor
Kamo
Ausschuss
1f715e4

DDL: ************ (Kolumne + partiellfreundlicher Index, angewendet auf Produktion bereits) und ************ (einmalige Aufholjagd, bereits laufen) 19.373 Reihen, alle landeten auf ihrer wirklichen Zählung). **************** hält jetzt commit_logs.translation_count genau gleich COUNT(*) VON übertragen_log_translations für diese Zeile, in der gleichen REQUIRES_NEW Transaktion wie jeder Locale schreiben: +1 für einen wirklich neuen Ort, unverändert für eine erneute speichernde von einem bereits dort (ein Retry oder ein shytrigger re-trigger deletes-then-reinserts die gleiche locale - net zero). Eingepackt in @RetryOnDbConflict, passend zu dieser Codebase-Konvention für ein Schreiben, dass eine seltene gleichzeitige Überlap (die anfängliche Post-Commit-Übersetzung noch im Flug, wenn der 5-Minuten-Retry Swee nimmt auch die gleiche noch unvollständige Reihe) könnte 40001. ************ liest diesen Zähler mit einer schlichten Indexe WO ************ statt der GRUPPE BY .. HAVING over commit_logs LEFT JOIN commit_log_translations lief es alle 5 Minuten - in der Produktion gemessen: 14K-Aufrufe bei 750ms (ein vollständiger Scan der Übersetzungstabelle von 406K), verifiziert über EXPLAIN ANALYZE vor der Verdrahtung in: 751ms - 19.6ms (Index Only Scan, Heap Fetches: 0) für die gleiche Leer-Ergebnis-Fall. Eine korrelierte Unterabfrage pro-Reihe wurde zuerst ausprobiert und abgelehnt: EXPLAIN ANALYZE in der Produktion zeigte es bei 13,9s, 18x WORSE als das Original - YugabyteDB pro-RPC-Kosten für viele kleine korrelierte Lookups dominiert, weshalb dies eine gepflegte Säule ist, nicht ein intelligenter beitreten.

Alle Änderungen

Wie, was Sie sehen Versand?

Alles kommt in Ihrem Arbeitsbereich für sich. Starten Sie mit dem kostenlosen Plan und lesen Sie diese Seite in einem Monat wieder.

Free Forever startenPreisgestaltung anzeigen