Мифы и фольклор
Оптимальное число экстентов для каждого объекта равно 1. I
Факты
Нет ничего более далекого от правды, чем это заявление. Мы называем этот миф отцом всех мифов об Oracle. Давайте сразу договоримся: никакого магического числа для оптимального количества экстентов объектов Oracle не существует. Распространители данного утверждения не представляют себе кошмаров
потенциальной фрагментации и управления пространством, которые создает
миф об оптимальном числе экстентов. Эти кошмары возникают потому, что далеко не все объекты в базе данных содержат одинаковое количество данных. Поэтому наличие объектов, которые поддерживаются изменяющимися размерами одного экстента в табличном пространстве, вызывает проблемы, связанные с фрагментацией пространства, и в конечном счете приводит к
вышеупомянутым кошмарам. Абсолютно нормально, если объект состоит из нескольких экстентов. Однако если мы попадаем в другую часть спектра и наш объект состоит из многих тысяч экстентов, возникают совсем другие вопросы. Но сам по себе факт, что объект имеет 1000 экстентов, не вызывает никаких проблем с производительностью, если только размер этих экстентов кратен (DB_FILE_MULTIBLOCK_READ_COUNT * DB BLOCK SIZE).
Это служит гарантией того, что Oracle выдаст одно и то же число системных вызовов по чтению независимо от того, состоит ли объект из одного экстента или их целая тысяча. Если же экстенты не выровнены в соответствии с приведенным выше размером, дополнительные системные вызовы чтению вызовут дополнительную нагрузку на подсистему ввода/вывода. При наличии самого тяжелого сценария можно считать, что для большинства самых тяжело нагруженных объектов на каждый дополнительный экстент приходится
по одному системному вызову по чтению. Если база данных содержит множест-
во объектов со множеством невыровненных экстентов в каждом из них, это не-
избежно приводит к большим накладным расходам для подсистемы
ввода/вывода.
во объектов со множеством невыровненных экстентов в каждом из них, это не-
избежно приводит к большим накладным расходам для подсистемы
ввода/вывода.
Мифы и фольклор
Реорганизация таблицы (операция, состоящая из следующих шагов:
удаление, повторное создание, импорт), содержащей много сотен экстентов, в один экстент обеспечивает повышение производительности.
Факты
Такое утверждение, несомненно, является производным от первого мифа. Экспорт данных, за которым следует импорт, уничтожает фрагментацию на уровне блоков, на уровне строк (если это применимо) и переустанавливает отметку высшей точки таблицы, что, в свою очередь, приводит к повышению производительности. Значит, именно операция дефрагментации (внутри блока и/или строк) и уменьшение числа блоков, которые будут прочитаны при выполнении полного сканирования таблицы, в конечном счете, приводят к повышению производительности .
Заметьте, эффект от того, что вся таблица начинает храниться в одном экстенте, не имеет ничего общего с повышением производительности. Реорганизация таблицы устраняет фрагментацию на уровне блока, потому что процесс импорта заново заполняет каждый блок до уровня pctfree, определенного для блока. Это обеспечивает лучшее сжатие и использование блоков, так как каждый блок наполнен до максимально допустимой емкости.
Фрагментация на уровне строк устраняется в том случае, если сцепленные, или мигрировавшие строки становятся фиксированными (потому что теперь они заново вставлены в абсолютно новые блоки). Сцепленные строки возникают в случаях, когда строка вынужденно хранится в нескольких блоках, так как ее длина превышает имеющееся в одном блоке свободное пространство. Другими словами, сцепленная строка - это строка, разместившаяся в нескольких блоках. Строка называется мигрирующей, если она не может попасть в являющийся для нее текущим блок и поэтому перераспределяется другому блоку (в котором имеется адекватное пространство), а в первоначально отведенном для нее блоке
остается только указатель на ее новое местонахождение. Он необходим, посколь-
ку элементы индекса все еще продолжают указывать именно на первона-
чально распределенный строке блок. В то время как образование сцепленных
ку элементы индекса все еще продолжают указывать именно на первона-
чально распределенный строке блок. В то время как образование сцепленных
строк обычно является проблемой, связанной с длиной строки и размером блока базы данных Oracle, миграция строк связана с нехваткой пространства в блоке, когда требуется сохранить в нем обновленную строку с увеличившейся
длиной. Не стоит и говорить, что Oracle всегда старается мигрировать строку, прежде чем принять решение об образовании цепочки.
Хотя и можно гарантировать, что все мигрировавшие строки будут фиксированы после завершения реорганизации таблицы, но может остаться проблема образования цепочек, если длина строки превышает имеющееся в данных доступное свободное пространство. В случае, когда таблица подвергается значительному числу вставок и удалений, очень важно соответствующим образом скорректировать значения
pctfree
(для уменьшения фрагментации на уровне строк) иpctused
(для уменьшения фрагментации на уровне блока). В той же степени важно скорректировать параметры храненияinitial next
(если они слишком'малы), чтобы не дать таблице достичь состояниятахехкпВЪъше
должны отказываться от привычного способа ее использования только потому, что Oracle поддерживаетunlimited maxextents.
В этой главе мы обсудим вопросы, возникающие при настройке разнообразных компонентов базы данных, связанных с хранением данных. Мы поговорим о вещах, для которых необходимы конфигурирование и управление, обеспечивающие оптимальную производительность. Основная цель данной главы вовсе не настройка. Это проактивное конфигурирование и управление различными компонентами базы данных для уменьшения количества вопросов, становящимися в конечном счете промышленными проблемами. За последние пять лет РСУБД Oracle подверглась многочисленным усовершенствованиям. Сейчас более чем когда бы то ни было имеется необходимость освоить все имеющиеся функциональные возможности этого выпуска Oracle.Важно оказаться на уровне всех новых возможностей, поддерживаемых Oracle.
Далее для полноты картины мы затронем отдельные вопросы, с которыми нам приходилось сталкиваться в процессе работы с гибридными базами данных и базами данных для хранилищ данных. Это вне всякого сомнения более чем полный охват всех тем, поэтому речь о них пойдет, как мы уже отмечали, только для полноты картины. Хотя хранилищам данных сейчас уделяется немало внимания и имеется множество книг, написанных только на эту тему Gary Dodge, Tim Gorman.
Oracle8iData Warehousing),
мы хотели хотя бы коснутьсяосновных вопросов и проблем управления большими базами данных Oracle.
< Предыдущая | Следующая > |
---|