Вопрос

По замыслу 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top