Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Производительность MySQL / 5 сообщений из 5, страница 1 из 1
14.10.2014, 00:01:43
    #38775732
Ralfeus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность MySQL
Здравствуйте
Есть у меня вопрос по производительности MySQL (точнее - MariaDB). На сервере живет база магазина. Довольно часто MySQL подтормаживает и жрет процессор на все 100%. При этом в лог mysql-slow сыпятся запросы, выполняемые без индексов. В основном это один и тот же запрос с разными аргументами вроде такого:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT  COUNT(DISTINCT p.product_id) AS total
FROM
  product p
  LEFT JOIN product_description pd ON (p.product_id = pd.product_id)
  LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id)
  LEFT JOIN product_to_category p2c ON (p.product_id = p2c.product_id)
WHERE
  p.date_available <= '2014-10-13 13:00:00'
  AND pd.language_id = '3'
  AND p.status = '1'
  AND p2s.store_id = '0' AND (p2c.category_id = '327')



Для всех полей, по которым делается поиск или join есть индексы. При этом EXPLAIN для этого запроса дает такой результат:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
+----+-------------+-------+--------+-------------------------------+---------+---------+----------------------+-------+----------+--------------------------+
| id | select_type | table | type   | possible_keys                 | key     | key_len | ref                  | rows  | filtered | Extra                    |
+----+-------------+-------+--------+-------------------------------+---------+---------+----------------------+-------+----------+--------------------------+
|  1 | SIMPLE      | p     | ref    | PRIMARY,status,date_available | status  | 1       | const                | 30866 |   100.00 | Using where              |
|  1 | SIMPLE      | p2s   | eq_ref | PRIMARY                       | PRIMARY | 8       | p.product_id,const   |     1 |   100.00 | Using where; Using index |
|  1 | SIMPLE      | p2c   | eq_ref | PRIMARY                       | PRIMARY | 8       | p.product_id,const   |     1 |   100.00 | Using where; Using index |
|  1 | SIMPLE      | pd    | eq_ref | PRIMARY                       | PRIMARY | 8       | p2s.product_id,const |     1 |   100.00 | Using where; Using index |
+----+-------------+-------+--------+-------------------------------+---------+---------+----------------------+-------+----------+--------------------------+



Из результата я понимаю, что поиска по всем записям не делается, а везде используются индексы. Почему тогда пишется в лог? Я чтого не вижу?
Прошу ткнуть пальцем
...
Рейтинг: 0 / 0
14.10.2014, 00:21:14
    #38775737
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность MySQL
Ralfeus,

Замените все LEFT JOIN на JOIN и посмотрите новое время выполнения и план.

Еще, возможно, поможет индекс (status, date_available) на таблице product. Впрочем, это зависит от плана, который получится в предыдущем пункте.
...
Рейтинг: 0 / 0
14.10.2014, 22:43:29
    #38776723
sbacfis76
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность MySQL
Ralfeus,

не пойму, еще раз
...
Рейтинг: 0 / 0
15.10.2014, 11:42:51
    #38777093
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность MySQL
авторИз результата я понимаю, что поиска по всем записям не делается, а везде используются индексы. Почему тогда пишется в лог? Я чтого не вижу?
ну например не видите в конфиге log-queries-not-using-indexes
30 тыс как бы не очень то и много. хотя и план выглядит плохим - индекс по product.status низкоселективный наверняка
...
Рейтинг: 0 / 0
15.10.2014, 13:28:07
    #38777286
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Производительность MySQL
Ralfeus ,

На сколько я помню, в slow query log пишутся тупо медленные запросы -- работающие больше определённого времени.

тут
http://dev.mysql.com/doc/refman/5.7/en/slow-query-log.html

видимо явное этому подтверждение.
Поэтому не понятно, чему ты удивляешься.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Производительность MySQL / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]