Filtra e pagina la griglia nel database, lotti il percorso di controllo PHI

Performancekamo-shared-library
Spegnimento
20 agosto 2026 alle ore 23:34 UTC
Autore
Kamo
Impegno
8b4f5a2

Caricamento /leads ha preso 23.3 s a 1.427 lead. 23.3 s di questo era la HIPAA audit trail: recordLeadList scrive una riga phi access log per lead ritornato, e ognuno ha commesso la propria transazione. Misurazione produzione 16.36 ms/row, 5.708 file in 93 s attraverso quattro carichi. Il SELECT è stato 29.6 ms e ix leads org id è stato utilizzato — il percorso di lettura non è mai stato il problema. Due cause indipendenti, entrambe fissate qui. Il percorso di audit ha scritto una transazione per riga. phi access log porta tre indici secondari, quindi su Yugabyte un inserto a singola fila è di quattro scritture attraverso tablet e quindi una transazione distribuita. PhiAccessLogWriter guadagna writeAll e JpaPhiAccessLogWriter lo implementa come uno saveAll, che SimpleJpaRepository esegue in una singola transazione: misurato 0.49 ms/row, ~33x. AsyncPhiAccessLogWriter prende i tipi falliti off the request thread interamente. Tipo chiuso (esportare, scaricare, rivelare, configurare) ancora scrivere in modo sincrono con l'eccezione intatta, in modo che possano ancora rifiutare la lettura; la coda non scende mai un record — un La coda saturata scrive invece inline. La granularità è invariata: ogni piombo mostrato ottiene ancora la sua fila. Il endpoint ha restituito l'intera organizzazione e ha lasciato il filtro del browser esso, quindi il volume di audit era proporzionale alla dimensione dell'inquilino piuttosto che a cosa è stato rivelato. LeadGridQuery + LeadGridSpecifications spostare ogni filtro nella query e LeadService.getLeadGridPage restituisce una pagina di la fila magra DTO, proiettata all'interno della transazione in modo che il punto finale detiene Nessuna entità dopo. Una specifica piuttosto che JPQL null-guards su scopo: ':p IS NULL O col = :p' blocca il pianificatore utilizzando il nuovo Indici compositi. Subqueries piuttosto che trattare()/type() per il mutuo sottoclasse, perché la biblioteca si basa su Hibernate 6.5 e SecurityService corre 6.2.13. Il piombo guadagna quattro indici compositi, ciascuno con ORG ID così Yugabyte ancora hash-partizioni sull'inquilino: assegnazione, mercato, stato e DataCreated. Senza di loro, il filtraggio lato server avrebbe spostato la scansione piuttosto che rimuoverlo. Inoltre: l'aspetto del telefono inverso del softphone non idrata più l'intero organizzazione per confrontare i numeri in Java. Inoltre aggiunge findBatchAfterUid: una scansione di tasti per i passaggi back-office che deve visitare ogni pista. findAll(Pageable) non può essere utilizzato per questo su Yugabyte — Spring Data associa il suo contenuto SELECT con un COUNT in uno transazione, e un pass che scrive tra le pagine poi viaggia una lettura riavviare lo strato di query non può riprovare.

Tutte le modifiche

Come quello che vedi la spedizione?

Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.

Inizia gratis per sempreVisualizza il prezzo