Секционирование

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Секционирование (англ. Шаблон:Lang-en2) — разделение хранимых объектов баз данных (таких как таблиц, индексов, материализованных представлений) на отдельные части с раздельными параметрами физического хранения. Используется в целях повышения управляемости, производительности и доступности для больших баз данных.

Возможные критерии разделения данных, используемые при секционировании — по предопределённым диапазонам значений, по спискам значений, при помощи значений хеш-функций; в некоторых случаях используются другие варианты. Под композитными (составными) критериями разделения понимают последовательно применённые критерии разных типов.

В отличие от сегментирования, где каждый сегмент управляется отдельным экземпляром СУБД, и используются средства координации между ними (что позволяет распределить базу данных на несколько вычислительных узлов), при секционировании доступ ко всем секциям осуществляется из единого экземпляра СУБД (или симметрично из любого экземпляра кластерной СУБД, такого, как Oracle RAC).

Реализации

Секционирование реализовано во многих реляционных СУБД, среди таковых — IBM DB2, Informix, Oracle Database, Teradata Database, Microsoft SQL Server, PostgreSQL, MySQL, Adaptive Server Enterprise.

В различных СУБД возможности реализации несколько различаются. В частности, в Oracle Database поддерживаются следующие методы:

  • секционирование по диапазонам значений (Шаблон:Lang-en2),
  • хеш-секционирование (Шаблон:Lang-en2),
  • секционирование по списку значений (Шаблон:Lang-en2),
  • ссылочное секционирование (Шаблон:Lang-en2, начиная с версии 11g),
  • секционирование по интервалу (Шаблон:Lang-en2, 11g),
  • составное секционирование:
    • диапазонное секционирование с хеш-подсекционированием (Шаблон:Lang-en2),
    • диапазонное секционирование со списочным подсекционированием (Шаблон:Lang-en2).

Также в Oracle Database существует три типа секционированных индексов:

  • локально секционированный индекс (Шаблон:Lang-en2), то есть секции индекса соответствуют секциям таблицы;
  • глобально секционированный индекс (Шаблон:Lang-en2), такой индекс разбивается на секции по другим правилам, нежели сама таблица;
  • глобально несекционированный индекс (Шаблон:Lang-en2), такой индекс не разбивается на секции хотя таблица разбита;
  • всевозможные комбинации из этих трёх.

В Informix секционирование называется фрагментацией (Шаблон:Lang-en2), и также позволяет разбивать таблицы и индексы на отдельные фрагменты по разным схемам:

  • круговая фрагментация,
  • по выражениям,
  • по списку значений,
  • по интервалам.

В MySQL начиная с версии 5.1 поддерживает следующие типы секционирования<ref>Шаблон:Cite web</ref>:

Примечания

Шаблон:Примечания

Ссылки

Шаблон:Rq Шаблон:Databases