Оракул Pctfree что это такое

Обновлено: 06.07.2024

Physical_attributes_clause позволяет указать значение параметров PCTFREE, PCTUSED и INITRANS, а также характеристики хранения таблицы, кластера, индекса или материализованного представления.

Вы можете указать Physical_attributes_clause в следующих операторах:

CREATE CLUSTER и ALTER CLUSTER: установка или изменение физических атрибутов кластера и всех таблиц в кластере (см. CREATE CLUSTER и ALTER CLUSTER).

CREATE TABLE : для установки физических атрибутов таблицы, раздела таблицы, OIDINDEX таблицы объектов или сегмента переполнения индексно-организованной таблицы (см. CREATE TABLE).

ALTER TABLE : для изменения физических атрибутов таблицы, физических атрибутов по умолчанию будущих разделов таблицы или физических атрибутов существующих разделов таблицы (см. ALTER TABLE). Применяются следующие ограничения:

Вы не можете указать физические атрибуты для временной таблицы.

Вы не можете указать физические атрибуты для кластеризованной таблицы. Таблицы в кластере наследуют физические атрибуты кластера.

СОЗДАТЬ ИНДЕКС: установить физические атрибуты индекса или раздела индекса (см. СОЗДАНИЕ ИНДЕКС).

ALTER INDEX : изменение физических атрибутов индекса, физических атрибутов по умолчанию будущих разделов индекса или физических атрибутов существующих разделов индекса (см. ALTER INDEX).

СОЗДАТЬ МАТЕРИАЛИЗОВАННОЕ ПРЕДСТАВЛЕНИЕ: для установки физических атрибутов материализованного представления, одного из его разделов или индекса, создаваемого базой данных Oracle для поддержки материализованного представления (см. СОЗДАНИЕ МАТЕРИАЛИЗОВАННОГО ПРЕДСТАВЛЕНИЯ).

ALTER MATERIALIZED VIEW: чтобы изменить физические атрибуты материализованного представления, физические атрибуты по умолчанию будущих разделов, физические атрибуты существующего раздела или индекс, созданный Oracle для поддержки материализованного представления (см. ALTER MATERIALIZED VIEW).

СОЗДАТЬ МАТЕРИАЛИЗОВАННЫЙ ЖУРНАЛ ПРОСМОТРА и ИЗМЕНИТЬ ЖУРНАЛ МАТЕРИАЛИЗОВАННОГО ПРОСМОТРА: чтобы установить или изменить физические атрибуты журнала материализованного просмотра (см. СОЗДАТЬ ЖУРНАЛ МАТЕРИАЛИЗОВАННОГО ПРОСМОТРА и ИЗМЕНИТЬ ЖУРНАЛ МАТЕРИАЛИЗОВАННОГО ПРОСМОТРА).

В этом разделе описываются параметры Physical_attributes_clause . Для получения дополнительной информации обратитесь к оператору SQL, в котором вы устанавливаете или сбрасываете эти параметры для определенного объекта базы данных.

Укажите целое число, представляющее процент пространства в каждом блоке данных объекта базы данных, зарезервированного для будущих обновлений строк объекта. Значение PCTFREE должно быть значением от 0 до 99. Значение 0 означает, что весь блок может быть заполнен вставками новых строк. Значение по умолчанию — 10. Это значение резервирует 10 % каждого блока для обновления существующих строк и позволяет вставкам новых строк заполнять максимум 90 % каждого блока.

PCTFREE имеет ту же функцию в операторах, которые создают и изменяют таблицы, разделы, кластеры, индексы, материализованные представления и журналы материализованных представлений. Комбинация PCTFREE и PCTUSED определяет, будут ли новые строки вставлены в существующие блоки данных или в новые блоки.

Ограничение для пункта PCTFREE При изменении индекса вы можете указать этот параметр только в предложении Modify_index_default_attrs и в разделе split_partition_clause .

