Servir une fenêtre rouverte uniquement ce qu'elle a manqué, et auditer une page en une seule écriture

PerformanceMediaService
Expédié
28 août 2026 à 01:24 UTC
Auteur
Kamo
Commite
0d96bb9

Deux coûts, tous deux payés à chaque ouverture d'une fenêtre de discussion. depuis l'EGE/sessions/avis/messages. Une fenêtre en train de rouvrir veut messages après celui qu'il détient déjà, et n'avait aucun moyen de le dire - le seul question à ce critère d'évaluation auquel il a été répondu était "la page la plus récente", qui est la première et mal à chaque fois après. Donc chaque réouuve racheté une centaine de rangs, a couru un la traduction les transmet, a interrogé leurs réactions et a écrit une ligne d'audit par inclus: deux messages peuvent partager une milliseconde, une coupe strictement plus importante serait laisser tomber le second en permanence, et le client déjà déduès par id Parce qu'une page qui court un envoyer retourne des lignes qui se chevauchent de toute façon. Absents ou inébranlable, le comportement est exactement ce qu'il était, donc un client plus âgé perd La requête vit dans MediaService plutôt que des autres requêtes MediaObj: les navires de bibliothèque partagés en une version épinglée à l'ensemble de la flotte, et c'est lire d'un point d'extrémité. Son bagarre rejoint le miroir de la page d'ouverture est exactement, INNER y adhérer à un membre inclus - le rattrapage doit renvoyer les mêmes que la page l'avoir, et l'élargir ici, ferait apparaître des objets sans membre lors de la réouverture et nulle part ailleurs. Une page pleine à l'arrière d'un rattrapage est le signal du client que plus Arrivé que une page tient et les rangées qu'il n'a pas obtenus sont celles dans le milieu, c'est-à-dire quand il relis le fil au lieu de s'inscrire sur un trou. ChatMessageAccessAuditor enregistre maintenant une page avec enregistrementTout au lieu d'une boucle de Un single s'écoule. «164.312 b) est inchangé - toujours une ligne par message, car "a été Ce message divulgué est toujours la question, mais une page de cent messages est une unité de travail plutôt qu'une centaine, que la bibliothèque prend ses propres mesures à 0,49 ms/rouligne contre 16,36. hibernate.jdbc.batch.size est le reste: une seule transaction a toujours émis un aller-retour INSERT par rangée sans elle, et L'id UUID de PhiAccessLog est attribué avant la chasse d'eau afin que ces rangées puissent être dissociés à tous. Le lot est atomique, donc une page est maintenant vérifiée complètement ou pas du tout plutôt que jusqu'à la rangée qui a été jetée. Vérifié contre les produits avant de toucher ce problème: 3 094 lignes CHAT-MESSAGE/LIST sont présent, donc la piste était en train d'écrire et c'est une vitesse fixe, pas une réparation.

Tous les changements

Comme ce que tu vois expédier ?

Chacune de ces mises à jour atterrit automatiquement dans votre espace de travail. Commencez gratuitement et regardez-le grandir semaine après semaine.

Commencez gratuitement pour toujoursPrix de visualisation