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

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

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

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

Реализации[править | править вики-текст]

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

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

  • секционирование по диапазонам значений (range partitioning),
  • хеш-секционирование (hash partitioning),
  • секционирование по списку значений (list partitioning),
  • ссылочное секционирование (reference partitioning, начиная с версии 11g),
  • секционирование по интервалу (interval partitioning, 11g),
  • составное секционирование:
    • диапазонное секционирование с хеш-подсекционированием (range-hash composite partitioning),
    • диапазонное секционирование со списочным подсекционированием (range-list composite partitioning).

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

  • локально секционированный индекс (local index), то есть секции индекса соответствуют секциям таблицы;
  • глобально секционированный индекс (global partitioned index), такой индекс разбивается на секции по другим правилам, нежели сама таблица;
  • глобально несекционированный индекс (global non-partitioned index), такой индекс не разбивается на секции хотя таблица разбита;
  • всевозможные комбинации из этих трёх.

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

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

В MySQL начиная с версии 5.1 поддерживает следующие типы секционирования[1]:

  • по интервалам (range partitioning),
  • по списку значений (list partitioning),
  • по хешу (hash partitioning),
  • по ключам (key partitioning).

Примечания[править | править вики-текст]

Ссылки[править | править вики-текст]