Укажите целое число, представляющее минимальный процент используемого пространства, поддерживаемого Oracle для каждого блока данных объекта базы данных. Блок становится кандидатом на вставку строки, когда используемое им пространство падает ниже PCTUSED. PCTUSED указывается как положительное целое число от 0 до 99 и по умолчанию равно 40.

PCTUSED имеет ту же функцию в инструкциях, которые создают и изменяют таблицы, разделы, кластеры, материализованные представления и журналы материализованных представлений.

PCTUSED не является допустимой характеристикой хранения таблицы для индексно-организованной таблицы.

Сумма PCTFREE и PCTUSED должна быть меньше или равна 100. Вы можете использовать PCTFREE и PCTUSED вместе, чтобы более эффективно использовать пространство в объекте базы данных.

Ограничения для предложения PCTUSED Этот параметр нельзя указывать для индекса или сегмента индекса индексно-организованной таблицы.

Укажите начальное количество записей параллельных транзакций, выделенных в каждом блоке данных, выделенном для объекта базы данных. Это значение может находиться в диапазоне от 1 до 255 и по умолчанию равно 1 со следующими исключениями:

Значение INITRANS по умолчанию для кластера равно 2 или значение INITRANS по умолчанию для табличного пространства, в котором находится кластер, в зависимости от того, что больше.

Значение индекса по умолчанию — 2.

Как правило, не следует менять значение INITRANS по умолчанию.

Каждая транзакция, которая обновляет блок, требует записи транзакции в блоке. Размер записи транзакции зависит от вашей операционной системы. Этот параметр гарантирует, что минимальное количество одновременных транзакций может обновить блок, и помогает избежать накладных расходов на динамическое выделение записи транзакции.

Параметр INITRANS служит той же цели в инструкциях, которые создают и изменяют таблицы, разделы, кластеры, индексы, материализованные представления и журналы материализованных представлений.

В более ранних версиях параметр MAXTRANS определял максимальное количество одновременных транзакций обновления, разрешенных для каждого блока данных в сегменте. Этот параметр устарел. Теперь Oracle автоматически разрешает до 255 одновременных транзакций обновления для любого блока данных, в зависимости от доступного места в блоке.

Существующие объекты, для которых уже задано значение MAXTRANS, сохраняют этот параметр. Однако если вы попытаетесь изменить значение MAXTRANS , Oracle проигнорирует новую спецификацию и подставит значение 255 без возврата ошибки.

Предложение storage_clause позволяет указать характеристики хранения для таблицы, таблицы объектов OIDINDEX , раздела, сегмента данных LOB, сегмента индекса LOB или сегмента данных переполнения таблицы, организованной по индексу. Это предложение влияет на производительность для больших таблиц. Хранилище должно быть выделено таким образом, чтобы свести к минимуму динамическое выделение дополнительного пространства. Дополнительные сведения см. в разделе storage_clause.


Обучение Oracle
Советы Oracle
Форум Oracle
Каталог классов


Удаленный администратор баз данных
Настройка Oracle
Экстренный вызов 911
Поддержка RAC
Поддержка приложений
Анализ
Дизайн
Внедрение
Поддержка Oracle



Настройка SQL
Безопасность
Oracle UNIX
Oracle Linux
Мониторинг
Удаленная поддержка
Удаленные планы
Удаленные услуги
Сервер приложений
Приложения
Формы Oracle
Портал Oracle
Обновления приложений
SQL Server
Концепции Oracle
Поддержка программного обеспечения
Удаленная поддержка
Разработка
Внедрение



Сотрудники консультантов
Цены на консалтинг
Требуется помощь!



Постеры Oracle
Книги Oracle
Скрипты Oracle
Ion
Excel-DB

Глава 5 Проектирование табличного пространства Oracle

Это может стать серьезной проблемой для специалистов по Oracle, если они не помнят, что локально управляемые табличные пространства с автоматическим управлением пространством игнорируют любые указанные значения для NEXT и FREELISTS.

Прежде чем мы рассмотрим детали проектирования с каждым из этих вариантов, важно понять параметры хранения сегментов и посмотреть, как они соотносятся с параметрами табличного пространства. Начнем с обзора параметров хранения сегментов.

