KamoCRM

Mantener commit logs.translation count en tiempo de escritura

PerformanceSecurityService
Enviado
23 de septiembre de 2026 a las 14:40 UTC
Autor
Kamo
Commit
1f715e4

DDL: (número + índice parcial, aplicado a producción ya) y **************** (Aprendizaje de una sola vez, ya corren 19,373 filas, todos aterrizaron en su cuenta real). ********** now keep commit logs.translation count justamente igual a COUNT(*) DESDE commit log translations for that row, in the same REQUIRES NEW transactions as cada locale escribe: +1 para un local realmente nuevo, sin cambios para una re-salva de uno ya allí (una reiniciación o un re-trigger de la regla de la sanitización elimina-entonces-reinserta el mismo lugar - neto cero). Wrapped in @RetryOnDbConflict, matching this codebase's convention for a write that a rare concurrent-overlap (la traducción inicial post-commit todavía en vuelo cuando el reingreso de 5 minutos barrido también recoge la misma fila aún incompleta) podría 40001. ¿Qué? lee ese contador con un índice claro **************** En lugar del GRUPO* commit logs LEFT JOIN commit log translations it ran every 5 minutes — medido en producción: ~14K llama a ~750ms (una exploración completa de la tabla de traducciones ~406K-row), verificada a través de EXPLAIN ANALYZE antes de usar esto en: 751ms - título 19.6ms (Index Only Scan, Heap Fetches: 0) para el mismo caso vacío-result. Una reescritura de subquería correlativa fue juzgada primero y rechazada: EXPLAIN ANALYZE en producción lo mostró a 13.9s, ~18x WORSE que el coste original - YugabyteDB per-RPC para muchas pequeñas miradas correlativas domina, por lo que esta es una columna mantenida, no una más inteligente.

Todos los cambios

¿Te gusta lo que ves envío?

Comienza con el plan gratuito y vuelve a leer esta página dentro de un mes para ver cómo funcionan las funciones y los beneficios.

Comience gratis para siempreVer los precios