2013-12-21 4 views
0

Я только что прочитал несколько учебников по sql, и я нашел что-то, известное как «freespaces» в таблицах Oracle от LINK. Что они подразумевают под freespace? Я знаю, если мы используем varchar(10) вместо varchar2(10), неиспользованное пространство будет доступно без необходимости в varchar. Но что они подразумевают под freespace, когда дело доходит до TRUNCATE?Что такое свободное пространство в таблицах оракулов

Команда SQL TRUNCATE используется для удаления всех строк из таблицы и освобождает пространство, содержащее таблицу.

+1

Смотрите также: http://stackoverflow.com/questions/139630/whats-the-difference-between-truncate-and-delete-in-sql –

ответ

2

Свободное место в таблице не находится на уровне строки. Он находится на уровне страницы.

Команда truncate table в основном удаляет все страницы, назначенные таблице. Это опустошает таблицу и возвращает страницы обратно в систему управления страницей.

Если вы просто удаляете строки, некоторые страницы могут оставаться связанными с таблицей. Страница содержит записи. Таблица может хранить дополнительные записи на существующих страницах. Это будет неиспользуемое пространство в таблице.

+0

Я никогда не слышал ничего о " уровень страницы "в Oracle DB. Возможно, в другой СУБД используется эта фраза, но Oracle не настолько, насколько я знаю. –

+1

Я проверил документ Oracle, там он говорит: «На самом высоком уровне детализации Oracle Database хранит данные в блоках данных (также называемых логическими блоками, блоками Oracle или страницами). Один блок данных соответствует определенному числу байтов физического пространство базы данных на диске. " Таким образом, они ссылаются на _page_, но общее выражение в Oracle - это блок данных ** –

2

Когда вы отбрасываете таблицу из Oracle db, пространство по-прежнему занято, потому что есть возможность «восстановить», поэтому данные фактически помечены как удаленные, но не удаленные с диска. Когда вы обрезаете таблицу, все данные действительно удаляются, поэтому пространство на диске, занятое ими, является бесплатным. Также есть возможность очистить упавший стол и освободить место. Для получения дополнительной информации пожалуйста смотрите: http://docs.oracle.com/cd/B19306_01/backup.102/b14192/flashptr004.htm

+0

. Лучше использовать правильные выражения, такие как «COMMIT» или «ROLLBACK», для новичков это проще для понимания. –

+0

@Wernfried pls см. Ссылку в моем ответе. Спасибо – JosefN

Смежные вопросы