Что лучше 1 большой запрос к БД или порционно?
Работаю с проектом, в котором периодически происходят запросы к БД. Раньше делал 1 запрос в начале работы скрипта и в памяти висела вся БД. Соответственно потом по ходу работы скрипта - проходило все быстро, единственное только 1 НО - это время в начале выборки. Потом сделал адресные выборки, т.е. что надо было - то и брал из БД и увидел, что нагрзузка стала подниматься на сервер.
Теперь соответственно сам вопрос: кто работает тоже с БД как Вы подходите к таким решениям? Что лучше сделать 1 большой запрос или брать порционно? Или третий вариант запоминать порционные запросы?
PS:
- В качестве СУБД использую MySQL. Работа с БД проходит через SQLAlchemy.
- Реляционная модель БД, 3НФ. I:II - 1:M | II::III - 1:M .
- В момент времени надо знать возможные комбинации ключей второй таблицы в зависимости от Главной таблицы, чтобы потом по выбранному случайному ключу выбрать случайный ключ из диапазона 3 таблицы
Ответы (1 шт):
Во-общем, после многих тестов было решено оставить обращение к БД порционно.
Хоть количество обращений к БД увеличилось, но средние показатели установили, что процессор в среднем нагружается меньше, ОП не переполняется соответственно ошибка 413 стала появляться меньше. Хотя она полностью была решена путем добавления файла подкачки - после него 413 полностью пропала!
- Приложение стало работать быстрее (на 1-2 секунды)
- Пропали ошибки 502 и 413.
- Средняя нагрузка на сервере стала стабильная (дельта тестов показывала 1-2 %, в то время как с выгрузкой всей БД в память - скачки были до 10% !)