22
Параметр PCTFREE определяет тот объем незанятого пространства блока, который
необходимо оставить для того, чтобы с
увеличением длины записей при выполнении
инструкций UPDATE они поместились в своем блоке, а не мигрировали в
другие блоки.
Естественно, возникает вопрос: а как вычислить это значение? Ответ, наверное, не совсем
ожидаемый: никак! Просто администратор может экспериментально подобрать некоторое,
хорошее для текущего режима работы базы, значение.
В сегменте, выделенном для хранения таблицы, блоки, у которых свободного места
меньше, чем PCTFREE, для записи не пригодны. Очевидно, СУБД необходим список
блоков, пригодных для записи. Желательно, чтобы этот список был не один, так как
транзакции будут конкурировать за доступ к нему при обращении к данным. Конечно,
записи во всех таких списках должны быть одинаковыми.
Теперь можно разобраться с назначением второго параметра — PCTUSED,
задающего момент включения блока данных в
список блоков, пригодных для записи в
своем сегменте.
Пусть объем данных в блоке увеличивается от 0 до величины,
превышающей PCTUSED, но свободное пространство при этом не меньше PCTFREE.
Блок остается в
списках блоков, пригодных для записи. Как только свободное
пространство станет меньше PCTFREE, блок удалится из всех списков блоков, пригодных
для записи. После этого, при увеличении свободного пространства блока до величины
большей, чем PCTFREE, он будет оставаться вне списков. И только когда занятое место
станет меньше чем PCTUSED, блок вернется в списки блоков пригодных для записи.
Достарыңызбен бөлісу: