For the performance part: a simple model.save() is about 50% more expensive with savepoints. This time is used in the database.
In addition there are 3 network trips instead of one. This could add latency in some usecases. -------- Original message -------- Subject: Re: Is "transaction.atomic" in 1.6 supposed to work this way? From: Aymeric Augustin <[email protected]> To: "[email protected]" <[email protected]> CC: Le 21 sept. 2013 à 15:53, Richard Ward <[email protected]<mailto:[email protected]>> a écrit : You say in your docs patch that savepoints are cheap Truth be said, I haven't run benchmarks. so what is transaction.atomic(savepoint=False) for? is it just for performance, or is more like an assertion that we are definitely in a transaction (or both?). It's mostly for performance. Ask Anssi for details. There a second, more practical, reason; read below. At present the decision to rollback or commit is based on whether there is a current exeption and whether needs_rollback is True. If instead this were just based on whether there is a current exception (getting rid of needs_rollback), then exceptions bubbling from inside a transaction.atomic(savepoint=False) would still cause a rollback, and catching an exception (hiding it from the context manager) would lead to a commit (or at least an attempt to commit). This would leave Django+PostgreSQL's behaviour unchanged You may be right. I'm not sure. This code is tricky. Such assertions routinely take more than 10 hours of work to confirm. Removing the option for savepoint=False would have the same effect It would have the drawback of breaking everyone's assertNumQueries because of the extra savepoints introduced by Django. This would be very hostile to people porting large, well-tested code bases. -- Aymeric (mobile). -- You received this message because you are -- You received this message because you are subscribed to the Google Groups "Django developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/django-developers. For more options, visit https://groups.google.com/groups/opt_out.
