I gots to know…
Big web companies who use MySQL – what isolation level(s) do you use? Do you take the default? Do you think about it at all? How about if you use, eg, memcached, what there? And, does your code think about optimistic or pessimistic locking?
I’ve been reading up on isolation levels after seeing Peter Bailis’
(thanks to Mark Callaghan for re-tweeting about it).
I’m learning things… here’s one for today –
I always thought that the “repeatable” in repeatable read applied to the data in general. Meaning that a query run twice in a transaction would “repeat” the same results. I guess it actually is supposed to apply to records? Ie, other transactions’ updates to an existing row will not affect our view of the record. According to ISO ANSI 92, apparently, repeatable read does allow the appearance of “phantom” (newly added) rows. (MySQL seems to be less permissive than that.)
But enough of my talking – I’m going back to my reading. So, big MySQL users – let me know your thoughts on isolation levels, application-wide. Do you care about them? How do you enforce, or not enforce them at an application level, and why?