Что лучше 1 большой запрос к БД или порционно?

Работаю с проектом, в котором периодически происходят запросы к БД. Раньше делал 1 запрос в начале работы скрипта и в памяти висела вся БД. Соответственно потом по ходу работы скрипта - проходило все быстро, единственное только 1 НО - это время в начале выборки. Потом сделал адресные выборки, т.е. что надо было - то и брал из БД и увидел, что нагрзузка стала подниматься на сервер.

Теперь соответственно сам вопрос: кто работает тоже с БД как Вы подходите к таким решениям? Что лучше сделать 1 большой запрос или брать порционно? Или третий вариант запоминать порционные запросы?

PS:

  1. В качестве СУБД использую MySQL. Работа с БД проходит через SQLAlchemy.
  2. Реляционная модель БД, 3НФ. I:II - 1:M | II::III - 1:M .
  3. В момент времени надо знать возможные комбинации ключей второй таблицы в зависимости от Главной таблицы, чтобы потом по выбранному случайному ключу выбрать случайный ключ из диапазона 3 таблицы

Ответы (1 шт):

Автор решения: Алексей Белкин

Во-общем, после многих тестов было решено оставить обращение к БД порционно.

Хоть количество обращений к БД увеличилось, но средние показатели установили, что процессор в среднем нагружается меньше, ОП не переполняется соответственно ошибка 413 стала появляться меньше. Хотя она полностью была решена путем добавления файла подкачки - после него 413 полностью пропала!

  • Приложение стало работать быстрее (на 1-2 секунды)
  • Пропали ошибки 502 и 413.
  • Средняя нагрузка на сервере стала стабильная (дельта тестов показывала 1-2 %, в то время как с выгрузкой всей БД в память - скачки были до 10% !)
→ Ссылка