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

Hvordan deaktiverer jeg SQLAlchemy-caching?

Den sædvanlige årsag til, at folk tror, ​​at der er en "cache" på spil, udover det sædvanlige SQLAlchemy-identitetskort, som er lokalt for en transaktion, er, at de observerer virkningerne af transaktionsisolering. SQLAlchemys session fungerer som standard i en transaktionstilstand, hvilket betyder, at den venter indtil session.commit() kaldes for at bevare data til databasen. I løbet af dette tidsrum vil andre igangværende transaktioner andre steder ikke se disse data.

På grund af transaktionernes isolerede karakter er der dog et ekstra twist. De andre igangværende transaktioner vil ikke kun ikke se din transaktions data, før de er begået, de kan heller ikke se dem i nogle tilfælde, før de er begået eller rullet tilbage også (hvilket er den samme effekt, som din close() har her). En transaktion med en gennemsnitlig grad af isolation vil holde fast i den tilstand, den har indlæst indtil nu, og blive ved med at give dig den samme tilstand lokalt for transaktionen, selvom de rigtige data er ændret - dette kaldes gentagelige læsninger på transaktionsisolationssprog.

http://en.wikipedia.org/wiki/Isolation_%28database_systems%29



  1. Postgres-begrænsning for unikt dato- og tidsinterval

  2. MariaDB JSON_SEARCH() Forklaret

  3. Opret tabel (struktur) fra eksisterende tabel

  4. Maksimalt antal poster i en MySQL-databasetabel