sql >> Database teknologi >  >> RDS >> Mysql

Hvad kan få mysql db read til at returnere forældede data

Det lyder som om, at dine kunder lever i deres eget øjebliksbillede af databasen, hvilket ville være sandt, hvis de har en åben transaktion, der bruger isolationsniveauet REPEATABLE-READ. Med andre ord, ingen data, der er begået efter, at klienten startede sin transaktion, vil være synlig for denne klient.

En løsning er at tvinge en ny transaktion til at starte. Bare kør COMMIT i klientsessionen, hvor det ser ud til at se forældede data. Det vil løse enhver åben transaktion, og den næste forespørgsel vil starte en ny transaktion.

En anden måde, du kan teste, er at bruge en låsende læsning forespørgsel såsom SELECT ... FOR UPDATE . Dette vil læse de senest forpligtede data, uanset kundens transaktionsisoleringsniveau. Det vil sige, at selvom klienten havde startet sin transaktion med REPEATABLE-READ, opfører en låsende læsning sig, som om de havde startet sin transaktion med READ-COMMITTED.




  1. Få gennemsnitlig tid mellem tiderne i SQL

  2. Database - Design af en begivenhedstabel

  3. SpringDataJPA gemmer OneToOne-relation får Kan ikke tilføje eller opdatere en underordnet række:en fremmednøglebegrænsning mislykkes

  4. kommasepareret felt til sammenligning i mysql