Я работаю над многопользовательским веб-приложением. Необходимо очистить некоторый контейнер от пользователей, который может быть достаточно большим, имея в коллекции много документов. Мне нужно иметь возможность удалить много документов, например:
return self::remove(array('LISTID' => $listId), array('safe' => true));
В некоторых случаях может быть много документов, соответствующих этому критерию, что-то вроде сотен тысяч или даже миллионов. Я беспокоюсь, что эта операция может занять много времени и задушить сервер. Если документов много, стоит ли ставить в очередь такую операцию для их удаления в оффлайне что-то вроде псевдокода:
while (there are documents) {
delete(1000 documents);
sleep();
}
Интересно, как в этом случае удалять данные меньшими порциями в mongodb. Я также замечаю, что по какой-то причине удаление довольно большого количества строк происходит довольно быстро в mongodb, у нас есть прототип с хранением данных в mongodb, удаление аналогичного количества строк занимает гораздо больше времени в mysql, но в mysql каждая строка в таблице имеет ссылки на другую таблицу с данными, но даже когда в зависимых таблицах нет записей, в mongodb кажется намного быстрее, в mongodb все данные хранятся в документе, но мне все равно это кажется довольно странным. А может это лишнее?
Спасибо.