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

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

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

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

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

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

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

Содержание

Реализация в разных СУБД [править]

Oracle Database [править]

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

  • Секционирование по диапазонам значений (Range partitioning)
  • Хеш-секционирование (Hash partitioning)
  • Секционирование по списку значений (List partitioning)
  • Ссылочное секционирование (Reference Partitioning) (11g)
  • Секционирование по интервалу (Interval Partitioning) (11g)
  • Составное секционирование:
    • Диапазонное секционирование с хеш-подсекционированием (Range-hash composite partitioning)
    • Диапазонное секционирование со списочным подсекционированием (Range-list composite partitioning)

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

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

Informix [править]

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

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

MySQL [править]

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

  • По интервалам (RANGE partitioning)
  • По списку значений (LIST partitioning)
  • По хешу (HASH partitioning)
  • По ключам (KEY partitioning)

Примечания [править]

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