Page MenuHomePhabricator

$wgActorTableSchemaMigrationStage = SCHEMA_COMPAT_NEW; brings down translatewiki.net
Closed, ResolvedPublic

Description

EXPLAIN SELECT /* MessageCache::loadFromDB(en)-small X.Y.Z.Ö */ rev_id,rev_page,rev_timestamp,rev_minor_edit,rev_deleted,rev_len,rev_parent_id,rev_sha1,comment_rev_comment.comment_text AS `rev_comment_text`,comment_rev_comment.comment_data AS `rev_comment_data`,comment_rev_comment.comment_id AS `rev_comment_cid`,actor_rev_user.actor_user AS `rev_user`,actor_rev_user.actor_name AS `rev_user_text`,temp_rev_user.revactor_actor AS `rev_actor`,page_namespace,page_title,page_id,page_latest,page_is_redirect,page_len,user_name FROM `bw_revision` JOIN `bw_revision_comment_temp` `temp_rev_comment` ON ((temp_rev_comment.revcomment_rev = rev_id)) JOIN `bw_comment` `comment_rev_comment` ON ((comment_rev_comment.comment_id = temp_rev_comment.revcomment_comment_id)) JOIN `bw_revision_actor_temp` `temp_rev_user` ON ((temp_rev_user.revactor_rev = rev_id)) JOIN `bw_actor` `actor_rev_user` ON ((actor_rev_user.actor_id = temp_rev_user.revactor_actor)) JOIN `bw_page` ON ((page_id = rev_page)) LEFT JOIN `bw_user` ON ((actor_rev_user.actor_user != 0) AND (user_id = actor_rev_user.actor_user)) WHERE page_is_redirect = '0' AND page_namespace = '8' AND (page_title NOT LIKE '%/%' ESCAPE '`' ) AND (page_len <= 10000) AND (page_latest = rev_id):

*** row 1 ***
          table:  actor_rev_user
           type:  ALL
  possible_keys:  PRIMARY
            key:  NULL
        key_len:  NULL
            ref:  NULL
           rows:  20899
          Extra:  NULL
*** row 2 ***
          table:  bw_user
           type:  eq_ref
  possible_keys:  PRIMARY
            key:  PRIMARY
        key_len:  4
            ref:  translatewiki_net.actor_rev_user.actor_user
           rows:  1
          Extra:  Using where
*** row 3 ***
          table:  temp_rev_user
           type:  ref
  possible_keys:  PRIMARY,revactor_rev,actor_timestamp
            key:  actor_timestamp
        key_len:  8
            ref:  translatewiki_net.actor_rev_user.actor_id
           rows:  116
          Extra:  Using index
*** row 4 ***
          table:  bw_revision
           type:  eq_ref
  possible_keys:  PRIMARY,rev_id,page_timestamp,page_user_timestamp
            key:  rev_id
        key_len:  4
            ref:  translatewiki_net.temp_rev_user.revactor_rev
           rows:  1
          Extra:  NULL
*** row 5 ***
          table:  bw_page
           type:  eq_ref
  possible_keys:  PRIMARY,name_title,page_len,page_redirect_namespace_len
            key:  PRIMARY
        key_len:  4
            ref:  translatewiki_net.bw_revision.rev_page
           rows:  1
          Extra:  Using where
*** row 6 ***
          table:  temp_rev_comment
           type:  ref
  possible_keys:  PRIMARY,revcomment_rev
            key:  PRIMARY
        key_len:  4
            ref:  translatewiki_net.temp_rev_user.revactor_rev
           rows:  1
          Extra:  Using index
*** row 7 ***
          table:  comment_rev_comment
           type:  eq_ref
  possible_keys:  PRIMARY
            key:  PRIMARY
        key_len:  8
            ref:  translatewiki_net.temp_rev_comment.revcomment_comment_id
           rows:  1
          Extra:  NULL

Event Timeline

For comparison, this is the query with SCHEMA_COMPAT_READ_OLD:

MariaDB [translatewiki_net]> EXPLAIN SELECT  rev_id,rev_page,rev_timestamp,rev_minor_edit,rev_deleted,rev_len,rev_parent_id,rev_sha1,comment_rev_comment.comment_text AS `rev_comment_text`,comment_rev_comment.comment_data AS `rev_comment_data`,comment_rev_comment.comment_id AS `rev_comment_cid`,rev_user,rev_user_text,NULL AS `rev_actor`,page_namespace,page_title,page_id,page_latest,page_is_redirect,page_len,user_name  FROM `bw_revision` JOIN `bw_revision_comment_temp` `temp_rev_comment` ON ((temp_rev_comment.revcomment_rev = rev_id)) JOIN `bw_comment` `comment_rev_comment` ON ((comment_rev_comment.comment_id = temp_rev_comment.revcomment_comment_id)) JOIN `bw_page` ON ((page_id = rev_page)) LEFT JOIN `bw_user` ON ((rev_user != 0) AND (user_id = rev_user))   WHERE page_is_redirect = '0' AND page_namespace = '8' AND (page_title NOT LIKE '%/%' ESCAPE '`' ) AND (page_len <= 10000) AND (page_latest = rev_id)\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: bw_page
         type: ref
possible_keys: PRIMARY,name_title,page_len,page_redirect_namespace_len
          key: name_title
      key_len: 4
          ref: const
         rows: 3057427
        Extra: Using index condition; Using where
*************************** 2. row ***************************
           id: 1
  select_type: SIMPLE
        table: bw_revision
         type: eq_ref
possible_keys: PRIMARY,rev_id,page_timestamp,page_user_timestamp
          key: PRIMARY
      key_len: 8
          ref: translatewiki_net.bw_page.page_id,translatewiki_net.bw_page.page_latest
         rows: 1
        Extra: 
*************************** 3. row ***************************
           id: 1
  select_type: SIMPLE
        table: bw_user
         type: eq_ref
possible_keys: PRIMARY
          key: PRIMARY
      key_len: 4
          ref: translatewiki_net.bw_revision.rev_user
         rows: 1
        Extra: Using where
*************************** 4. row ***************************
           id: 1
  select_type: SIMPLE
        table: temp_rev_comment
         type: ref
possible_keys: PRIMARY,revcomment_rev
          key: PRIMARY
      key_len: 4
          ref: translatewiki_net.bw_page.page_latest
         rows: 1
        Extra: Using index
*************************** 5. row ***************************
           id: 1
  select_type: SIMPLE
        table: comment_rev_comment
         type: eq_ref
possible_keys: PRIMARY
          key: PRIMARY
      key_len: 8
          ref: translatewiki_net.temp_rev_comment.revcomment_comment_id
         rows: 1
        Extra: 
5 rows in set (0.00 sec)

Change 532433 had a related patch set uploaded (by Anomie; owner: Anomie):
[mediawiki/core@master] MessageCache: Add STRAIGHT_JOIN to avoid planner oddness

https://gerrit.wikimedia.org/r/532433

Change 532433 merged by jenkins-bot:
[mediawiki/core@master] MessageCache: Add STRAIGHT_JOIN to avoid planner oddness

https://gerrit.wikimedia.org/r/532433