Когда будем оптимизировать движок биллинга?

Технические вопросы по UTM 5.0
Ответить
Аватара пользователя
Magnum72
Сообщения: 1947
Зарегистрирован: Чт сен 22, 2005 06:54
Контактная информация:

Когда будем оптимизировать движок биллинга?

Сообщение Magnum72 »

Вот два одинаковых по результату запроса. Первый это тот что исполняется биллингом при выборе всех пользователей с определенным тарифным планом, второй это тот же первый но доработан напильником. Время исполнения первого около 30-40 минут на базе из 3500 пользователей при этом блокируются таблицы в
биллинге, время исполнения второго меньше секунды.

SELECT users.id, users.login, users.basic_account, users.full_name, accounts.is_blocked
FROM users
LEFT JOIN users_accounts ON users.id=users_accounts.uid
LEFT JOIN accounts ON users_accounts.account_id=accounts.id
LEFT JOIN account_tariff_link ON accounts.id=account_tariff_link.account_id
WHERE ((users.is_deleted='0')
AND (accounts.is_deleted='0'))
AND ((account_tariff_link.tariff_id = '60'
AND account_tariff_link.is_deleted = '0') )


SELECT users.id, users.login, users.basic_account, users.full_name, accounts.is_blocked
FROM users, users_accounts, accounts, account_tariff_link
WHERE users.is_deleted='0'
and users.id=users_accounts.uid
and accounts.id=account_tariff_link.account_id
AND accounts.is_deleted='0'
and users_accounts.account_id=accounts.id
AND account_tariff_link.tariff_id='60'
AND account_tariff_link.is_deleted = '0'

Аватара пользователя
Magnum72
Сообщения: 1947
Зарегистрирован: Чт сен 22, 2005 06:54
Контактная информация:

Сообщение Magnum72 »

Второе: Какой глубокий смысл индекса у таблиц discount_tranzaction*
если количество записей индекса равно количеству записей в таблице. Если для сортировки то насколько я понимаю сортируется результат в админке. И бесполезно использовать индексацию поля даты так как это почти уникальная запись а в связке с другими полями абсолютно уникальная. Короче грохнул я эти индексы, создал свой, выгода: выбока идет быстрее, инсерты идут быстрее так как обновляется индекс по 1 полю а у тройной, и размер таблицы уменьшился почти в два раза что привело к дополнительному росту быстродействия из-за уменьшения дисковых операций.

Третье: Таблица dhs.session.log была без индексов, добавил индекс выборка инфрмации по сессиям стала делатся за несколько секунд, вместо минут.

Sandello
Сообщения: 26
Зарегистрирован: Чт фев 10, 2005 18:54

Сообщение Sandello »

По поводу п. 1: вообще-то, это не равносильные запросы, но я согласен, т. к. смысла LEFT-Join-ить нету, потому что когда ищем пользователей с некоторым ТП (1) подразумеваем, что у них уже есть некий ТП --> Можно забить на пары user<>tariff с tariff=NULL и (2) т. к. есть тариф, то есть лиц. счет, к которому он привязан. Поэтому s/LEFT/INNER/ можно спокойно делать.
UTM5/FreeBSD 5.3/MySQL 4.1/ipcad

Spar
Сообщения: 350
Зарегистрирован: Пн янв 31, 2005 12:09

Сообщение Spar »

у меня тоже с поиском беда... как только ищу (по тарифу) большое количество людей, то билинг виснет, ребутится и т.п.

sg
Сообщения: 59
Зарегистрирован: Пт янв 21, 2005 11:26

Сообщение sg »

Magnum72 писал(а):Когда будем оптимизировать движок биллинга?
А зачем? Вы же уже купили биллинг и если у вас что-то плохо работает - это лишний повод приобрести техподдержку (в общем случае). А у тех кто его только собирается приобрести наврядли столько пользователей, чтобы заметить недостатки отсутствия оптимизации :evil:

Dmitry
Сообщения: 21
Зарегистрирован: Чт фев 03, 2005 16:53

Сообщение Dmitry »

Magnum72 писал(а): Короче грохнул я эти индексы, создал свой, выгода: выбока идет быстрее, инсерты идут быстрее так как обновляется индекс по 1 полю а у тройной, и размер таблицы уменьшился почти в два раза что привело к дополнительному росту быстродействия из-за уменьшения дисковых операций.
А не расскажешь что именно грохнул и что добавил?

Кстати, я тоже поколдовал над табличками *_service_links, у меня теперь поиск по ID связки и IP адресу на порядок быстрее работает :)

gravis
Сообщения: 562
Зарегистрирован: Ср мар 16, 2005 15:31
Откуда: Село Красноярск

Сообщение gravis »

Вы бы составили патчик в виде SQL-запросов для этих улучшений...

Ответить