On 27. Jul 2008, at 18:48, Shane Hathaway wrote:

I would expect that when a slave goes down, the slave must replay all of the statements since the beginning of a transaction, including the statements that create temporary tables. Does it not work that way?

Not in MySQL anyway. MySQL knows transactions at table-level only. For replication, the slave maintains the name of the master log file and a pointer to the next line to be read from it. That's all.

Do slaves respect transaction boundaries? If they don't, then ZODB clients of slaves will miss object updates, leading to sporadically inconsistent ZODB caches, especially under load.

Slaves replay BEGIN, COMMIT, and ROLLBACK statements issued on the master.

We can do that, but I hope it doesn't impact performance too much. It seems a shame to not use a RAM-based temporary table. OTOH, I've tried to structure RelStorage to allow changes like this without too much effort.

I am primarily aiming for redundancy here, not performance.

And -BTW- you have and thanks for that.


Anything that, in happening, causes itself to happen again,
happens again.  --Douglas Adams

For more information about ZODB, see the ZODB Wiki:

ZODB-Dev mailing list  -  ZODB-Dev@zope.org

Reply via email to