Базовый файл sqlite-wal получает MASSIVE (> 7 ГБ) при вставке ~ 5000 строк
m импортирую данные в Core Data и обнаруживаю, что операция сохранения идет медленно. С помощью симулятора iOS я наблюдаю, как растет и растет файл sqlite-wal, пока его размер не превышает 7 ГБ.
м импортирует около 5000 записей с около 10 полей. Это н'Т много данных.
Каждый объект, который яВставка m имеет отношение «один к одному» с различными другими объектами (всего 6 отношений). Все эти записи в совокупности равны менее чем 20 полям. Я не вижу ни изображений, ни двоичных данных, ни чего-либо, что могло бы оправдать, почему результирующий размер файла WAL такой огромный.
Я прочитал документы sqlite, описывающие файл wal, и я нене вижу, как это может произойти. Исходные данные нет более 50 МБ.
Мое приложение многопоточное. Я создаю контекст управляемого объекта в фоновом потоке, который выполняет импорт (создает и сохраняет основные объекты данных).
Не написав здесь код, кто-нибудь сталкивался с этим? У любого есть мысль о том, что я должен проверять. Код неЭто очень просто, и все части потребуют времени для ввода, поэтому давайте начнем с общих идей.
Я буду благодарен любому, кто заставит меня идти в правильном направлении.
Дополнительная информация: я
я отключил менеджер отмены для контекста, как я неэто не нужно (я думаю, что этоПо умолчанию на iOS s nil, но я явно установил его на nil).Я вызываю save только после того, как весь цикл завершен, и все управляемые объекты находятся в оперативной памяти (оперативная память возрастает до 100 МБ).Цикл и создание основных объектов данных занимает всего около 5 секунд. Сохранение занимает почти 3 минуты, так как записывает файл awl.