sql >> Database >  >> RDS >> Mysql

Hoe SQLAlchemy-caching uit te schakelen?

De gebruikelijke oorzaak voor mensen die denken dat er een "cache" in het spel is, naast de gebruikelijke SQLAlchemy-identiteitskaart die lokaal is voor een transactie, is dat ze de effecten van transactie-isolatie waarnemen. De sessie van SQLAlchemy werkt standaard in een transactiemodus, wat betekent dat het wacht tot session.commit() wordt aangeroepen om gegevens in de database te bewaren. Gedurende deze tijd zullen andere transacties die elders plaatsvinden, deze gegevens niet zien.

Vanwege het geïsoleerde karakter van transacties is er echter een extra draai. Die andere lopende transacties zullen niet alleen de gegevens van uw transactie niet zien totdat deze zijn vastgelegd, ze kunnen deze in sommige gevallen ook niet zien totdat ze zijn vastgelegd of teruggedraaid ook (wat hetzelfde effect is dat uw close() hier heeft). Een transactie met een gemiddelde mate van isolatie behoudt de status die het tot nu toe heeft geladen, en blijft u diezelfde status geven lokaal voor de transactie, ook al zijn de echte gegevens veranderd - dit wordt herhaalbare leesbewerkingen genoemd in transactie-isolatietaal.

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



  1. php/mysql met meerdere zoekopdrachten

  2. Indexdefragmentatie automatiseren in MS SQL Server-database

  3. Tabelkolommen opnieuw ordenen in Oracle

  4. Ontbrekende indexen in MS SQL of optimalisatie in een mum van tijd