BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 28 мар 2024, 20:13

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: MySQL 5.7 и детализация трафика
СообщениеДобавлено: 02 окт 2018, 19:39 
Не в сети

Зарегистрирован: 20 окт 2016, 00:34
Сообщения: 82
Карма: 0
Добрый день.
Обновился тут с MySQL 5.6 до MySQL 5.7 и через некоторое время вылезла неприятная проблема,
в договоре вкладка Отчёты -> Inet, пытаюсь, например, сделать отчёт по истории сессий за прошлый месяц,
если выбираю что-либо из "Типы трафика", например: "Входящий трафик", "Исходящий трафик",
то запрос выполняется ну очень долго, чего раньше не наблюдалось.
Если же "Тип трафика" не выбирать, а выбирать "Услуги", то всё работает нормально - быстро.
Чуть изысканий.
Собственно запрос:
Код:
EXPLAIN SELECT detail.day, detail.trafficTypeId, SUM(detail.amount) FROM (
   SELECT detail.day, detail.hour, detail.trafficTypeId, detail.amount FROM inet_session_log_17_201809 as log
     LEFT JOIN inet_session_log_detail_17_201809 as detail
                          ON detail.sessionId=log.id
     LEFT JOIN inet_serv_17 as serv
       ON log.servId=serv.id
     WHERE (1 OR log.id=0)
                 AND detail.trafficTypeId>0
                 AND detail.trafficTypeId IN (0,1,2)
                 AND (0 OR serv.contractId=132667)
                 AND (0 OR detail.day>=1)
                 AND (0 OR detail.day<=30)
                 AND detail.day>0
                 AND detail.trafficTypeId>0
UNION ALL
  SELECT detail.day, detail.hour, detail.trafficTypeId, detail.amount FROM inet_session_17 as log
   LEFT JOIN inet_session_detail_17 as detail
     ON detail.sessionId=log.id
   LEFT JOIN inet_connection_17 as c
     ON c.id=log.connectionId
   LEFT JOIN inet_serv_17 as serv
     ON c.servId=serv.id
   WHERE (1 OR log.id=0)
               AND detail.trafficTypeId>0
               AND detail.trafficTypeId IN (0,1,2)
               AND (0 OR serv.contractId=132667)
               AND (0 OR detail.day>=1)
               AND (0 OR detail.day<=30)
               AND detail.day>0
               AND detail.trafficTypeId>0
               AND ((0 OR DATE(log.sessionStart)>='2018-09-01')
               AND (0 OR DATE(log.sessionStart)<='2018-09-30'))
  ) as detail
  GROUP BY day, trafficTypeId
  ORDER BY day


его EXPLAIN:
Код:
+----+-------------+------------+-----------------------------------------------------------------------------------------------------+--------+-------------------+---------+---------+---------------------------+---------+----------+---------------------------------+
| id | select_type | table      | partitions                                                                                          | type   | possible_keys     | key     | key_len | ref                       | rows    | filtered | Extra                           |
+----+-------------+------------+-----------------------------------------------------------------------------------------------------+--------+-------------------+---------+---------+---------------------------+---------+----------+---------------------------------+
|  1 | PRIMARY     | <derived2> | NULL                                                                                                | ALL    | NULL              | NULL    | NULL    | NULL                      |     565 |   100.00 | Using temporary; Using filesort |
|  2 | DERIVED     | detail     | p0,p1,p2,p3,p4,p5,p6,p7                                                                             | ALL    | PRIMARY           | NULL    | NULL    | NULL                      | 8618987 |     0.12 | Using where                     |
|  2 | DERIVED     | log        | p20180901,p20180904,p20180907,p20180910,p20180913,p20180916,p20180919,p20180922,p20180925,p20180928 | ref    | PRIMARY           | PRIMARY | 8       | internet.detail.sessionId |       1 |   100.00 | NULL                            |
|  2 | DERIVED     | serv       | NULL                                                                                                | eq_ref | PRIMARY           | PRIMARY | 4       | internet.log.servId       |       1 |     5.00 | Using where                     |
|  3 | UNION       | log        | p0,p1,p2,p3,p4,p5,p6,p7                                                                             | index  | NULL              | start   | 5       | NULL                      |   13908 |   100.00 | Using where; Using index        |
|  3 | UNION       | c          | p0,p1,p2,p3,p4,p5,p6,p7                                                                             | ref    | PRIMARY           | PRIMARY | 8       | internet.log.connectionId |       1 |   100.00 | NULL                            |
|  3 | UNION       | serv       | NULL                                                                                                | eq_ref | PRIMARY           | PRIMARY | 4       | internet.c.servId         |       1 |     5.00 | Using where                     |
|  3 | UNION       | detail     | p0,p1,p2,p3,p4,p5,p6,p7                                                                             | ref    | PRIMARY,sessionId | PRIMARY | 8       | internet.log.id           |      36 |     0.14 | Using where                     |
+----+-------------+------------+-----------------------------------------------------------------------------------------------------+--------+-------------------+---------+---------+---------------------------+---------+----------+---------------------------------+

(таблица текстом криво вставляется, так что прикрепил картинкой).
Собственно судя по всему для первой части вложенного запроса не используются индексы откуда и все тормоза.
Поиски в сети навели на optimizer_switch='derived_merge=off', но мне это не помогло.
Может кто скажет что можно попробовать покрутить со своей стороны или разработчики посмотрят что можно поменять в запросе (индексах в таблицах)?

MySQL 5.7.23 Community
inet: вер. 7.0.934 / 20.09.2018 22:11:40


Вложения:
explain.png
explain.png [ 19.17 КБ | Просмотров: 1565 ]

_________________
Клиент: вер. 7.1.206 / 15.08.2019 22:37:24
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_181
Сервер: вер. 7.1.1144 / 15.08.2019 22:39:22
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_181
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.073s | 22 Queries | GZIP : On ]