У меня есть клиент-серверное приложение Corba. Для некоторых вызовов сервер предоставляет объект-итератор Клиенту, поскольку возвращаемые данные огромны. Текущая реализация - сервер извлекает все релевантные данные из базы данных (MySQL) и сохраняет память до тех пор, пока клиент не завершит извлечение всех данных (через вызовы getNext_n getNext_n()). Уже существует ограничение на общее число итераторов и его продолжительность жизни (шаблон Evictor). Теперь сервер иногда выходит из памяти, если большинство открытых итераторов имеют огромные данные.Сбор данных из MySQL для Corba Iterator
- Что было бы лучшим способом справиться с таким сценарием?
- Мы можем вместо этого извлекать данные из БД кусками (используя Limit) вместо кэширования локально. Но, если какой-либо другой поток вставляет/удаляет строки в таблице; выбор будет возвращать несогласованные данные. Использование временной таблицы в свою очередь означает дополнительное использование диска. Предоставляет ли MySQL какой-либо другой механизм для обработки такого сценария?