forum.bitel.ru http://forum.bitel.ru/ |
|
[5.2] Медленный запрос в checkResource (CRM) http://forum.bitel.ru/viewtopic.php?f=10&t=11872 |
Страница 1 из 1 |
Автор: | Cromeshnic [ 16 авг 2016, 15:00 ] |
Заголовок сообщения: | [5.2] Медленный запрос в checkResource |
Переоформляю договор с 12700 номерами phone. Судя по всему, это займёт часа 4 минимум. Смотрю по Innotop, вот такой запрос выполняется почти по секунде: Код: SELECT res.*, ruse.resource_id FROM number_resource_18 as res left join number_resource_use_18 as ruse on ruse.resource_id=res.id AND ('2016-07-01'>=ruse.date2) AND ('2016-07-01'<=ruse.date_reserve) and number='73952123456' having ruse.resource_id IS NOT NULL ORDER BY number; Запрос выполняется для каждого номера, поэтому 12700 секунд - это 3.5 часа. Запрос похоже отсюда: NumberResourceManager.checkResource(...) индексами не лечится, поскольку составлен по-дурацки: условия прописаны в having, а не во where, поэтому он сначала выбирает 100.000+ записей из number_resource_18 с Join-ом, а потом ищет, где что-то ненулевое приджоинилось. wtf??? Код: mysql> explain extended SELECT res.*, ruse.resource_id FROM number_resource_18 as res left join number_resource_use_18 as ruse on ruse.resource_id=res.id AND ('2016-07-01'>=ruse.date2) AND ('2016-07-01'<=ruse.date_reserve) and number='73952123456' having ruse.resource_id IS NOT NULL ORDER BY number;
+----+-------------+-------+------+------------------------------------------+-------------+---------+------------------+--------+----------+----------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------+------------------------------------------+-------------+---------+------------------+--------+----------+----------------+ | 1 | SIMPLE | res | ALL | NULL | NULL | NULL | NULL | 110825 | 100.00 | Using filesort | | 1 | SIMPLE | ruse | ref | resource_id,date_reserve,date2,dsi_check | resource_id | 4 | bgbilling.res.id | 1 | 100.00 | Using where | +----+-------------+-------+------+------------------------------------------+-------------+---------+------------------+--------+----------+----------------+ 2 rows in set, 1 warning (0.00 sec) |
Автор: | stark [ 16 авг 2016, 15:12 ] |
Заголовок сообщения: | Re: [5.2] Медленный запрос в checkResource (CRM) |
Там это возможно испортили, когда добавляли резервирование ресурсов. Посмотрим, передал тему разработчику . |
Автор: | Cromeshnic [ 16 авг 2016, 15:13 ] |
Заголовок сообщения: | Re: [5.2] Медленный запрос в checkResource (CRM) |
Клиент: вер. 5.2 сборка 1237 от 14.12.2015 13:56:40 os: Windows 7; java: Java HotSpot(TM) Client VM, v.1.8.0_101 ВНИМАНИЕ: Спецификация 1.8 не рекомендуется (поддерживается 1.6,1.7) Сервер: вер. 5.2 сборка 1643 от 02.11.2015 16:37:29 os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_26 phone вер. 5.2 сборка 285 от 13.10.2015 22:06:04 Стыдно конечно показывать свою 5.2 версию, но пока так. |
Автор: | Boris [ 16 авг 2016, 18:16 ] |
Заголовок сообщения: | Re: [5.2] Медленный запрос в checkResource (CRM) |
Выложил обновление. |
Автор: | Cromeshnic [ 14 окт 2016, 09:08 ] |
Заголовок сообщения: | Re: [5.2] Медленный запрос в checkResource (CRM) |
Обновились, переоформление с телефонами не сломалось, большие объёмы номеров не переоформляли ещё - проверить скорость не получится пока. Но по коду вроде всё ок, так что спасибо за фикс |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |