Секционирование: различия между версиями

[непроверенная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Добавлена ссылка на статью по Sybase
она уже и не Sybase, а SAP; оформление
Строка 1:
'''Секционирование''' ({{lang-en|partitioning}}) — разделение хранимых объектов [[База данных|баз данных]] (таких как [[Таблица (базы данных)|таблиц]], [[Индекс (базы данных)|индексов]], [[Материализованное представление|материализованных представлений]]) на отдельные части с раздельными параметрами физического хранения. Используется в целях повышения управляемости, производительности и доступности для больших баз данных.
 
Возможные критерии разделения данных, используемые при секционировании: — по предопределённым диапазонам значений, по спискам значений, при помощи значений [[Хэш-функция|хэш-функций]]; в некоторых случаях используются другие варианты. Под ''композитными'' (составными) критериями разделения понимают последовательно применённые критерии разных типов.
* по предопределённым диапазонам значений;
* по спискам значений;
* при помощи значений хэш-функций.
 
== Реализации ==
Под ''композитными'' (составными) критериями разделения понимают последовательно применённые критерии разных типов.
Секционирование реализовано во многих [[Реляционная СУБД|реляционных СУБД]], всреди частности,таковых в [[IBM DB2]], [[Informix]], [[Oracle Database]], [[Teradata#Database|Teradata Database]], [[Microsoft SQL Server]], [[PostgreSQL]], [[MySQL]], [[Adaptive Server Enterprise|Sybase]].
 
В различных СУБД возможности реализации несколько отличаются. В частности, в Oracle Database поддерживаются следующие методы методы:
Секционирование реализовано во многих [[Реляционная СУБД|реляционных СУБД]], в частности, в [[IBM DB2]], [[Informix]], [[Oracle Database]], [[Teradata#Database|Teradata Database]], [[Microsoft SQL Server]], [[PostgreSQL]], [[MySQL]], [[Adaptive Server Enterprise|Sybase]].
* секционирование по диапазонам значений (''{{lang-en2|range partitioning''}}),
 
* хеш-секционирование (''{{lang-en2|hash partitioning''}}),
== Реализация в СУБД ==
* секционирование по списку значений (''{{lang-en2|list partitioning''}}),
 
* ссылочное секционирование (''{{lang-en2|reference partitioning'')}}, (начиная с версии 11g11''g''),
=== Oracle Database ===
* секционирование по интервалу (''{{lang-en2|interval partitioning}}, 11''g'') (11g),
В [[Oracle Database]] секционирование позволяет большие структуры базы данных (таблицы, индексы) разбить на меньшие части, называемые ''разделами'' ({{lang-en|partition}}). Oracle предлагает несколько методов для различных сценариев:
* секционирование по диапазонам значений (''range partitioning''),
* хеш-секционирование (''hash partitioning''),
* секционирование по списку значений (''list partitioning''),
* ссылочное секционирование (''reference partitioning'') (начиная с версии 11g),
* секционирование по интервалу (''interval partitioning'') (11g),
* составное секционирование:
** диапазонное секционирование с хеш-подсекционированием (''{{lang-en2|range-hash composite partitioning''}}),
** диапазонное секционирование со списочным подсекционированием (''{{lang-en2|range-list composite partitioning''}}).
 
Также в Oracle Database существует 3три типа секционированных индексов:
* локально секционированный индекс (''{{lang-en2|local index''}}), то есть секции индекса соответствуют секциям таблицы;
* глобально секционированный индекс (''{{lang-en2|global partitioned index''}}), такой индекс разбивается на секции по другим правилам, нежели сама таблица;
* глобально несекционированный индекс (''{{lang-en2|global non-partitioned index''}}), такой индекс не разбивается на секции хотя таблица разбита;
* всевозможные комбинации из этих трёх.
 
В [[Informix]] секционирование называется фрагментацией ({{lang-enen2|framentation}}), и также позволяет разбивать таблицы и индексы на отдельные фрагменты по разным схемам:
=== Informix ===
В [[Informix]] секционирование называется фрагментацией ({{lang-en|framentation}}), и также позволяет разбивать таблицы и индексы на отдельные фрагменты по разным схемам:
* круговая фрагментация,
* по выражениям,
Строка 36 ⟶ 28 :
* по интервалам.
 
[[В MySQL]] начиная с версии 5.1 поддерживает секционированиеследующие типы секционирования<ref>[http://dev.mysql.com/doc/refman/5.1/en/partitioning-overview.html 18.1. Overview of Partitioning in MySQL]</ref>. Поддерживаются следующие типы секционирования:
=== MySQL ===
* по интервалам ({{lang-en2|range partitioning}}),
[[MySQL]] начиная с версии 5.1 поддерживает секционирование<ref>[http://dev.mysql.com/doc/refman/5.1/en/partitioning-overview.html 18.1. Overview of Partitioning in MySQL]</ref>. Поддерживаются следующие типы секционирования:
* по интерваламсписку значений (''range{{lang-en2|list partitioning''}}),
* по списку значенийхешу (''list{{lang-en2|hash partitioning''}}),
* по хешуключам (''hash{{lang-en2|key partitioning''}}),.
* по ключам (''key partitioning'').
 
== Примечания ==
Строка 47 ⟶ 38 :
 
== Ссылки ==
* [http://docs.oracle.com/cd/E16655_01/server.121/e17613/intro.htm Oracle VLDB and Partitioning Guide 12c Release 1] {{ref-en}}
* [http://publib.boulder.ibm.com/infocenter/idshelp/v117/topic/com.ibm.ddi.doc/ids_ddi_085.htm%20 Informix Table fragmentation strategies] {{ref-en}}
 
{{rq|style|sources}}