[Twisted-Python] adbapi MySQL read/write splitting

Itamar Turner-Trauring itamar at itamarst.org
Wed Sep 1 09:15:17 EDT 2010


On Tue, 2010-08-31 at 20:54 -0600, Jason J. W. Williams wrote:
> That's one way of handling it. Another way is to wrap the library so
> it does the splitting automatically. The advantage to the latter is
> not making mistakes where you accidentally use the READ connection for
> a write.

That sounds like a bad idea. You want to send reads to the write server
if you're doing so as part of a transaction that does writes, otherwise
in some cases you'll end up with wrong results.

For example, consider a transaction that inserts a row into a table, and
then does a select to count the number of rows in that table. If you
send the latter to a replicated read-only server, the result will be
incorrect, since it will not include the insert (which hasn't been
committed yet).

So, to repeat: you should only use the read server for operations that
are read-only. Which means some reads will go to the write server.




More information about the Twisted-Python mailing list