Filtrar y página de la cuadrícula en la base de datos, lote el rastro de auditoría de PHI

Performancekamo-shared-library
Se descapó
20 de agosto de 2026 a las 23:34 UTC
Autor
Kamo
Compromit
8b4f5a2

Carga /leads se llevó 23,3 s a 1.427 pistas. 23.3 s de eso era la HIPAA rastro de auditoría: recordLeadList escribe una fila de fi-access-log por plomo devuelto, y cada uno cometió su propia transacción. Medido en producción 16.36 ms/pin, 5.708 filas en 93 en cuatro cargas. El SELECT se utilizaba 21,6 ms y el camino de lectura nunca fue utilizado. el problema. Dos causas independientes, ambas arregladas aquí. El rastro de la auditoría escribió una transacción por fila. tres índices secundarios, así que en Yugabyte un inserto de una sola fila es cuatro escrituras comprimidos y, por lo tanto, una transacción distribuida. PhiAccessLogWriter ganas writeAll y JpaPhiAccessLogWriter lo implementa como uno solo saveAll, que SimpleJpaRepositorio se ejecuta en una sola transacción: medida 0,49 ms/pina, 33x. AsyncPhiAccessLogWriter luego toma los tipos de falla-abierto fuera del hilo de la solicitud por completo. Tipos fallidos (exportación, descarga, revelar, configurar) aún escribe sincronizadamente con la excepción intacta, para que todavía puedan rechazar la lectura; la cola nunca cae un disco La cola saturada escribe en línea en su lugar. La granularidad no cambia: cada El plomo mostrado todavía tiene su propia fila. El endpoint devolvió a toda la organización y dejó que el filtro del navegador por lo que el volumen de auditoría era proporcional al tamaño del inquilino en lugar de lo que se reveló. LeadGridQuery - LeadGridLasespecificaciones mueven cada filtrar en la consulta y LeadService.getLeadGridPage devuelve una página de la fila magra DTO, proyectada dentro de la transacción por lo que el endpoint mantiene No hay entidad después. Una especificación en lugar de JPQL null-guards en propósito: ':p IS NULL O col = :p' detiene al planificador usando el nuevo índices compuestos. Subcresiciones en lugar de tratar ()/tipos () para la hipoteca subclase, porque la biblioteca se construye sobre Hibernate 6.5 y SecurityService Corre 6.2.13. Llevancia gana cuatro índices compuestos, cada uno liderando con ORG-ID por lo que Yugabyte todavía hash-particiones en el inquilino: asignación, mercado, estatus y fechaCreado. Sin ellos, el filtrado del lado del servidor reubicaría el escaneo en lugar de quitarlo. También: la búsqueda inversa del teléfono del softphone ya no hidrata el todo organización para comparar números en Java. Añade también findBatchAfterUid: un escáner de teclado para pases de back-office que debe visitar cada pista. findAll(Pageable) no se puede utilizar para eso en Yugabyte - Spring Data combina su contenido SELECT con un COUNT en uno transacción, y un pase que escribe entre páginas y luego viaja a una lectura reiniciar la capa de consulta no puede volver a intentarlo.

Todos los cambios

Como lo que ves enviaste?

Cada una de estas actualizaciones aterriza en su espacio de trabajo automáticamente. Empieza gratis y verlo crecer semana tras semana.

Arranzar gratis para siempreVer Precios