[buddypress-trac] [BuddyPress] #4045: Activity Feed queries fail with millions of rows
buddypress-trac at lists.automattic.com
buddypress-trac at lists.automattic.com
Wed Mar 14 00:56:39 UTC 2012
#4045: Activity Feed queries fail with millions of rows
-----------------------------------+--------------------
Reporter: zacechola | Owner:
Type: defect (bug) | Status: new
Priority: normal | Milestone: 1.6
Component: Activity | Version: 1.5.4
Severity: normal | Resolution:
Keywords: 2nd-opinion has-patch |
-----------------------------------+--------------------
Comment (by boonebgorges):
zacechola - Thanks so much for that info. It's really helpful. That said,
I am a bit confused. Your SHOW INDEX results show an index on
date_recorded, yet the query optimizer is not even identifying
date_recorded as one of the possible_keys. That's why the paged query is
going so slowly.
I must admit I'm in a bit over my head here - I'm not sure why MySQL would
be acting like this. But please do try 4045.02.diff, which is pretty much
the same thing as 4045.01.diff, except that in the _paged_ query, {{{USE
INDEX (date_recorded)}}} is specified. (Note that the patch had to be
redone a bit to apply to some changes to trunk from this afternoon. Not
sure if it will apply cleanly to a 1.5.4 install, but in any case it's
easy enough to apply manually.) I am not sure whether MySQL will obey,
given that it doesn't seem to recognize it as a possible key, but it's
worth a try. (You might also try {{{FORCE INDEX (date_recorded)}}}.) You
could also consider running {{{ANALYZE TABLE}}} on your activity table, to
see if it jogs MySQL's memory.
I'm going to do some more analysis to see why we are joining the users
table here. At a glance, it doesn't look necessary. I don't think it's at
the root of your extreme slowness, but every little bit helps.
shanebp - Thanks for the data point :) If you're feeling brave, you could
apply the changes to your 1.2.9 installation manually - the logic in the
::get() method is not hugely change. You'd need to add the index-selection
block above line 131 in this file
https://buddypress.trac.wordpress.org/browser/tags/1.2.9/bp-activity/bp-
activity-classes.php#L123, and then change line 131 so that it includes
{$index_hint_sql} right after {$from_sql}. You can also apply the
date_recorded index manually, to line 95:
https://buddypress.trac.wordpress.org/browser/tags/1.2.9/bp-activity/bp-
activity-classes.php#L93. See 4045.02.diff for a guide (and BE CAREFUL! :)
)
--
Ticket URL: <https://buddypress.trac.wordpress.org/ticket/4045#comment:12>
BuddyPress <http://buddypress.org/>
BuddyPress
More information about the buddypress-trac
mailing list