DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Конфигурирование freelists


freelist- 

это набор свободных блоков таблицы, т. е. блоков, в которые можно
вставлять        freelists поддерживаются для таблиц путем связывания заго-
ловков блоков указателями, начинающимися от заголовка сегмента таблицы. Словосочетание "свободный блок" не обязательно означает, что он пустой. Сво­бода блока в этом контексте подразумевает наличие в этом блоке свободного ме­ста (пространства), доступного для операций вставки.
Кода блок заполнен (в нем содержится больше данных, чем разрешено пара-
метром 

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 табличные пространства можно конфигурировать как

локально управляемые 

табличные пространства, устраняя вызовы словаря данных
для выделения и освобождения памяти для объектов в табличном пространст­ве. Таким образом мы избавляемся от множества рекурсивных SQL во время
операций распределения пространства. К тому же, локально управляемые таб­личные пространства никогда не объединяются процессом SMON.
Помимо локально управляемых табличных пространств, или в том случае, если настраиваемая база данных не является БД OracleSi, к действиям по на­стройке для табличных пространств следует отнести разнесение по разным таб­личным пространствам объектов, к которым происходят параллельные обращения, и конфигурирование файлов данных для таких табличных про­странств на независимые внешние устройства. И, конечно, столь же важно уста­новить таким табличным пространствам разумные значения по умолчанию параметров хранения.
 


дц . опухоли молочных желез собак и кошек. . сопровождение сделок с недвижимостью бесплатно







jAntivirus