Другое

Oracle: партицирование таблиц, как управлять секциями

Lorem ipsum dolor

Разбивка по секциям, фрагментация, партицирование таблиц Oracle — это описания одного и того же процесса, который подразумевает разделение информационных сведений, сохраняемых в табличном представлении базы данных, на раздельные объекты по определенным параметрам. В первую очередь такой процесс нужен при взаимодействии с большими табличными данными.

Большие табличные данные со множеством различных значений довольно сложно контролировать и редактировать. Чтобы облегчить эти процессы, производят партицирование таблиц. По сути, это означает процесс разделения больших нагроможденных таблиц на более мелкие части, с которыми удобно взаимодействовать.

Партицирование таблиц — это распространенный процесс, поэтому он реализован во многих известных системах управления базами данных, например, в:

  •  Oracle Database;

  •  MySQL;

  •  PostgreSQL;

  •  Microsoft SQL Server;

  •  и др.

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

Партицирование таблиц Oracle

Практические задачи, которые решает партицирование таблиц Oracle:

  1. Увеличение производительности и коэффициента полезного действия при взаимодействии с табличными данными. Это происходит за счет того, что не нужно искать информацию по единственной огромной таблице сразу, а лишь в определенных созданных секциях. Плюс открывается возможность параллельной обработки нескольких табличных секций, что, опять же, ускоряет обработку всей таблицы.

  2. Возможность разбить таблицу на архивную и оперативную области. Такой подход эффективен в тех случаях, когда в таблице имеется информация, которая часто меняется, и информация, которая практически не изменяется. Часто изменяемую информацию помещают в отдельную оперативную часть, что ускоряет работу с ней.

  3. Устойчивость к отказам. Каждая отдельная секция представляет собой самостоятельную часть. Если в какой-либо секции возникает проблема, тогда другие секции стабильно продолжают работать. Поэтому информацию, с которой происходит интенсивное взаимодействие, обычно помещают в отдельную секцию, так как при работе с такой информацией присутствует высокий риск возникновения ошибок.

Методы партицирования таблиц Oracle

В разных системах управления базами данных партицирование таблиц может реализовываться по-разному. Что касается таблиц Oracle, то здесь доступны следующие способы:

  •  партицирование таблиц по диапазону значений;

  •  партицирование по хеш-значению;

  •  партицирование по спискам значений;

  •  партицирование по ссылочным значениям;

  •  интервальное партицирование;

  •  составное партицирование.

Теперь рассмотрим, как выглядят вариации партицирования таблиц на практических примерах.

Партицирование таблиц Oracle по диапазону значений

Партицирование таблиц Oracle по диапазону значений основывается на каком-либо столбце табличных данных, который содержит уникальные сведения. Создание отдельных табличных секций происходит по такому принципу:

CREATE TABLE MY.NEWTABLE ( ISN NEWNUMBERS. UPDATED NEWDATES) TABLESPACES HSTNEWDATA

PARTITION BY RANGE (ISN)

(PARTITION PARTISAN_01 VALUE LESS THAN (1500),

PARTITION PARTISAN_02 VALUE LESS THAN (2500),

PARTITION PARTISAN_03 VALUE LESS THAN (3500),

PARTITION PARTISAN_MAXIMUM VALUE LESS THAN (MAXVALUES)

) ENABLE ROW MOVEMENT;

Партицирование таблиц Oracle по спискам значений

Такой метод партицирования удобен, когда присутствует возможность определить список элементов конкретного столбца, чтобы по ним разбить табличное представление на отдельные области. Вот как это происходит на практике:

CREATE TABLE MY.NEWTABLE (ISN NEWNUMBER,UPDATED NEWDATES, L

PARTID AS (TO_NEWNUMBERS(TO_CHAR(UPDATEDS, ’ ’)))

) PARTITION BY LIST(PARTID)

( PARTITION TABLEPART_3 VALUES (3),

PARTITION TABLEPART_4 VALUES (4),

PARTITION TABLEPART_14 VALUES (14));

Партицирование по хеш-значению

Первые два способа партицирования наиболее популярны и часто используются. Все способы, которые будут описаны ниже, применяются в специфических случаях, в том числе и разбивка на табличные секции по хеш-значению. Данный способ основывается на хеш-функциях, поэтому считается наиболее точным.

Вот как этот способ выглядит на практике:

CREATE TABLE MY.NEWTABLE (TASKSISN NEWNUMBERS, OBJECTISN NEWNUMBERS, K PARAMETRS NEWNUMBERS,

CONSTRAINT NEWPK_LISTIN PRIMARY NEWKEY(TASKSISN,OBJECTISN,OBJECTROWID,K PARAMETRS)

) MYORGANIZATION INDEX INCLUDING PARAMETRS OVERFLOW PARTITION BY HASH (TASKSISN) PARTITIONS 24

Составное партицирование

При таком методе внутри одной секции образуется несколько связанных подсекций. А вообще, такой метод понимает смешанное применение нескольких других методов, описанных чуть выше, например, по списку значений и хеш-значениям и др. Причем сочетания способов могут быть различными.

Вот как выглядит составное партицирование таблиц Oracle, где одновременно используются первые два способа, описанные сегодня в статье:

CREATE TABLE MYTABLE.NEWPAY_ORD_RECORDING ( ISN NEWNUMBERS, K

NEWPAY_NEWDATA NEWDATES, NEWPAYER_NEWNAMES VARCHAR3(255). K NEWSTATUS NEWNUMBERS ) TABLESPACE HSTNEWDATA

PARTITION BY RANGE (NEWPAY_NEWDATA)

INTERVAL (NEWINTERVAL '7' DAYS)

SUBPARTITION BY LIST (NEWSTATUS)

SUBPARTITION NEWTEMPLATE (

SUBPARTITION NEWSTATUSK) VALUE0 (0) K TABLESPACE TRNEWDATA1,

SUBPARTITION NEWSTATUS_1 VALUE1 (1) K TABLESPACE TRNEWDATA2,

SUBPARTITION NEWSTATUSK VALUE2 (2) K TABLESPACE TRNEWDATA3 )

(PARTITION PK015KK1 VALUE LESS K

THAN(TO_NEWDATE('02.02.2022','DD.MM.YYYY')))

ENABLE ROW MOVEMENT;

Заключение

Сегодня мы лишь поверхностно коснулись темы «Партиционирование таблиц Oracle» и привели простейшие практические примеры, чтобы вы могли ознакомиться с тем, как оно выглядит. В следующих статьях мы подробнее остановимся на каждом отдельном методе, потому что по каждому из ни есть что рассказать.

Схожие статьи

Firefox Monitor: что это за программа и почему ее стоит скачать?
Другое

Firefox Monitor: что это за программа и почему ее стоит скачать?

Какие преимущества языка C и что на нем могут написать программисты?
Другое

Какие преимущества языка C и что на нем могут написать программисты?

Монитор для веб-дизайнера: как выбрать лучшую и недорогую модель?
Другое

Монитор для веб-дизайнера: как выбрать лучшую и недорогую модель?

Размах выборки в статистике: определение, форма и как его найти
Другое

Размах выборки в статистике: определение, форма и как его найти