Проект для Oracle Segment Storage

С самых первых дней существования Oracle у нас есть следующие параметры отдельных сегментов для управления ростом каждого сегмента (таблица, индекс, IOT) в нашей базе данных Oracle:

Существует прямой компромисс между настройкой PCTUSED и эффективным использованием хранилища в базе данных Oracle. Для баз данных, где пространство ограничено и хранилище в файлах данных Oracle должно быть повторно использовано немедленно, администратор базы данных Oracle обычно устанавливает для параметра PCTUSED очень высокое значение. Это гарантирует, что блоки попадут в список свободных до того, как они полностью опустеют.

Однако недостатком этого подхода является то, что каждый раз, когда блок данных заполняется, Oracle должен отсоединить блок данных от списка свободных и выполнять еще один ввод-вывод, чтобы получить еще один свободный блок данных для вставки новых строк. Таким образом, администратор базы данных должен найти баланс между эффективным использованием пространства и объемом операций ввода-вывода в базе данных Oracle.

Давайте начнем обсуждение с представления взаимосвязи между параметрами хранилища объектов и производительностью. Низкая производительность объектов в Oracle возникает в нескольких областях:

Есть сценарии Oracle?

Компания BC делится своим личным арсеналом сценариев словаря данных Oracle в этом всеобъемлющем загружаемом файле. Имея многолетний опыт использования сценариев мониторинга Oracle и сценариев настройки Oracle, мы делимся своими секретами навигации по словарю данных Oracle.

Этот сборник содержит более 690 готовых к использованию сценариев Oracle и является исчерпывающим набором для каждого старшего администратора баз данных Oracle.

На разработку этих скриптов с нуля ушли бы человеко-годы, что делает эту загрузку самой выгодной в отрасли Oracle.

Бурлесон — американская команда


Примечание. Эта документация по Oracle была создана в качестве справочника по поддержке и обучению Oracle для использования нашими специалистами-консультантами по настройке производительности администраторов баз данных. Не стесняйтесь задавать вопросы на нашем форуме Oracle.

Проверьте опыт! Любой, кто рассматривает возможность использования услуг эксперта службы поддержки Oracle, должен самостоятельно проверить свои полномочия и опыт, а не полагаться на рекламу и самопровозглашенный опыт. Все законные эксперты Oracle публикуют свои квалификации Oracle.

Ошибки? Технология Oracle меняется, и мы стараемся обновлять нашу информацию о поддержке BC Oracle. Если вы обнаружите ошибку или у вас есть предложение по улучшению нашего контента, мы будем признательны за ваш отзыв. Просто электронная почта:


и укажите URL-адрес страницы.


Burleson Consulting

Оракул поддержки баз данных

Как понимает любой опытный администратор баз данных, настройки PCTUSED могут существенно повлиять на производительность базы данных Oracle. Многие новые администраторы баз данных Oracle не понимают, что PCTUSED используется только для повторной привязки полных данных к свободному списку таблиц. Повторное связывание происходит только тогда, когда оператор DELETE или UPDATE уменьшил свободное пространство в блоке данных. Параметр PCTUSED будет определять объем строки в этом вновь связанном блоке данных.

Настройки по умолчанию для всех таблиц Oracle: PCTUSED=40. Параметр PCTUSED=40 означает, что блок должен быть заполнен менее чем на 40 процентов, прежде чем он будет повторно связан со списком свободных таблиц.

Давайте подробнее рассмотрим, как работает оператор PCTUSED и как он влияет на работу повторных ссылок на свободный список таблиц. Как я уже сказал, блок данных становится доступным для повторного использования, когда свободное пространство в блоке падает ниже значения PCTUSED для таблицы.

Это происходит, когда объем пространства в блоке базы данных падает ниже PCT_USED, и запускается операция перекомпоновки списка свободных мест. Например, при PCTUSED=60 все блоки базы данных, содержащие менее 60 процентов данных, будут в списке свободных, а также другие блоки, которые опустились ниже PCT_USED и еще не выросли до PCT_FREE. Как только блок удаляет строку и становится заполненным менее чем на 60 процентов, блок возвращается в список свободных мест.

