Есть ли какие-либо недостатки в очистке баз данных sqlite? Если нет, то почему приложения не вакуумируют свои базы данных?
3 ответа
Пылесосить базу данных SQLite в основном просто экономит /"компактирует" дисковое пространство - это очень мало влияет на производительность. Большинство приложений не выиграют от очистки, если не удалят большие объемы данных.
Вакуумирование воссоздает файл БД из существующего файла, и поэтому для его работы требуется дополнительное дисковое пространство. Это также занимает некоторое время и требует блокировки, чтобы все было согласованно.
Таким образом, люди решили не иметь дело с проблемами блокировки и пространства и позволили БД расти, надеясь, что он не станет слишком большим.
Вы можете сделать auto_vacuum, который не очищает столько, сколько удаляет, но и не блокирует БД ни на какое время.
Имейте в виду, что очистка базы данных sqlite может воссоздать столбец _id с новыми идентификаторами. Поэтому, если вы в значительной степени полагаетесь на целостность данных или сопоставление данных на основе _id, убедитесь, что вы можете учесть этот сценарий.