Освобождает ли удаление строки в базе данных эту базу данных? - PullRequest
2 голосов
/ 25 февраля 2012

Вставка строки в базу данных добавляет к ней данные. Освобождает ли удаление строки в этой базе данных? Или строка будет удалена без изменения количества используемого пространства?

Ответы [ 3 ]

3 голосов
/ 25 февраля 2012

Когда вы используете Oracle, пространство из удаленных строк может быть немедленно восстановлено с помощью определенных команд . В противном случае он останется зарезервированным для новых строк, как упоминает @ oymustang86.

2 голосов
/ 25 февраля 2012

Для SQL это зависит от того, с чьей точки зрения.Например, если вы можете вставить миллион строк перед тем, как закончится свободное место на диске, если вы удалите половину из них, у вас будет место, чтобы вставить еще полмиллиона.(Не обращая внимания на ведение журнала транзакций - просто представьте, что ведение журнала выполняется в другом месте)

Файл данных после его увеличения не будет уменьшаться.Таким образом, дисковое пространство, используемое файлом данных, недоступно для ОС или любого другого приложения.Пока не будет выполнена операция сжатия базы данных.Это переупорядочивает данные внутри файла, чтобы освободить место на диске для использования ОС или другим приложением.

2 голосов
/ 25 февраля 2012

Спросите Тома говорит за Oracle:

При удалении данных из таблицы блоки перейдут на Freelist для этой таблицы (предполагая количество места в блоке, который был освобожден упал ниже pctused). Эти блоки будут использованы для последующие вставки и обновления в эту таблицу.

При удалении данных из индекса - при блокировке записи индекса был включен сейчас "пусто" - этот блок вернется в список freelist для использования в любом месте структуры индекса. Еще этот блок остается там, где он есть и данные, которые естественно перейти на этот блок (из-за того, где он находится в б * дерево) туда пойдет.

Пространство эффективно повторно используется при удалении. Ваша база данных не будет показать любое новое свободное место в dba_free_space - там будет больше блоков на фрилансах и более пустых местах в индексных структурах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...