Существует прямой компромисс между параметром PCTUSED и производительностью базы данных при операциях вставки. Как правило, чем выше значение параметра PCTUSED, тем меньше свободного места будет в повторно используемых блоках данных во время INSERT. Следовательно, задачам INSERT потребуется выполнять более частые операции ввода-вывода, чем если бы они выполняли вставку в пустые блоки. Короче говоря, значение PCTUSED следует устанавливать выше 40 только в том случае, если в базе данных не хватает места на диске, и необходимо обеспечить эффективное повторное использование пространства блока данных.

Теперь должно быть совершенно ясно, что при настройке значений PCTFREE и PCTUSED необходимо учитывать среднюю длину строки. Вы хотите установить PCTFREE таким образом, чтобы в каждом блоке оставалось место для расширения строки, и вы хотите установить PCTUSED, чтобы в новых связанных блоках было достаточно места для размещения строк.

В этом заключается компромисс между эффективным использованием пространства и производительностью. Если вы установите PCTUSED на высокое значение, скажем, 80, то блок быстро станет доступным для приема новых строк, но в нем не будет места для большого количества строк, прежде чем он снова станет логически заполненным. В самом крайнем случае повторно связанный свободный блок может иметь достаточно места только для одной строки, прежде чем вызовет другой ввод-вывод.

Сценарий в листинге 1 (pctused.sql) позволяет настроить параметры PCTFREE и PCTUSED в зависимости от количества строк, которые вы хотите сохранить между операциями ввода-вывода.

Помните правило: чем меньше значение параметра PCTUSED, тем меньше операций ввода-вывода будет в вашей системе во время вставки и тем быстрее будет работать ваша система. Недостатком, конечно же, является то, что блок будет почти пустым, прежде чем он сможет принимать новые строки.

Поскольку длина строки является основным фактором при разумной настройке PCTUSED, можно написать сценарий, который позволит администратору баз данных специально контролировать, сколько строк будет помещаться в повторно используемый блок данных, прежде чем он будет удален из списка свободных.

Сценарий, показанный в листинге ниже, генерирует синтаксис изменения таблицы. Обратите внимание, что этот сценарий предоставляет только общие рекомендации, и вам следует оставить значение по умолчанию PCTUSED=40, если в вашей системе недостаточно места на диске или если средняя длина строки не очень велика.

отключить заголовок;
установить количество страниц 9999;
отключить обратную связь;

определить spare_rows = 2;

определить blksz = 4096;

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

Файл в pctused.lst теперь будет содержать синтаксис ALTER TABLE для переустановки PCTUSED.

Опять же, этот сценарий обычно используется, когда в базе данных очень мало места, и администратор базы данных хочет найти компромисс между эффективным повторным использованием пространства и производительностью INSERT.

Все профессиональные администраторы баз данных знают, что минимизация количества строк в цепочках является фундаментальной задачей их работы, и они признают, что миграция строк (связывание в цепочки) является функцией:

  • размер блока
  • БЕСПЛАТНО
  • средняя длина строки во время загрузки
  • Ожидаемое расширение строки (байт на строку)

Чрезмерное количество перенесенных строк часто является результатом ошибки администратора базы данных, обычно из-за того, что он не смог предвидеть будущее расширение строки. Неправильный PCTFREE (приводящий к высокому значению chain_cnt) является ошибкой администратора баз данных и встречается довольно редко. В моем мире перенесенные строки являются результатом размещения больших объектов в небольших блоках, и наиболее распространенным средством является развертывание блоков большего размера.


Бурлесон — американская команда


Примечание. Эта документация по Oracle была создана в качестве справочника по поддержке и обучению Oracle для использования нашими специалистами-консультантами по настройке производительности администраторов баз данных. Не стесняйтесь задавать вопросы на нашем форуме Oracle.

