[前][次][番号順一覧][スレッド一覧]

mysql:15477

From: 秋元 訓 <秋元 訓 <akimoto@xxxxxxxxxx>>
Date: Fri, 14 Jan 2011 12:11:40 +0900
Subject: [mysql 15477] ALTER TABLE ENGINEを実行後の内部処理の変化について質問

はじめまして、秋元と申します。

MySQL(InnoDB)+オープンソースのSugarCRMを使用しており、
メンテナンスとして次のコマンドをmysql上で実行した所、極端に処理が重くな
りました。

 > ALTER TABLE accounts ENGINE = 'InnoDB';
 (DB内の全てのテーブルに対し実行)


調べてみるとテンポラリファイル(/tmp/に4.2GB程のMyISAMファイル)を都度生成
していました。
show processlistなどより問題のSQLクエリを探し出し、EXPLAINを掛けてみた所
メンテ前とメンテ後ではEXPLAINの結果に次の相違点がある事が解りました。
・Extraの部分に、Using temporary; Using filesort が付く様になった
・対象tableの順番が1番目と2番目が入れ替わっている
・使用されているkeyが異なっている

ALTER TABLE〜を掛けると、MySQLの内部処理の順番やテンポラリテーブルを使用
する/しないなど、変わる物なのでしょうか?



---EXPLAINの結果の為、行が長くなっております---
■メンテ前EXPLAIN結果
+----+--------------------+------------------+--------+---------------------------------------------------------------------------------+-----------------------+---------+---------------------------------------+-------+-------------+
| id | select_type        | table            | type   | possible_keys                                                                   | key                   | key_len | ref                                   | rows  | Extra       |
+----+--------------------+------------------+--------+---------------------------------------------------------------------------------+-----------------------+---------+---------------------------------------+-------+-------------+
|  1 | PRIMARY            | contacts         | ref    | idx_contacts_del_last,idx_cont_del_reports,idx_team_del_id_user,idx_del_id_user | idx_contacts_del_last | 2       | const                                 | 61185 | Using where | 
|  1 | PRIMARY            | team_memberships | ref    | idx_team_membership,idx_teammemb_team_user                                      | idx_team_membership   | 218     | const,sugarcrm_db.contacts.team_id    |     1 | Using where | 
|  1 | PRIMARY            | contacts_cstm    | eq_ref | PRIMARY                                                                         | PRIMARY               | 108     | sugarcrm_db.contacts.id               |     1 |             | 
|  1 | PRIMARY            | jtl0             | ref    | idx_contid_del_accid                                                            | idx_contid_del_accid  | 112     | sugarcrm_db.contacts.id,const         |     1 | Using index | 
|  1 | PRIMARY            | accounts         | eq_ref | PRIMARY,idx_accnt_id_del,idx_accnt_assigned_del                                 | PRIMARY               | 108     | sugarcrm_db.jtl0.account_id           |     1 |             | 
|  1 | PRIMARY            | jt1              | eq_ref | PRIMARY                                                                         | PRIMARY               | 108     | sugarcrm_db.contacts.assigned_user_id |     1 |             | 
|  2 | DEPENDENT SUBQUERY | eabr             | ref    | idx_email_address_id,idx_bean_id                                                | idx_bean_id           | 108     | func                                  |     1 | Using where | 
|  2 | DEPENDENT SUBQUERY | ea               | eq_ref | PRIMARY,idx_ea_opt_out_invalid                                                  | PRIMARY               | 108     | sugarcrm_db.eabr.email_address_id     |     1 | Using where | 
+----+--------------------+------------------+--------+---------------------------------------------------------------------------------+-----------------------+---------+---------------------------------------+-------+-------------+
8 rows in set (0.13 sec)

■メンテ後EXPLAIN結果
+----+--------------------+------------------+--------+---------------------------------------------------------------------------------+----------------------+---------+--------------------------------------------+------+----------------------------------------------+
| id | select_type        | table            | type   | possible_keys                                                                   | key                  | key_len | ref                                        | rows | Extra                                        |
+----+--------------------+------------------+--------+---------------------------------------------------------------------------------+----------------------+---------+--------------------------------------------+------+----------------------------------------------+
|  1 | PRIMARY            | team_memberships | ref    | idx_team_membership,idx_teammemb_team_user                                      | idx_team_membership  | 109     | const                                      |   69 | Using where; Using temporary; Using filesort | 
|  1 | PRIMARY            | contacts         | ref    | idx_contacts_del_last,idx_cont_del_reports,idx_team_del_id_user,idx_del_id_user | idx_team_del_id_user | 111     | sugarcrm_db.team_memberships.team_id,const |  467 | Using where                                  | 
|  1 | PRIMARY            | contacts_cstm    | eq_ref | PRIMARY                                                                         | PRIMARY              | 108     | sugarcrm_db.contacts.id                    |    1 |                                              | 
|  1 | PRIMARY            | jtl0             | ref    | idx_contid_del_accid                                                            | idx_contid_del_accid | 112     | sugarcrm_db.contacts.id,const              |    1 | Using index                                  | 
|  1 | PRIMARY            | accounts         | eq_ref | PRIMARY,idx_accnt_id_del,idx_accnt_assigned_del                                 | PRIMARY              | 108     | sugarcrm_db.jtl0.account_id                |    1 |                                              | 
|  1 | PRIMARY            | jt1              | eq_ref | PRIMARY                                                                         | PRIMARY              | 108     | sugarcrm_db.contacts.assigned_user_id      |    1 |                                              | 
|  2 | DEPENDENT SUBQUERY | eabr             | ref    | idx_email_address_id,idx_bean_id                                                | idx_bean_id          | 108     | func                                       |    1 | Using where                                  | 
|  2 | DEPENDENT SUBQUERY | ea               | eq_ref | PRIMARY,idx_ea_opt_out_invalid                                                  | PRIMARY              | 108     | sugarcrm_db.eabr.email_address_id          |    1 | Using where                                  | 
+----+--------------------+------------------+--------+---------------------------------------------------------------------------------+----------------------+---------+--------------------------------------------+------+----------------------------------------------+



■環境
MySQL:5.1.3
       InnoDBの実データは共有ファイル(ibdata1)内に存在
PHP:5.2.9
OS:CentOS5.3 32bit
連携しているアプリ:SugarCRM


以上、宜しくお願い致します。

-----
秋元 訓  akimoto@xxxxxxxxxx


[前][次][番号順一覧][スレッド一覧]