BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 21 окт 2021, 12:08

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




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: [5.2] Медленный запрос в checkResource
СообщениеДобавлено: 16 авг 2016, 15:00 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Переоформляю договор с 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)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 авг 2016, 15:12 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Там это возможно испортили, когда добавляли резервирование ресурсов. Посмотрим, передал тему разработчику .


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 авг 2016, 15:13 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Клиент: вер. 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 версию, но пока так.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 авг 2016, 18:16 
Не в сети
Разработчик

Зарегистрирован: 27 мар 2008, 17:10
Сообщения: 301
Карма: 27
Выложил обновление.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 окт 2016, 09:08 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Обновились, переоформление с телефонами не сломалось, большие объёмы номеров не переоформляли ещё - проверить скорость не получится пока.
Но по коду вроде всё ок, так что спасибо за фикс :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

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


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

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


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

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