Проверьте опыт! Любой, кто рассматривает возможность использования услуг эксперта службы поддержки Oracle, должен самостоятельно проверить свои полномочия и опыт, а не полагаться на рекламу и самопровозглашенный опыт. Все законные эксперты Oracle публикуют свои квалификации Oracle.

Ошибки? Технология Oracle меняется, и мы стараемся обновлять нашу информацию о поддержке BC Oracle. Если вы обнаружите ошибку или у вас есть предложение по улучшению нашего контента, мы будем признательны за ваш отзыв. Просто электронная почта:


и укажите URL-адрес страницы.


Burleson Consulting

Оракул поддержки баз данных

Pctfree
Когда используемое пространство блока достигает значения 100-pctfree, блок отключается от списка свободных мест. Например, Pctfree равно 10, тогда, когда блок использует 90%, он будет вне списка свободных мест, и последующие вставки не будут использовать этот блок.
Если после вставки данных в таблицу часто требуется DML, нам нужно установите для параметра Pctfree больший размер, чтобы избежать появления ссылок на строки и строки. Если таблица не модифицируется или не удаляется после вставки данных, то мы не можем установить pctfree меньше, например, 5 или даже меньше, чтобы каждый блок таблицы мог содержать больше записей, тем самым уменьшая стоимость доступа к этой таблице. . И если есть таблица, конфликт горячих блоков очень серьезный, мы также можем увеличить pctfree, чтобы уменьшить количество записей в каждом блоке данных, тем самым смягчив конфликт горячих блоков. На самом деле, лучший способ уменьшить конфликт тепловых блоков — поместить эту таблицу в меньшее табличное пространство block_size, но в реальной производственной среде нам часто бывает трудно быть настолько удачливым, что мы можем решить проблему только с помощью целесообразности. когда мы обнаружим, что конфликт горячего блока существует.
При настройке pctfree мы должны учитывать, что этот параметр может быть динамически настроен, но мы настраиваем параметр Pctfree только для функции вставки новых данных, для уже заполненного старого блока данных, не работает, чтобы полностью решить проблему переноса строк, необходимо настроить параметры. Таблица реорганизована для работы со всеми блоками данных в таблице. Есть много способов реорганизовать таблицы, например ALTER table. MOVE или Exp/imp.
Поскольку по умолчанию pctfeee равно 10, если установить новое значение 0 или 1, вы сможете сэкономить почти 10% места и быстрее читать диск. Например, Pctfeee=0, исходные данные размещены на экстенте 100, теперь они занимают экстент 90.
Например, создайте очень простую таблицу:
CREATE TABLE Test_space
(
Имя varchar2 () NOT NULL
)
Табличное пространство crmii
Pctfree 0
Initrans 2
Хранилище
(Начальный 64K
Следующий 1K
Minextents 1
Maxextents Unlimited
);
--ДОБАВИТЬ комментарии к столбцам
Комментарий к столбцу test_space. Name is ' name ';
Поскольку Oracle рекомендует использовать локальный сегмент управления экстентом Space Managment Auto, мы будем знать о Pctfree при построении таблицы. Таким образом, для постоянной таблицы pctused может в основном войти в историческую стадию, поскольку временная таблица не имеет части параметра хранения.
Если вы хотите изменить параметр Pctfree после создания объекта, вы можете использовать следующую команду< br />sql> ALTER TABLE T1 Pctfree 20;
Таблица изменена.
Значения параметра Pct_free можно просмотреть с помощью dba_tables,dba_indexes, например, следующим образом
Sql> Выберите Table_name,pct_free из user_tables где table_name= ' T1 '
TABLE_NAME Pct_free
--------------- ----------
T1 20
Initrans
Каждый блок имеет заголовок блока. В заголовке этого блока есть таблица транзакций. Некоторые записи создаются в таблице транзакций, чтобы описать, какие транзакции блокируют какие строки/элементы в блоке. Начальный размер этой таблицы транзакций определяется параметром Initrans объекта.Для таблиц это значение по умолчанию равно 1, а значение Initrans индекса по умолчанию равно 2. Таблица транзакций динамически расширяется по мере необходимости, вплоть до записей Maxtrans (при условии, что в блоке достаточно свободного места). Каждая назначенная запись транзакции должна занимать место для хранения 23–24 байта в заголовке блока. Обратите внимание, что для Oracle 10g maxtrans игнорируется, и все сегменты имеют значение Maxtrans 255.

