Anomie moved this task from Unsorted to Needs details or plan on the MediaWiki-API board. Anomie edited projects, added Core Platform Team Workboards (Clinic Duty Team), DBA; removed Core Platform Team. Anomie added a comment.
The query in question is SELECT rc_id,rc_timestamp,rc_namespace,rc_title,rc_cur_id,rc_type,rc_deleted,rc_this_oldid,rc_last_oldid,rc_minor,rc_type,rc_bot,rc_old_len,rc_new_len,rc_logid,rc_log_type,rc_log_action,rc_params,(SELECT GROUP_CONCAT(ctd_name SEPARATOR ',') FROM `change_tag` JOIN `change_tag_def` ON ((ct_tag_id=ctd_id)) WHERE ct_rc_id=rc_id ) AS `ts_tags`,page_is_redirect,comment_rc_comment.comment_text AS `rc_comment_text`,comment_rc_comment.comment_data AS `rc_comment_data`,comment_rc_comment.comment_id AS `rc_comment_cid`,actor_rc_user.actor_user AS `rc_user`,actor_rc_user.actor_name AS `rc_user_text`,rc_actor FROM `recentchanges` LEFT JOIN `page` ON ((rc_namespace=page_namespace) AND (rc_title=page_title)) JOIN `comment` `comment_rc_comment` ON ((comment_rc_comment.comment_id = rc_comment_id)) JOIN `actor` `actor_rc_user` ON ((actor_rc_user.actor_id = rc_actor)) WHERE rc_type IN (0,1,3,6) AND (page_is_redirect = 1) ORDER BY rc_timestamp DESC,rc_id DESC LIMIT 6 It looks like it's another situation where the database decides to pick a poor plan: wikiadmin@10.64.16.85(wikidatawiki)> explain SELECT rc_id,rc_timestamp,rc_namespace,rc_title,rc_cur_id,rc_type,rc_deleted,rc_this_oldid,rc_last_oldid,rc_minor,rc_type,rc_bot,rc_old_len,rc_new_len,rc_logid,rc_log_type,rc_log_action,rc_params,(SELECT GROUP_CONCAT(ctd_name SEPARATOR ',') FROM `change_tag` JOIN `change_tag_def` ON ((ct_tag_id=ctd_id)) WHERE ct_rc_id=rc_id ) AS `ts_tags`,page_is_redirect,comment_rc_comment.comment_text AS `rc_comment_text`,comment_rc_comment.comment_data AS `rc_comment_data`,comment_rc_comment.comment_id AS `rc_comment_cid`,actor_rc_user.actor_user AS `rc_user`,actor_rc_user.actor_name AS `rc_user_text`,rc_actor FROM `recentchanges` LEFT JOIN `page` ON ((rc_namespace=page_namespace) AND (rc_title=page_title)) JOIN `comment` `comment_rc_comment` ON ((comment_rc_comment.comment_id = rc_comment_id)) JOIN `actor` `actor_rc_user` ON ((actor_rc_user.actor_id = rc_actor)) WHERE rc_type IN (0,1,3,6) AND (page_is_redirect = 1) ORDER BY rc_timestamp DESC,rc_id DESC LIMIT 6; +------+--------------------+--------------------+--------+------------------------------------------------------------------------------------+------------------------------+---------+---------------------------------------------------------------+---------+---------------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +------+--------------------+--------------------+--------+------------------------------------------------------------------------------------+------------------------------+---------+---------------------------------------------------------------+---------+---------------------------------+ | 1 | PRIMARY | page | ref | name_title,page_redirect_namespace_len | page_redirect_namespace_len | 1 | const | 5662884 | Using temporary; Using filesort | | 1 | PRIMARY | recentchanges | ref | rc_name_type_patrolled_timestamp,rc_ns_actor,rc_actor,rc_namespace_title_timestamp | rc_namespace_title_timestamp | 261 | wikidatawiki.page.page_namespace,wikidatawiki.page.page_title | 1 | Using where | | 1 | PRIMARY | actor_rc_user | eq_ref | PRIMARY | PRIMARY | 8 | wikidatawiki.recentchanges.rc_actor | 1 | | | 1 | PRIMARY | comment_rc_comment | eq_ref | PRIMARY | PRIMARY | 8 | wikidatawiki.recentchanges.rc_comment_id | 1 | | | 2 | DEPENDENT SUBQUERY | change_tag | ref | change_tag_rc_tag_id,change_tag_tag_id_id | change_tag_rc_tag_id | 5 | wikidatawiki.recentchanges.rc_id | 1 | Using index | | 2 | DEPENDENT SUBQUERY | change_tag_def | eq_ref | PRIMARY | PRIMARY | 4 | wikidatawiki.change_tag.ct_tag_id | 1 | | +------+--------------------+--------------------+--------+------------------------------------------------------------------------------------+------------------------------+---------+---------------------------------------------------------------+---------+---------------------------------+ This particular query does much better if we ignore the `page_redirect_namespace_len` index: wikiadmin@10.64.48.151(wikidatawiki)> explain SELECT rc_id,rc_timestamp,rc_namespace,rc_title,rc_cur_id,rc_type,rc_deleted,rc_this_oldid,rc_last_oldid,rc_minor,rc_type,rc_bot,rc_old_len,rc_new_len,rc_logid,rc_log_type,rc_log_action,rc_params,(SELECT GROUP_CONCAT(ctd_name SEPARATOR ',') FROM `change_tag` JOIN `change_tag_def` ON ((ct_tag_id=ctd_id)) WHERE ct_rc_id=rc_id ) AS `ts_tags`,page_is_redirect,comment_rc_comment.comment_text AS `rc_comment_text`,comment_rc_comment.comment_data AS `rc_comment_data`,comment_rc_comment.comment_id AS `rc_comment_cid`,actor_rc_user.actor_user AS `rc_user`,actor_rc_user.actor_name AS `rc_user_text`,rc_actor FROM `recentchanges` LEFT JOIN `page` ignore index (page_redirect_namespace_len) ON ((rc_namespace=page_namespace) AND (rc_title=page_title)) JOIN `comment` `comment_rc_comment` ON ((comment_rc_comment.comment_id = rc_comment_id)) JOIN `actor` `actor_rc_user` ON ((actor_rc_user.actor_id = rc_actor)) WHERE rc_type IN (0,1,3,6) AND (page_is_redirect = 1) ORDER BY rc_timestamp DESC,rc_id DESC LIMIT 6; +------+--------------------+--------------------+--------+------------------------------------------------------------------------------------+----------------------+---------+-----------------------------------------------------------------------------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +------+--------------------+--------------------+--------+------------------------------------------------------------------------------------+----------------------+---------+-----------------------------------------------------------------------------+------+-------------+ | 1 | PRIMARY | recentchanges | index | rc_name_type_patrolled_timestamp,rc_ns_actor,rc_actor,rc_namespace_title_timestamp | rc_timestamp | 16 | NULL | 6 | Using where | | 1 | PRIMARY | actor_rc_user | eq_ref | PRIMARY | PRIMARY | 8 | wikidatawiki.recentchanges.rc_actor | 1 | | | 1 | PRIMARY | page | eq_ref | name_title | name_title | 261 | wikidatawiki.recentchanges.rc_namespace,wikidatawiki.recentchanges.rc_title | 1 | Using where | | 1 | PRIMARY | comment_rc_comment | eq_ref | PRIMARY | PRIMARY | 8 | wikidatawiki.recentchanges.rc_comment_id | 1 | | | 2 | DEPENDENT SUBQUERY | change_tag | ref | change_tag_rc_tag_id,change_tag_tag_id_id | change_tag_rc_tag_id | 5 | wikidatawiki.recentchanges.rc_id | 1 | Using index | | 2 | DEPENDENT SUBQUERY | change_tag_def | eq_ref | PRIMARY | PRIMARY | 4 | wikidatawiki.change_tag.ct_tag_id | 1 | | +------+--------------------+--------------------+--------+------------------------------------------------------------------------------------+----------------------+---------+-----------------------------------------------------------------------------+------+-------------+ wikiadmin@10.64.48.151(wikidatawiki)> SELECT rc_id,rc_timestamp,rc_namespace,rc_title,rc_cur_id,rc_type,rc_deleted,rc_this_oldid,rc_last_oldid,rc_minor,rc_type,rc_bot,rc_old_len,rc_new_len,rc_logid,rc_log_type,rc_log_action,rc_params,(SELECT GROUP_CONCAT(ctd_name SEPARATOR ',') FROM `change_tag` JOIN `change_tag_def` ON ((ct_tag_id=ctd_id)) WHERE ct_rc_id=rc_id ) AS `ts_tags`,page_is_redirect,comment_rc_comment.comment_text AS `rc_comment_text`,comment_rc_comment.comment_data AS `rc_comment_data`,comment_rc_comment.comment_id AS `rc_comment_cid`,actor_rc_user.actor_user AS `rc_user`,actor_rc_user.actor_name AS `rc_user_text`,rc_actor FROM `recentchanges` LEFT JOIN `page` ignore index (page_redirect_namespace_len) ON ((rc_namespace=page_namespace) AND (rc_title=page_title)) JOIN `comment` `comment_rc_comment` ON ((comment_rc_comment.comment_id = rc_comment_id)) JOIN `actor` `actor_rc_user` ON ((actor_rc_user.actor_id = rc_actor)) WHERE rc_type IN (0,1,3,6) AND (page_is_redirect = 1) ORDER BY rc_timestamp DESC,rc_id DESC LIMIT 6; [...] 6 rows in set (0.04 sec) wikiadmin@10.64.48.151(wikidatawiki)> show status like 'Hand%'; +----------------------------+-------+ | Variable_name | Value | +----------------------------+-------+ | Handler_commit | 2 | | Handler_delete | 0 | | Handler_discover | 0 | | Handler_external_lock | 0 | | Handler_icp_attempts | 0 | | Handler_icp_match | 0 | | Handler_mrr_init | 0 | | Handler_mrr_key_refills | 0 | | Handler_mrr_rowid_refills | 0 | | Handler_prepare | 0 | | Handler_read_first | 0 | | Handler_read_key | 1735 | | Handler_read_last | 1 | | Handler_read_next | 6 | | Handler_read_prev | 908 | | Handler_read_retry | 0 | | Handler_read_rnd | 0 | | Handler_read_rnd_deleted | 0 | | Handler_read_rnd_next | 0 | | Handler_rollback | 0 | | Handler_savepoint | 0 | | Handler_savepoint_rollback | 0 | | Handler_tmp_update | 0 | | Handler_tmp_write | 0 | | Handler_update | 0 | | Handler_write | 0 | +----------------------------+-------+ TASK DETAIL https://phabricator.wikimedia.org/T245989 WORKBOARD https://phabricator.wikimedia.org/project/board/200/ EMAIL PREFERENCES https://phabricator.wikimedia.org/settings/panel/emailpreferences/ To: Anomie Cc: Anomie, Aklapper, pywikibot-bugs-list, Dvorapa, Zkhalido, Iflorez, darthmon_wmde, WDoranWMF, Viztor, DannyS712, Nandana, Wenyi, Amorymeltzer, Lahi, Gq86, GoranSMilovanovic, QZanden, Tbscho, MayS, Marostegui, LawExplorer, Sethakill, Minhnv-2809, Mdupont, JJMC89, dg711, _jensen, rosalieper, Altostratus, Avicennasis, Scott_WUaS, Pchelolo, mys_721tx, Wikidata-bugs, aude, jayvdb, Masti, Alchimista, Mbch331, Rxy, Jay8g, Krenair, Legoktm, holger.knust, EvanProdromou, Agabi10
_______________________________________________ Wikidata-bugs mailing list Wikidata-bugs@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikidata-bugs