- 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.
