DeepEdit!

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

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

Основные соображения при секционировании базы данных


Секционирование данных и индексов оптимальным образом приводит кр многим преимуществам. Приведенные ниже соображения помогают в попыт­ках эффективно секционировать таблицы. Эти соображения были собраны из различных примеров реализации секционирования в OracleS. Их необходимо использовать вместе с рекомендациями из руководства по настройке Oracle:
•        Столбцы ключа раздела должны идеально характеризовать данные, а именно:
Быть привязанными ко времени или иметь возможность декомпозиции по некоторым диапазонам.
Преимущественно использоваться во 

фразе where 

запросов
к секционированной таблице.
•        Хотя секционирование по диапазону будет, скорее всего, основным выбором по умолчанию для большинства усилий секционирования, в качестве варианта стоит обсудить и хеш-секционирование, особенно в тех случаях, когда данные трудно декомпозировать (разделить) на диапазоны. Кроме того, если требуются оба вида секционирования, нужно учесть составное секционирование.
•        При реализации секционирования следует для обеспечения лучшей доступности и управляемости рассмотреть вопрос о создании одного табличного пространства для каждого раздела. Такой вариант полезен при установках, где после определенного периода времени данные следует скрыть от широкой публики, а затем сделать их доступными в онлайновом режиме, но по запросу. Если данные раздела перестали быть нужными, раздел можно отключить, выполнив для этого команду
alter tablespace x offlinс Когда данные из этого раздела вновь
потребуются, достаточно будет издать команду alter tablespace х online.
Архивирование и чистка данных путем экспортирования их на ленту для
будущей выборки уже не является допустимым или приемлемым
методом. Это в первую очередь связано с большой длительностью
процесса импорта. При сегодняшних ценах на память данные можно
сохранять на диске, для чего можно применять описанный ниже метод.
Необходимо проанализирбватьтаблицы и индексы, подвергающиеся
секционированию, и установить на CHOOSE параметр инициализации
Oracle OPTIMIZERMODE. Это делается для уверенности, что
оптимизатор во время выполнения запросов удаляет (или отсекает)
ставшие ненужными разделы. Удаление разделов данных
поддерживается        стоимостным оптимизатором, а пререквизитом
(необходимым предварительным условием) удаления является сбор
статистики для таких таблиц и индексов.
При проектировании секционирования базы данных необходимо рассмотреть степень параллелизма секционируемых объектов (см. главу "Настройка параллельных запросов").
Создайте по крайней мере один локальный секционированный индекс,
имеющий префикс. Это послужит гарантией удаления раздела, если
запросы будут выполнять поиски, используя ключ раздела таблицы.
Например, если для таблицы SALES ключом раздела выбран столбец
MonthNo, создание локального секционированного индекса с
префиксом (так, чтобы ведущим столбцом индекса был Month_No)
существенно поможет увеличению производительности запроса.
Оптимизатор автоматически выполнит удаление раздела для запросов,
которые применяют столбец Month_No во 

фразе where 

запроса.
Создайте двоичные секционированные индексы для таблиц, которые в
основном используются для чтения. Это дает двусторонние
преимущества в производительности. Во-первых, получается гораздо
меньший размер индекса (что приведет к чтению меньшего количества
блоков индекса). Во-вторых, для доступа к данным столбцов с низкой
кардинальностью процесс преобразования        для доступа
данным будет работать существенно быстрее, чем традиционные методы, задействованные для доступа к данным в регулярных индексах.
Предпримите все необходимые меры для приложения и среды при
реализации двоичных индексов. Имеет смысл внедрять их только
в тех ситуациях, где это необходимо, например, в случае столбцов
с низкой кардинальностью, которые неадекватно обновляются.
(Это ограничение действует для Oracle 8.0 и более ранних версий,
что означает, что в        для двоичных индексов поддерживаются
столбцы с более высокой кардинальностью).
- Везде, где только возможно, создавайте локальные секционированные индексы, неважно, с префиксами или без. Они используются для уверенности в равновесности секционирования (т.„е. в каждом разделе должно содержаться примерно равное количество значений данных) по значениям ключа секционирования таблицы. Можно задать себе вопрос, а что в нашем мире приводит к равновесному секционированию? Ответ на него будет удивительно простым - это процесс равномерного деления данных между всеми разделами таблицы или индекса. Далее приводятся некоторые причины, которые стоит принять во внимание, если пользователь желает применить локальные секционированные индексы:
•        Локальный индекс секционирован по ключу секционирования таблицы (т. е. разделы индекса будут равно секционированы по отношению к разделам таблицы).
•        Равновесное секционирование индексов способствует справедливому распределению значений индексов по различным разделам индекса.
•        Локальные индексы обеспечивают лучшую доступность, как только релевантные разделы локальных индексов становятся недоступными при выполнении некоторых операций сопровождения разделов (таких, как вычеркивание раздела, усечения раздела и т. п.).
•        В хранилищах данных предпочтительнее использовать индексы без префиксов даже в тех случаях, когда ключ раздела таблицы не является частью определения индекса. Это связано с тем, что
большинство запросов характеризуются крупномасштабными
сканированиями диапазонов и чтением значительного количества данных из таблицы. В'подобных случаях индексы без префиксов обеспечивают лучшую пропускную способность, особенно при их использовании с фразой 

parallel. ш 

Сведите к минимумутам, где возможно, использование глобальных индексов. Они секционируются по ключу раздела своего индекса, что не гарантирует равновесного секционирования значений индекса. Минимизация их использования будет служить гарантией, что определенные операции сопровождения разделов не повлияют на индекс в целом. Этот фактор является ключевым для частичной
доступности данных/индекса. Далее:
Наиболее полезными при поддержке ограничений уникальности для столбцов, не являющихся ключами раздела, являются глобальные секционированные индексы.
Если предикаты фразы 

where 

конкретных запросов содержат столбцы, не являющиеся ключами разделов, глобальные индексы играют существенную роль, так как их наличие служит препятствием для проведения сканирования полной таблицы.
•   Перед тем как над секционированной таблицей будет выполняться групповая операция DML, сделайте индексы непригодными для использования. В этом есть два преимущества. Во-первых, сокращается время, требующееся для выполнения операции DML, во-вторых, ускоряется последующее повторное создание индекса (после групповой операции DML). По объективным причинам (для лучшей производительности и более высокой доступности индекса) при перестройке индекса лучше применять команду alter index index_name rebuild, чем вычеркивать индекс, а затем создавать его с самого начала.
Конфигурируемые параметры инициализации
В этой главе основное внимание фокусировалось на настройке базы данных и связанных с ней компонентов. Но имелись ссылки на различные параметры инициализации Oracle из предыдущих разделов. В приведенной ниже таблице подводятся итоговые сведения и добавляется еще несколько параметров, имею­щих непосредственное отношение к рассматриваемой теме.
 


продвижение создание интернет магазина заказать







jAntivirus