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

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

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

Возможные критерии разделения данных, используемые при секционировании:

  • по предопределённым диапазонам значений
  • по спискам значений
  • при помощи значений хэш-функций

Под композитными (составными) критериями разделения понимают последовательно применённые критерии разных типов.

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

Реализация в СУБД[править | править исходный текст]

Oracle Database[править | править исходный текст]

В Oracle Database секционирование позволяет большие структуры базы данных (таблицы, индексы) разбить на меньшие части, называемые разделами (англ. partition). Oracle предлагает несколько методов для различных сценариев:

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

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

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

Informix[править | править исходный текст]

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

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

MySQL[править | править исходный текст]

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

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

Примечания[править | править исходный текст]

Ссылки[править | править исходный текст]