我刚安装了Percona的5.6我的新的CentOS 6.4的服务器上。 这是一个快速的机器32核心氙,72GB RAM,8X SAS RAID 10设置。 到现在为止还挺好
我的旧服务器是有点不那么强大,并运行MySQL 5.1依旧。 因此,这是相当的升级。 但我在使用InnoDB的一些问题,没有正确使用的一些表似乎索引。 当我的旧机器上的相同的查询都运行良好。
两个服务器具有相同的数据库。 我做的旧机器上的一个mysqldump和其导入到新的Percona 5.6服务器。 指数保持不变。 这两个服务器都使用相同的my.cnf配置设置。
表中的项目有指标: item_id, item_format, item_private
,包含约40万行。 表格式对指数: 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
。
查询与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 | |
+----+-------------+-------+--------+---------------+---------+---------+----------------------+------+-------------+
查询与EXPLAIN NEW [问题]服务器上。
+----+-------------+-------+------+---------------+-------------+---------+--------------------+------+---------------------------------+
| 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 |
+----+-------------+-------+------+---------------+-------------+---------+--------------------+------+---------------------------------+
你可以看到它使用临时和文件排序。 这似乎是缓慢的原因。
任何想法,我怎么能解决这个问题呢?