У меня есть сервер разработки, который я недавно обновил с 14.04 до 16.04.
У меня есть база данных 'алгебра', в которой хранятся данные для моего сайта algebra.com. Это веб-сайт с вопросами и ответами, в котором есть вопросы и ответы с отношением от 1 до N.
После обновления производительность точно таких же запросов к базе данных резко ухудшилась.
Например, запрос, объединяющий вопросы и ответы по идентификатору вопроса, занимал менее половины секунды. После обновления это займет минуту.
Поскольку это сервер разработки, я могу сравнить его с рабочим сервером, на котором все еще работает Ubuntu 14.04 и где тот же запрос занимает всего 0,38 секунды.
Вот планы запроса
mysql> explain SELECT
-> questions.id, questions.email, questions.topic, questions.question,
-> questions.date,
-> questions.deleted,
-> questions.is_spam,
-> questions.solved,
->
-> questions.tb_id,
-> questions.tb_isbn,
-> questions.tb_title,
-> questions.tb_edition,
-> questions.tb_chapter,
-> questions.tb_problem,
->
-> solutions.id, solutions.author author, solutions.date, solutions.answer
-> FROM questions, solutions
-> WHERE
-> questions.solved = 1
-> AND questions.id = solutions.question
-> AND questions.deleted != 1
-> AND questions.is_spam != 1
-> ORDER BY solutions.date DESC
-> LIMIT 50;
На "Хорошем Сервере":
+----+-------------+-----------+--------+-----------------------+---------+---------+----------------------------+--------+----------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-----------+--------+-----------------------+---------+---------+----------------------------+--------+----------------+
| 1 | SIMPLE | solutions | ALL | solutions_by_question | NULL | NULL | NULL | 650770 | Using filesort |
| 1 | SIMPLE | questions | eq_ref | PRIMARY | PRIMARY | 4 | algebra.solutions.question | 1 | Using where |
+----+-------------+-----------+--------+-----------------------+---------+---------+----------------------------+--------+----------------+
2 rows in set (0.00 sec)
На «Плохом сервере»:
+----+-------------+-----------+------------+------+-----------------------+-----------------------+---------+----------------------+--------+----------+----------------------------------------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-----------+------------+------+-----------------------+-----------------------+---------+----------------------+--------+----------+----------------------------------------------+
| 1 | SIMPLE | questions | NULL | ALL | PRIMARY | NULL | NULL | NULL | 482186 | 8.10 | Using where; Using temporary; Using filesort |
| 1 | SIMPLE | solutions | NULL | ref | solutions_by_question | solutions_by_question | 4 | algebra.questions.id | 1 | 100.00 | Using index condition |
+----+-------------+-----------+------------+------+-----------------------+-----------------------+---------+----------------------+--------+----------+----------------------------------------------+
Содержимое базы данных более или менее одинаково, база данных разработки является резервной копией сервера с прошлой ночи.
Любые идеи, где я могу начать это понижение производительности понижения погони?
Спасибо!