Как очистить базу данных Core Data SQLite db?
Вопрос
По замыслу Core Data не выдает ВАКУУМ Команда SQL для своей базы данных (ов) SQLite, как подробно здесь.Я создаю приложение Core Data, которое будет хранить, а затем удалять большие двоичные файлы (размером 2-10 МБ) в базе данных SQLite.Со временем это приведет к фрагментации и увеличению размера базы данных SQLite больше, чем необходимо.Я хотел бы периодически выдавать команду VACUUM, скажем, во время выполняемой мной операции очистки.
- Как я могу программно выполнить команду VACUUM для хранилищ SQLite Core Data?
- Возможно ли это сделать через Core Data, или я должен смонтировать базу данных SQLite и подключиться к ней напрямую, чтобы выполнить VACUUM SQL?
Решение
Поддерживаемый способ сделать это в OS X 10.6 / iOS 3.0 и более поздних версиях - установить Параметр NSSQLiteManualVacuumOption ( NSSQLiteManualVacuumOption ) в настройках, когда вы добавляете хранилище в постоянный координатор хранилища.
Другие советы
ДА, vacuum
является распознанным выражением SQL в SQLite.Его можно использовать как обычный запрос, или так там написано.
Однако будьте осторожны, поскольку это может привести к чрезмерному чтению и записи файловой системы — узкому месту практически любой системы, не говоря уже о фрагментации файловой системы сервера на серверах Windows.