Re: how can I utilise ZODB's parallel commit feature in my old application
Jim Fulton <[email protected]>
| Newsgroups | gmane.comp.web.zope.zodb |
|---|---|
| Message-ID | <CAPDm-Fhu0mUJfUpsC=TmmNe4JEbcCzRfMAETsCYs5esZ1Ht6yA@mail.gmail.com> |
On Thu, Sep 8, 2016 at 7:44 AM, Sanjay Rao <[email protected]> wrote: > Hi, > > release notes of ZODB 4.4.0 mentions > > *4.4.0 (2016-06-30)* <https://pypi.python.org/pypi/ZODB/5.0.0#id35> > > *This release begins evolution to a more effcient commit protocol that > allows storage implementations, like NEO <http://www.neoppod.org/>, to > support multiple transactions committing at the same time, for greater > write parallelism.* > > > How can I utilise this feature in my old application. > Use NEO. > Or > > Simply installing this version of ZODB is enough to get this working. > No. The change cleans up some details of the commit protocol to allow storages to perform the second phase of 2-phase commit in parallel. NEO does this, but previously had to monkey-patch ZODB. WRT ZEO, ZEO allows parallel execution of the first phase of 2-phase commit, but only allows one transaction to be in the second phase. I worked on enabling multiple transactions to be in the second phase, but wasn't able to get a meaningful performance improvement. This appears to be because when multiple clients are trying to commit at once, ZEO servers become compute bound and clients end up waiting for CPU cycles instead of commit locks. My plan, eventually, is to try a non-Python implementation of ZEO servers that's faster and that can more effectively use multiple CPUs, at which point, the change to the commit protocol may yield more benefits. It's conceivable that RelStorage could be modified to take advantage of this change. Jim -- Jim Fulton http://jimfulton.info -- You received this message because you are subscribed to the Google Groups "zodb" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.