изменить размер файла sqlite после " удалить из таблицы"
Я работаю с файлом sqlite3.
во-первых, я ввел относительно большую базу данных, размер файла был около 100 МБ.
чем я сделал
$db->exec("DELETE FROM table");
и ввел только небольшую часть этой базы данных. Но размер файла остался 100 МБ.
что нужно сделать, чтобы изменить размер файла sqlite при удалении его содержимого?
3 ответов
команда, которую вы ищете, это вакууме. Существует также ПРАГМА включить авто-пылесосить на.
из документации:
когда объект (таблица, индекс, триггер, или вид) удаляется из базы данных, он оставляет после себя пустое пространство. Этот пустое пространство будет использоваться следующий время добавления новой информации в база данных. Но в то же время файл базы данных может быть больше строгая необходимость. Кроме того, часто вставки, обновления и удаления могут причиной информации в базе данных чтобы стать фрагментированными - scrattered из все по всему файлу базы данных, а чем собрались вместе в одном месте.
команда вакуума очищает главное база данных путем копирования ее содержимого в a временный файл базы данных и перезагрузка исходный файл базы данных из копировать. Это исключает бесплатные страницы, выравнивает данные таблицы, чтобы быть непрерывными, и в противном случае очищает базу данных файловая структура.
вы можете сделать это
$db->exec("DELETE FROM table");
$db->exec("vacuum");
и размер файла будет изменен.
Очистка Базы Данных SQLite имеет две команды, предназначенные для очистки-reindex и vacuum. reindex используется для перестроения индексов. Он имеет две формы: переиндексация аргументе; reindex table_name|index_name;