То есть, если что-то блокирует данные этого блока, в этом месте фиксируется личность транзакции, и естественно транзакция должна сначала посмотреть, занято ли уже место, и если да, то посмотреть, не занято ли это транзакция активна. Если вы неактивны, например, зафиксировали или откатились, вы можете перезаписать это место. Если активность, то нужно ждать (эффект защелки)
Поэтому, если имеется много одновременных обращений для использования этого блока, то параметры не могут быть слишком маленькими, иначе конкуренция за ресурсы вызовет снижение производительности параллелизма системы .
Протестируйте распределение блоков и управление ITL для одновременных транзакций Oracle.
Если не учитывать большую часть процесса тестирования, приблизительные результаты суммируются следующим образом:
1. Initrans = 1 час. Параллельные множественные транзакции вставки (до 5 в этом тесте) не ждут, пока группа будет подключена из-за конкуренции ITL, и стратегия, которую использует ORACLE, заключается в использовании нескольких блоков для каждого назначения вставки. , чтобы не было конфликтов между сессиями. Если в абзаце нет лишних блоков (второй случай не имеет отношения к теме).
2.INITRANS = 1 час. Одновременное выполнение нескольких транзакций обновления (до 7 данного теста) не приведет к ожиданию из-за ITL конфликт, когда Oracle, в дополнение к использованию ITL по умолчанию, динамически расширяет требуемый ITL, плотно в очень экстремальных обстоятельствах будет ждать, (конечно, взаимоблокировки или ожидания на уровне приложений не имеют отношения к этой теме.)
1) В блоке нет свободного места, и обратите внимание, что настройки параметров не могут быть слишком маленькими.
2) Общее количество ИТЛ, используемых блоком, превышает максимально допустимое значение ИТЛ для Блока мин. (круглый (BLOCK_SIZE*0,5/24)-2, 255). Чтобы достичь этой экстремальной ситуации, фактическая производственная ситуация сложна и должна быть менее вероятной, чем взаимоблокировка бизнес-SQL. Параметр Initrans, обычно достаточно 1-4, Initrans устанавливается очень большим, когда Oracle имеет плохой блок ошибки, а свободный параметр должен быть осторожным, чтобы не изменить маленький, если вы уже не знаете последствия изменения.
В качестве базового здравого смысла необходимо понимать Initrans. Initrans исходная таблица для обработки транзакций блокировки на уровне строк в каждом блоке равна 1, индекс равен 2, и если в одном фрагменте много строк, которые одновременно обновляются, рекомендуется увеличить значение до сериализуемого уровня изоляции. , по крайней мере, 3. Но на самом деле нецелесообразно изменять значение по умолчанию, потому что транзакция должна записать информацию о входе транзакции в блок, а это означает, что чем больше Initrans, тем больше объем потребляемого пространства и больше времени.
Используется
Когда блок подвергается операции удаления, которая уменьшает используемое пространство до значения pctused, блок повторно добавляется в список свободных мест, и последующие вставки будут использовать этот блок.
/>Maxtrans
В старой версии это управление максимальным числом одновременных транзакций, но новая версия была автоматически так обработана, при необходимости также можно установить этот параметр и pctused, в принципе можно исключить!
Резюмируем:
Pctfree важен, но для системы запросов вы можете в основном установить его на 0.
pctused, так как 10g Oracle использует управление растровым изображением в сегмент и блоком данных, этот параметр можно исключить в принципе
Initrans, это важно, но если это не является специальной настройкой, не изменяйте ее.
Maxtrans, по крайней мере, 10 г или выше, относится к рангам исключения.

Читайте также: