изменить размер файла sqlite после "удалить из таблицы"
Я работаю с файлом sqlite3.
во-первых, я ввел относительно большую базу данных, размер файла был около 100 МБ.
чем я сделал
$db->exec("DELETE FROM table");
и ввел только небольшую часть этой базы данных. Но размер файла остался 100 МБ.
что нужно сделать, чтобы изменить размер файла sqlite при удалении его содержимого?
3 ответа:
команда, которую вы ищете, это вакууме. Существует также pragma для включения автоматического пылесоса.
из документации:
когда объект (таблица, индекс, триггер, или вид) удаляется из базы данных, он оставляет после себя пустое пространство. Этот пустое пространство будет использоваться следующий время новая информация добавляется к база данных. Но в то же время файл базы данных может быть больше, чем строгая необходимость. Кроме того, частые вставки, обновления и удаления могут вызвать информацию в базе данных стать фрагментированным-вычеркнутым все через файл базы данных, а чем сгрудились вместе в одном месте.
команда вакуума очищает главное базы данных, копируя его содержимое в временный файл базы данных и перезагрузка исходный файл базы данных из копировать. Это исключает свободные страницы, выравнивает данные таблицы, чтобы быть смежными, и в противном случае очищает базу данных файловая структура.