freelist-
это набор свободных блоков таблицы, т. е. блоков, в которые можновставлять freelists поддерживаются для таблиц путем связывания заго-
ловков блоков указателями, начинающимися от заголовка сегмента таблицы. Словосочетание "свободный блок" не обязательно означает, что он пустой. Свобода блока в этом контексте подразумевает наличие в этом блоке свободного места (пространства), доступного для операций вставки.
Кода блок заполнен (в нем содержится больше данных, чем разрешено пара-
метром
операции удаления для этого блока могут привести к тому, что его использова-
ние упадет ниже уровня а за этим последует включение блока в начало
списка свободных блоков (freelist). Значение по умолчанию для количества спи-
сков свободных блоков таблицы равно 1. Это может вызывать узкие места для
таблиц, где приходится поддерживать несколько параллельных операций встав-
ки из нескольких транзакций. Все такие транзакции при необходимости дол-
жны обращаться к первому блоку списка свободных блоков (началу списка) для
вставки данных именно в этот блок.
метром
pctfree), он
вычеркивается из списка свободных блоков. Последующиеоперации удаления для этого блока могут привести к тому, что его использова-
ние упадет ниже уровня а за этим последует включение блока в начало
списка свободных блоков (freelist). Значение по умолчанию для количества спи-
сков свободных блоков таблицы равно 1. Это может вызывать узкие места для
таблиц, где приходится поддерживать несколько параллельных операций встав-
ки из нескольких транзакций. Все такие транзакции при необходимости дол-
жны обращаться к первому блоку списка свободных блоков (началу списка) для
вставки данных именно в этот блок.
Хотя имеется много печатных и электронных материалов, рекомендующих конфигурировать число списков freelists равным числу параллельно выполняющихся транзакций, оказалось, что вполне адекватным для большинства систем является значение, равное удвоенному числу ЦП. Для систем, укомплектованных большим количеством ЦП, это значение може'т оказаться меньше числа параллельно выполняющихся транзакций. Если сконфигурировать несколько
freelists, общее число свободных блоков будет сегментировано в соответствии с
числом списков freelists, что облегчает нескольким одновременно выполняющимся транзакциям доступ к первому свободному блоку в одном из списков свободных блоков. Таким образом, сконфигурировав несколько списков
свободных блоков, можно быть уверенным, что единственный свободный блок
не станет источником конкуренции для нескольких одновременно выполняющихся операций вставки.
Если вы отказываетесь от этого, имеется возможность искусственно повысить отметку максимального уровня таблицы. Это связано с тем, что Oracle вставляет блоки в freelist по 5 штук за один раз для каждого из списков. К примеру, если для какой-то таблицы сконфигурировано 40 списков свободных блоков, то процесс вставки в эти списки приведет к тому, что будет вставлено 200 блоков. Значит, при самом плохом сценарии процесс сервера будет вынужден при выполнении полного сканирования таблицы прочесть дополнительные 160 блоков (причем некоторые из них могут вообще не содержать данных). К тому же нет гарантии, что все вставленные пользователями данные будут равномерно распределены по спискам свободных блоков. Причиной этого является формула, которой Oracle пользуется при назначении freelist конкретному процессу сервера. С конкуренцией freelist необходимо бороться проактивным образом, определяя должным образом их количество для тех таблиц, которые испытывают удар со стороны многочисленных параллельных операций вставки, выполняемых несколькими транзакциями.
Замечание
Конкуренцию за список свободных блоков невозможно исследовать и вытащить на поверхность, используя динамические представления производительности V$WAITSTAT и V$SYSSTAT. Тем не менее, дальнейшее погружение в события ожидания Oracle buffer busy waits, находящиеся в представлений V$SESSION_WAIT, предложит сведения о природе и причине этих событий. По нашему опыту работы со многими промышленными системами, событие ожидания
buffer busy waits
играет роль термометра в ситуации конкуренции за freelist.Проектирование, конфигурирование и настройка табличных пространств
Табличные пространства, если корректно спроектировать и реализовать,
помогают облегчить администрирование и управление системой. При этом уве-
личивается доступность приложений и данных. О настройке производительно-
сти через табличные пространства сказать почти быть может, за одним
исключением. В Oracle8i табличные пространства можно конфигурировать как
помогают облегчить администрирование и управление системой. При этом уве-
личивается доступность приложений и данных. О настройке производительно-
сти через табличные пространства сказать почти быть может, за одним
исключением. В Oracle8i табличные пространства можно конфигурировать как
локально управляемые
табличные пространства, устраняя вызовы словаря данныхдля выделения и освобождения памяти для объектов в табличном пространстве. Таким образом мы избавляемся от множества рекурсивных SQL во время
операций распределения пространства. К тому же, локально управляемые табличные пространства никогда не объединяются процессом SMON.
Помимо локально управляемых табличных пространств, или в том случае, если настраиваемая база данных не является БД OracleSi, к действиям по настройке для табличных пространств следует отнести разнесение по разным табличным пространствам объектов, к которым происходят параллельные обращения, и конфигурирование файлов данных для таких табличных пространств на независимые внешние устройства. И, конечно, столь же важно установить таким табличным пространствам разумные значения по умолчанию параметров хранения.
< Предыдущая | Следующая > |
---|