* Allura/allura/model/discuss.py:find_posts:
short circuit if self.posts is already present and avoid requerying
* artifactreference bulk preload and cache
this was the biggest; each post has to check for backreferenced artifacts
before checking for related artifacts. bulk querying for all these and caching
them as instance attrs allows
us to skip all the individual checks
* ForgeDiscussion/forgediscussion/model/forum.py:ForumThread.subscribed
it's super() call was memoized, but this invocation wasn't
* memoize Allura/allura/model/notification.py:Mailbox.subscribed
i believe this shaved one ming call off; not much but can't hurt
* edit post HTML isn't present when not logged in, so nothing to be done there
* there still seem to be more Project fetches than should be needed, but didn't
really find a good way to identify truly unnecessary ones or reduce those
* final counts - 6 total posts, 2 top level, 1 related artifact and one backrefd
before: mongo": 172, "ming": 104,
after: mongo": 135, "ming": 84,
---
** [tickets:#4359] Reduce duplicate queries in threaded discussion display**
**Status:** open
**Milestone:** unreleased
**Labels:** performance
**Created:** Tue Jun 12, 2012 08:37 PM UTC by Dave Brondsema
**Last Updated:** Sat Feb 07, 2015 06:12 PM UTC
**Owner:** nobody
There are lot of duplicate ming queries for a threaded discussion. The
following is logged by timermiddleware, when viewing a ticket page that had 2
comments by admin1, when logged in as admin1.
~~~~
get args=(<class 'allura.model.auth.User'>,
ObjectId('4fbc01a69c104009d2000407')) kwargs={}
find args=(<class 'allura.model.project.Project'>, {'deleted': False,
'shortname': u'u/admin1'}) kwargs={}...
find args=(<class 'allura.model.project.Project'>, {'deleted': False,
'shortname': u'u/admin1'}) kwargs={}...
find args=(<class 'allura.model.project.ProjectFile'>, {'category': 'icon',
'project_id': ObjectId('4fbc01a69c104009d2000408')}) kwargs={}...
find args=(<class 'allura.model.project.Project'>, {'deleted': False,
'shortname': u'u/admin1'}) kwargs={}...
find args=(<class 'allura.model.project.Project'>, {'deleted': False,
'shortname': u'u/admin1'}) kwargs={}...
find args=(<class 'allura.model.project.ProjectFile'>, {'category': 'icon',
'project_id': ObjectId('4fbc01a69c104009d2000408')}) kwargs={}...
get args=(<class 'allura.model.auth.User'>,
ObjectId('4fbc01a69c104009d2000407')) kwargs={}
get args=(<class 'allura.model.auth.User'>,
ObjectId('4fbc01a69c104009d2000407')) kwargs={}
get args=(<class 'allura.model.index.ArtifactReference'>,
u'allura/model/discuss/Post#6f62e5c2eec5ff46a51fb65a4d91efcba41b1aaf/tickets@testall/p/sourceforge/net')
kwargs={}...
find args=(<class 'allura.model.index.ArtifactReference'>, {'references':
u'allura/model/discuss/Post#6f62e5c2eec5ff46a51fb65a4d91efcba41b1aaf/tickets@testall/p/sourceforge/net'})
kwargs={}...
get args=(<class 'allura.model.discuss.Thread'>, u'f0cd42a4') kwargs={}
get args=(<class 'allura.model.discuss.Discussion'>,
ObjectId('4fbc059b9c104012b2000030')) kwargs={}
get args=(<class 'allura.model.project.AppConfig'>,
ObjectId('4fbc059b9c104012b200002e')) kwargs={}
get args=(<class 'allura.model.project.AppConfig'>,
ObjectId('4fbc059b9c104012b200002e')) kwargs={}
find args=(<class 'allura.model.discuss.DiscussionAttachment'>, {'post_id':
u'6f62e5c2eec5ff46a51fb65a4d91efcba41b1aaf.tick...@testall.p.sourceforge.net',
'type': 'attachment'}) kwargs={}...
get args=(<class 'allura.model.auth.User'>, None) kwargs={}
get args=(<class 'allura.model.index.ArtifactReference'>,
u'forgetracker/model/ticket/Ticket#4fbd3f079c1040225a000002') kwargs={}...
get args=(<class 'allura.model.project.Project'>,
ObjectId('4fbc059b9c104012b2000000')) kwargs={}
find args=(<class 'allura.model.project.AppConfig'>, {'options.mount_point':
None, 'project_id': ObjectId('4fbc059b9c104012b2000000')}) kwargs={}...
get args=(<class 'forgetracker.model.ticket.Ticket'>,
ObjectId('4fbd3f079c1040225a000002')) kwargs={}
get args=(<class 'allura.model.discuss.Post'>, None) kwargs={}
get args=(<class 'allura.model.auth.User'>,
ObjectId('4fbc01a69c104009d2000407')) kwargs={}
find args=(<class 'allura.model.project.Project'>, {'deleted': False,
'shortname': u'u/admin1'}) kwargs={}...
find args=(<class 'allura.model.project.Project'>, {'deleted': False,
'shortname': u'u/admin1'}) kwargs={}...
find args=(<class 'allura.model.project.ProjectFile'>, {'category': 'icon',
'project_id': ObjectId('4fbc01a69c104009d2000408')}) kwargs={}...
find args=(<class 'allura.model.project.Project'>, {'deleted': False,
'shortname': u'u/admin1'}) kwargs={}...
find args=(<class 'allura.model.project.Project'>, {'deleted': False,
'shortname': u'u/admin1'}) kwargs={}...
~~~~
---
Sent from forge-allura.apache.org because [email protected] is subscribed
to https://forge-allura.apache.org/p/allura/tickets/
To unsubscribe from further messages, a project admin can change settings at
https://forge-allura.apache.org/p/allura/admin/tickets/options. Or, if this is
a mailing list, you can unsubscribe from the mailing list.