связи (forign key) нужны для обеспечения целостности данных. Но можно обеспечивать целостность данных и просто на уровне php-кода. Если с кодом все в порядке, а руками вы в базу не лезете (не ваш случай), то целостность данных не будет нарушена. В старых версиях mysql не было foreign key, от этого всё пошло. Когда техническая возможность появилось, оказалось, что качество кода достаточное, чтобы не добавлять ключи.
теперь, когда нет данных в родительской таблице, вам придется удалять из дочерних запросами вида DELETE FROM mdl_course_modules where no exists (select * mdl_course where mdl_course.id = mdl_course_modules.course_id)
каскадное удаление у вас может быть только, если оно было сделано руками кем-то из "доработчиков" системы. Из коробки и опытными разработчиками moodle такое не используются.
восстанавливайте бэкап частями, исключив из него таблицу с логами, чтобы сэкономить треть времени. Согласен с Вадимом, сам по себе объем логов вообще на производительность нее влияет.
запускать cron из cli нужно регулярною Задача очистки может срабатывать не при каждом запуске.
задачи планировщика можно запускать и без cron, по требованию, есть специальный скрипт, чтобы запустить только нужную задачу.
писал где-то в соседней теме, как можно пользоваться средствами мониторинга сервера, чтобы понять, где узкое место. В первую очередь нужно понять, каких именно ресурсов не хватает
теперь, когда нет данных в родительской таблице, вам придется удалять из дочерних запросами вида DELETE FROM mdl_course_modules where no exists (select * mdl_course where mdl_course.id = mdl_course_modules.course_id)
каскадное удаление у вас может быть только, если оно было сделано руками кем-то из "доработчиков" системы. Из коробки и опытными разработчиками moodle такое не используются.
восстанавливайте бэкап частями, исключив из него таблицу с логами, чтобы сэкономить треть времени. Согласен с Вадимом, сам по себе объем логов вообще на производительность нее влияет.
запускать cron из cli нужно регулярною Задача очистки может срабатывать не при каждом запуске.
задачи планировщика можно запускать и без cron, по требованию, есть специальный скрипт, чтобы запустить только нужную задачу.
писал где-то в соседней теме, как можно пользоваться средствами мониторинга сервера, чтобы понять, где узкое место. В первую очередь нужно понять, каких именно ресурсов не хватает