Секционирование () — разделение хранимых объектов баз данных (таких как таблиц, индексов, материализованных представлений) на отдельные части с раздельными параметрами физического хранения. Используется в целях повышения управляемости, производительности и доступности для больших баз данных.
Возможные критерии разделения данных, используемые при секционировании — по предопределённым диапазонам значений, по спискам значений, при помощи значений хеш-функций; в некоторых случаях используются другие варианты. Под композитными (составными) критериями разделения понимают последовательно применённые критерии разных типов.
В отличие от сегментирования, где каждый сегмент управляется отдельным экземпляром СУБД, и используются средства координации между ними (что позволяет распределить базу данных на несколько вычислительных узлов), при секционировании доступ ко всем секциям осуществляется из единого экземпляра СУБД (или симметрично из любого экземпляра кластерной СУБД, такого, как Oracle RAC).
Реализации Секционирование реализовано во многих реляционных СУБД, среди таковых — IBM DB2, Informix, Oracle Database, Teradata Database, Microsoft SQL Server, PostgreSQL, MySQL, Adaptive Server Enterprise.
В различных СУБД возможности реализации несколько различаются. В частности, в Oracle Database поддерживаются следующие методы: секционирование по диапазонам значений (), хеш-секционирование (), секционирование по списку значений (), ссылочное секционирование (, начиная с версии 11g), секционирование по интервалу (, 11g), составное секционирование: диапазонное секционирование с хеш-подсекционированием (), диапазонное секционирование со списочным подсекционированием ().
Также в Oracle Database существует три типа секционированных индексов: локально секционированный индекс (), то есть секции индекса соответствуют секциям таблицы; глобально секционированный индекс (), такой индекс разбивается на секции по другим правилам, нежели сама таблица; глобально несекционированный индекс (), такой индекс не разбивается на секции хотя таблица разбита; всевозможные комбинации из этих трёх.
В Informix секционирование называется фрагментацией (), и также позволяет разбивать таблицы и индексы на отдельные фрагменты по разным схемам: круговая фрагментация, по выражениям, по списку значений, по интервалам.
В MySQL начиная с версии 5.1 поддерживает следующие типы секционирования: по интервалам (), по списку значений (), по хешу (), по ключам ().
Примечания
Ссылки Oracle VLDB and Partitioning Guide 12c Release 1 Informix Table fragmentation strategies
Категория:СУБД