[wp-trac] [WordPress Trac] #16894: Bulk load Comment Meta upon access

WordPress Trac wp-trac at lists.automattic.com
Sat Mar 19 11:19:28 UTC 2011


#16894: Bulk load Comment Meta upon access
--------------------------+-------------------------------------
 Reporter:  dd32          |      Owner:
     Type:  defect (bug)  |     Status:  new
 Priority:  normal        |  Milestone:  Future Release
Component:  Performance   |    Version:  3.1
 Severity:  normal        |   Keywords:  needs-patch 2nd-opinion
--------------------------+-------------------------------------
 When we query posts, we bulk load all of the posts meta and taxonomies at
 the time of request. Since adding comment meta, we load the comment meta
 on-the-fly since nothing really currently uses it in core.

 I've added a filter to ''get_comment_text'' which modifies the comment
 content based on the value of a meta key.

 The problem arises when multiple comments are displayed on a page, The
 metadata for every comment is loaded individually:

 {{{
 SELECT comment_id, meta_key, meta_value FROM wp_commentmeta WHERE
 comment_id IN (4)
 SELECT comment_id, meta_key, meta_value FROM wp_commentmeta WHERE
 comment_id IN (5)
 SELECT comment_id, meta_key, meta_value FROM wp_commentmeta WHERE
 comment_id IN (6)
 SELECT comment_id, meta_key, meta_value FROM wp_commentmeta WHERE
 comment_id IN (7)
 SELECT comment_id, meta_key, meta_value FROM wp_commentmeta WHERE
 comment_id IN (34)
 SELECT comment_id, meta_key, meta_value FROM wp_commentmeta WHERE
 comment_id IN (35)
 SELECT comment_id, meta_key, meta_value FROM wp_commentmeta WHERE
 comment_id IN (37)
 }}}

 in all cases, the function stack is:
 {{{
 comments_template, wp_list_comments, Walker->paged_walk,
 Walker_Comment->display_element, Walker->display_element,
 call_user_func_array, Walker_Comment->start_el, call_user_func,
 twentyten_comment, comment_text, get_comment_text, apply_filters,
 call_user_func_array, MY_FUNCTION_HOOKED_TO_GET_COMMENT_TEXT,
 get_comment_meta, get_metadata, update_meta_cache #12 (0.7ms)
 }}}

 It isn't ideal that every comment causes an extra query, instead, we
 should bulk load comment meta for the comments being displayed.

 However, Since comment meta is not always used, in order to keep the load
 down, I'd suggest that we only bulk load the comment meta '''on the first
 request for comment meta''', this should allow current users to have no
 detrimental affect on query count/performance, whilst allowing those who
 use comment meta to manage each comment better performance.

-- 
Ticket URL: <http://core.trac.wordpress.org/ticket/16894>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software


More information about the wp-trac mailing list