sql >> Databasteknik >  >> RDS >> Mysql

Hur inaktiverar jag SQLAlchemy-cache?

Den vanliga orsaken till att folk tror att det finns en "cache" på spel, förutom den vanliga SQLAlchemy-identitetskartan som är lokal för en transaktion, är att de observerar effekterna av transaktionsisolering. SQLAlchemys session fungerar som standard i ett transaktionsläge, vilket innebär att den väntar tills session.commit() anropas för att bevara data till databasen. Under denna tid kommer inte andra pågående transaktioner någon annanstans att se denna data.

Men på grund av transaktionernas isolerade karaktär finns det en extra twist. De andra transaktionerna som pågår kommer inte bara att inte se din transaktions data förrän den har genomförts, de kan inte heller se den i vissa fall förrän de har genomförts eller återställts också (vilket är samma effekt som din close() har här). En transaktion med en genomsnittlig grad av isolering kommer att hålla fast vid det tillstånd som den har laddat hittills, och fortsätter att ge dig samma tillstånd lokalt för transaktionen även om den verkliga datan har ändrats - detta kallas upprepningsbara läsningar på transaktionsisoleringsspråk.

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



  1. Optimistisk samtidighet:IsConcurrencyToken och RowVersion

  2. SQL Server standard teckenkodning

  3. Åtkomst till databasen för en applikation från en annan applikation

  4. ASCIISTR() Funktion i Oracle