KamoCRM

Maintenez commit logs.traduction count au moment de l'écriture

PerformanceSecurityService
Expédié
23 septembre 2026 à 14:40 UTC
Auteur
Kamo
Commit
1f715e4

DDL: **************** (colonne + indice partiellement production déjà) et ************* (une fois de rattrapage, déjà courir — 19 373 lignes, toutes débarquées sur leur compte réel). ************* **** maintenant garde commit logs. égal à COUNT(*) DE commit log translations pour cette ligne, dans la même transaction REQUIRES NEW que chaque local écrire: +1 pour une locale vraiment nouvelle, inchangé pour une ré-save d'un déjà là (un réessayer ou un ré-trigger de la règle d'assainissement supprime-alors-réinsère la même localité — zéro net). Enveloppé dans @RetryOnDbConflict, correspondant à la convention de cette base de code pour un écrit qui est rare overlap simultanée (la traduction initiale post-engagement toujours en vol lorsque la 5 minutes réessayer balai prend également la même ligne encore incomplète) pourrait 40001. - Oui. lit ce compteur avec un simple indexé OÙ ************* **** au lieu du groupe par .. commit logs LEFT JOIN commit log traductions toutes les 5 minutes — mesurées en production: ~14K appelle à ~750ms (une analyse complète de la table de traductions ~406K-row), vérifiée via EXPLAIN ANALYZE avant le câblage ceci dans: 751ms -> 19,6ms (Index Only Scan, Heap Fetches: 0) pour la même cas de résultat vide. Une réécriture corrélée de la sous-requête par ligne a d'abord été essayée et rejetée : EXPLAIN ANALYZE sur la production l'a montré à 13.9s, ~18x WORSE que le coût original — YugabyteDB per-RPC pour beaucoup de petites recherches corrélées domine, c'est pourquoi c'est une colonne maintenue, pas un plus intelligent.

Tous les changements

Comme ce que vous voyez l'expédition?

Commencez avec le plan gratuit et lisez à nouveau cette page dans un mois, puis passez à l’abonnement payant pour bénéficier de toutes les fonctionnalités.

Commencez gratuitement pour toujoursVoir la tarification