|
[Search] Поиск   [Recent Topics] Последние темы   [Hottest Topics] Горячие темы   [Members]  Список участников   [Groups] На главную страницу 
[Register] Регистрация / 
[Login] Вход 
[API 2.0] Меркурий и начальная загрузка справочников. Для программистов.  XML
Индекс форума » Компонент МЕРКУРИЙ
Автор Сообщение
Владимир Игнатов


Зарегистрирован: 02/08/2017 09:19:30
Сообщений: 581
Оффлайн

Когда идет загрузка справочников "от начала времён" (updateDate=0), постепенно увеличивая смещение от начала (offset), сервер выполняет нечто вроде
select ... from ... where updateDate>=:updateDate limit offset, blocksize
В нехорошем случае, когда нельзя воспользоваться индексом, это будет приводить к формированию временной результирующей таблицы на (offset+blocksize) записей (от начала времен, т.к. updateDate=0), из которой потом будет отдано последние blocksize записей, и с увеличением offset, понятное дело, временная результирующая таблица будет расти, а ее формирование будет занимать все больше времени, что будет приводить к таймаутам.

Решением данной проблемы будет запрос за один "проход" не всего справочника, а, например, не более чем offset=50 - 100 тысяч записей. При достижении этого значения - накопленные данные записать себе в базу и пойти на следующий проход, взяв в качестве updateDate последнюю updateDate из уже полученных.
 
Индекс форума » Компонент МЕРКУРИЙ
Перейти:   

Powered by JForum 2.1.8 © JForum Team