Нужно ли мне освобождать место в Oracle при обновлении столбца varchar2?

Если у меня есть таблица Oracle со столбцом VARCHAR2 длиной 4000, и я вставил в таблицу строку из 4000 символов, а затем обновил строку строкой из 1 символа, нужно ли мне что-либо делать, чтобы остальные 3999 символов пространство, доступное для повторного использования, или оно автоматически доступно для повторного использования?


person Matt James    schedule 06.06.2014    source источник
comment
Насколько я понимаю Oracle, это довольно умная платформа :) Они уже довольно давно занимаются тем, чем занимаются, и определенно определили тип переменной VARCHAR2. TL; DR - вам не нужно ничего делать, oracle сделает это за вас.   -  person KevinDTimm    schedule 06.06.2014


Ответы (1)


После обновления 3999 байт пространства (при условии, что 1 символ = 1 байт в наборе символов вашей базы данных) освобождается в блоке, в котором находится строка. Это пространство будет немедленно доступно, если другие строки в этом блоке должны увеличиться в размере или если другие столбцы в этой строке должны увеличиться в размере. Конечно, поскольку большинство баз данных используют блоки размером 8 КБ, а наибольший размер блока составляет 32 КБ, вполне вероятно, что в этом конкретном блоке относительно мало строк, поскольку исходная строка была очень большой.

Oracle также отслеживает, насколько заполнены блоки, и использует эту информацию, чтобы сделать их доступными для последующих insert операций. Механизм этого зависит от типа табличного пространства (локально или по словарю), политики управления пространством сегментов (автоматически или вручную) и параметров уровня таблицы, таких как pctused. Однако на высоком уровне освобождение 4 КБ пространства в одном блоке данных почти наверняка приведет к тому, что блок данных станет доступным для будущих insert операций (или для update операций, которые вызывают необходимость переноса строк из других блоков в новый блок или объединены в несколько блоков). Таким образом, пространство почти наверняка будет доступно для повторного использования.

person Justin Cave    schedule 06.06.2014