#4
parihaaraka » 23 апр 2015, 23:23
Моделировать это снова не хочется, пока сижу на eiskaltdc++. Дело почти 100% не в субд, и именно об этом речь (несколько десятков тысяч записей в базе - ерунда).
Да, выступаю сейчас с несколько абстрактной позиции, могу быть не прав, прошу прощения заранее. Но таки что может делать программа долго, очень долго.. реально долго для того, чтобы очистить _полностью все задачи_(минут сорок ждал, не дождался)? Активных закачек, пускай, десяток. Значит, видимо, получается delete from download_queue where tth not in ('1','2','3',..'10'), а дальше подчистить мусор от незавершенных заданий (или наоборот - не суть вопроса). Но как этой простой процедурой можно нагнуть компьютер целиком и надолго? Можно сделать предположение. После первых недоуменных прибиваний процесса была попытка удалять небольшими порциями - папочками по несколько десятков файлов. И эффект наблюдался пропорциональный, т.е. такая папочка удалялась из очереди с минуту. Напрашивается вывод: либо кошмарные запросы к базе (вряд ли) без нужных индексов, либо каждое удаление файла ведет к перестройке всего дерева даже невидимых файлов, и дальше лавинообразно рефрешится куча чего-то (может и база обновляется для каждого файла, что в сумме и дает такую скорость - вариантов множество).. По крайней мере, даже если устранить эту, очевидно, архитектурную проблему в разумные сроки невозможно, стоило бы сделать временное простое решение по прибиванию ВСЕХ задач целиком, чтобы можно было хоть как-то выкрутиться. Наверняка, это несложно.