[Zope] Re: Catalog query time
Chris McDonough
chrism at plope.com
Thu Mar 18 15:12:29 EST 2004
The traceback indicates that the conflict is coming out of a Transience,
which would lead me to think that the catalog isn't at fault. Sounds
like more of a sessioning write issue.
On Thu, 2004-03-18 at 14:03, Casey Duncan wrote:
> It sounds like this system has a high write rate. These writes are
> causing the catalog to get updated often. This could explain both the
> poor performance and the errors. When a write occurs while
> simultaneously performing a query, it can cause a read conflict in the
> query because one of the objects in the index changed while the query
> was being processed.
>
> This causes the query to be retried. If another conflict is detected,
> the query will be retried again (up to 3 times). These retries slow
> things down a lot and if conflicts continue to happen, they will
> eventually cause the error you reported.
>
> You say you have 8000 pdfs in a single folder. What type of folder is
> this? How often are new files added, or old files deleted? If you are
> using a standard zope folder (not a BTreeFolder), then updates to it
> will be *very* slow with that many children. Slow transactions like that
> tend to cause conflicts elsewhere (or get retried themselves alot) which
> exacerbates the problem.
>
> The query you mention (against two field indexes) should be pretty
> cheap, however it's unclear how many times it gets executed in the loop.
> It would be cheaper to do this instead of querying in the loop.
>
> query = context.getDBSubjectForUser(userID=userID)
> subjects = [q.subject for q in query]
> docResults = context.portal_catalog(
> {'Subject' : subjects, 'Type' : 'Template'})
>
> Also, what are you doing with docResults when you get it back? Are you
> calling getObject on the results returned?
>
> -Casey
>
> On Thu, 18 Mar 2004 13:15:45 -0500
> Kevin Carlson <khcarlso at bellsouth.net> wrote:
>
> > I have a single folder in a zope instance that contains about 8000 pdf
> >
> > files. Each of those files is indexed using TextIndexNG (1.09),
> > along with having a Subject and Type index that are both Field
> > indexes. I am using portal_catalog under CMF 1.2 , Zope 2.6.1, python
> > 2.1.3.
> >
> > Querying the catalog has begun to take much more time recently and I
> > am wondering if there are any things that I can check into regarding
> > what might be slowing things down. I have a simple query returned
> > from a MySQL database that in turn drives a search of the catalog on
> > Subject and Type. I am using the following syntax:
> >
> > ...
> > query = context.getDBSubjectForUser(userID=userID)
> > for q in query :
> > docResults = context.portal_catalog({'Subject' : q.subject, 'Type' :
> >
> > 'Template'})
> > ...
> >
> > This query is taking quite a while and occasionally errs out with a
> > ZODB conflict error for certain subjects returned from the
> > database(traceback below) :
> >
> > ----------------------------------------------
> >
> >
> > Site Error
> >
> > An error was encountered while publishing this resource.
> >
> > *ZODB.POSException.ConflictError*
> >
> > Sorry, a site error occurred.
> >
> > Traceback (innermost last):
> >
> > * Module ZPublisher.Publish, line 150, in publish_module
> > * Module ZPublisher.Publish, line 127, in publish
> > * Module ZPublisher.Publish, line 127, in publish
> > * Module ZPublisher.Publish, line 127, in publish
> > * Module ZPublisher.Publish, line 122, in publish
> > * Module Zope.App.startup, line 142, in zpublisher_exception_hook
> > * Module ZPublisher.Publish, line 102, in publish
> > * Module Zope.App.startup, line 200, in commit
> > * Module ZODB.Transaction, line 235, in commit
> > * Module ZODB.Transaction, line 349, in _commit_objects
> > * Module ZODB.Connection, line 391, in commit
> > __traceback_info__: (('Products.Transience.Transience',
> > 'Increaser'), '\x00\x00\x00\x00\x00\x00\x00\x06', '')
> > * Module Products.TemporaryFolder.TemporaryStorage, line 134, in
> > store
> >
> > ConflictError: database conflict error (oid 0000000000000006, serial
> > was 0353d48778e55b88, now 0353d485d3dba833)
> >
> > ----------------------------------------------
> >
> > Any ideas what could be causing this type of behavior?
> >
> > Thanks,
> >
> > Kevin
> >
> >
> > _______________________________________________
> > Zope maillist - Zope at zope.org
> > http://mail.zope.org/mailman/listinfo/zope
> > ** No cross posts or HTML encoding! **
> > (Related lists -
> > http://mail.zope.org/mailman/listinfo/zope-announce
> > http://mail.zope.org/mailman/listinfo/zope-dev )
> >
>
>
> _______________________________________________
> Zope maillist - Zope at zope.org
> http://mail.zope.org/mailman/listinfo/zope
> ** No cross posts or HTML encoding! **
> (Related lists -
> http://mail.zope.org/mailman/listinfo/zope-announce
> http://mail.zope.org/mailman/listinfo/zope-dev )
More information about the Zope
mailing list