Как вакуумировать основные данные SQLite db?

по дизайну Core Data не выдает вакууме команда SQL для своей базы данных SQLite, как подробнее здесь. Я создаю приложение Core Data, которое будет хранить, а затем удалять большие двоичные файлы (размером 2-10MB) в БД SQLite. Со временем это приведет к фрагментации и большей, чем необходимо, базе данных SQLite. Я хотел бы периодически выдавать команду вакуума, скажем, во время операции очистки, которую я запускаю.

  • как я могу progmatically выполните команду вакуума для хранилищ SQLite Core Data?
  • можно ли это сделать с помощью основных данных, или я должен смонтировать БД SQLite и подключиться к нему напрямую для выполнения вакуумного SQL?

2 ответов


поддерживаемый способ сделать это в OS X 10.6 / iOS 3.0 и более поздних версиях-установить NSSQLiteManualVacuumOption в параметрах при добавлении хранилища в постоянный координатор хранилища.


да vacuum является признанным оператором SQL в SQLite. Его можно использовать как обычный запрос,или так он говорит.