1

新しい CentOS 6.4 サーバーに Percona 5.6 をインストールしました。これは、32 コア キセノン、72GB RAM、8x SAS RAID 10 セットアップの高速マシンです。ここまでは順調ですね

私の古いサーバーは少し強力ではなく、まだ MySQL 5.1 を実行していました。ですから、これはかなりのアップグレードでした。しかし、私は InnoDB でいくつかの問題を抱えています。いくつかのテーブルでインデックスを正しく使用していないようです。私の古いマシンでは、同じクエリが正常に実行されていました。

両方のサーバーに同じデータベースがあります。古いマシンで mysqldump を実行し、それを新しい Percona 5.6 サーバーにインポートしました。インデックスは同じままでした。両方のサーバーが同じ my.cnf 構成設定を使用します。

テーブル項目には次のインデックスがitem_id, item_format, item_privateあり、約 4,000 万行が含まれています。テーブル形式のインデックスは on:format_idで、約 250 行が含まれます。

SELECT 
i.item_name, i.item_key, i.item_date, f.format_long
FROM
items i, formats f
WHERE 
i.item_format = f.format_id
AND
i.item_private = 0 
ORDER BY 
i.item_id DESC LIMIT 8

私の古いサーバーでは、このクエリには約0.0003 seconds. 新しいサーバーでは、それが引き継ぎ100 secondsます。

OLD サーバーで EXPLAIN を使用してクエリを実行します。

+----+-------------+-------+--------+---------------+---------+---------+----------------------+------+-------------+
| id | select_type | table |  type  | possible_keys |   key   | key_len |         ref          | rows |    Extra    |
+----+-------------+-------+--------+---------------+---------+---------+----------------------+------+-------------+
|  1 | SIMPLE      | i     | index  | item_format   | PRIMARY |       4 | NULL                 |    8 | Using where |
|  1 | SIMPLE      | f     | eq_ref | PRIMARY       | PRIMARY |       4 | dbname.i.item_format |    1 |             |
+----+-------------+-------+--------+---------------+---------+---------+----------------------+------+-------------+

NEW [問題] サーバーで EXPLAIN を使用してクエリを実行します。

+----+-------------+-------+------+---------------+-------------+---------+--------------------+------+---------------------------------+
| id | select_type | table | type | possible_keys |     key     | key_len |        ref         | rows |              Extra              |
+----+-------------+-------+------+---------------+-------------+---------+--------------------+------+---------------------------------+
|  1 | SIMPLE      | f     | ALL  | PRIMARY       | NULL        | NULL    | NULL               |  219 | Using temporary; Using filesort |
|  1 | SIMPLE      | i     | ref  | item_format   | item_format | 4       | dbname.f.format_id | 3026 | Using where                     |
+----+-------------+-------+------+---------------+-------------+---------+--------------------+------+---------------------------------+

一時およびファイルソートを使用していることがわかります。これが速度低下の原因のようです。

この問題を解決する方法はありますか?

4

1 に答える 1