Мы не разрешаем каскад удаления в наших системах, потому что у вас нет контроля над таблицей блокировок, когда выполняется большое удаление. Если у вас есть большое количество записей для частого удаления, есть несколько вариантов. Во-первых, вам действительно нужно удалить или вы просто должны сделать их неактивными? Это, наверное, самый эффективный способ справиться.
Или вы можете обрабатывать партиями. Переместите все значения идентификаторов, которые вы хотите добавить в промежуточную таблицу, а затем удалите их 1000 (или 20000 или 200, фактическое число может быть определено системой только по соображениям производительности.) За один раз и последовательно, пока все записи не будут удалены , Возможно, вы захотите поэкспериментировать с удалением записей по одной таблице за раз, а не каскадом.
Или вы можете пометить записи для удаления и выполнять фактическое удаление в одночасье в течение периодов низкой загрузки базы данных, чтобы избежать блокировки других пользователей.
При каскадном удалении нужно учитывать одно: действительно ли вы хотите удалить запись, если существуют дочерние записи? Внешние ключи существуют, отчасти, чтобы помешать вам сделать это, и каскадное удаление отменяет это поведение. Поэтому, если ваши дочерние записи представляют собой что-то вроде заказов, ни при каких обстоятельствах вы не хотите удалять их автоматически при каскадном удалении, иначе вы потеряете необходимую финансовую информацию, даже если клиент больше не активен.