Хеш-разделение таблиц Oracle

Иногда требуется разбить большую таблицу, но в ней нет столбца, по которому можно было бы провести разделение по диапазону. Появившееся в Oracle 8i хеш-разделение (hash partitioning) позволяет указать только количество разделов и столбцы, по которым проводится разделение (ключ разделения), а собственно распределением строк по разделам занимается Oracle.


При вставке строк в разделенную таблицу Oracle пытается равномерно распределить данные между разделами, применяя к данным ключа разделения хеш-функцию. Значение, воз­вращаемое хеш-функцией, определяет в какой раздел попадет строка. Если столбцы ключа разделения включены в инструкцию WHERE оператора SELECT, DELETE или UPDATE, то для определения того, какой раздел просматривать, Oracle использует хеш-функцию. Покажем, как можно разделить таблицу деталей хешированием столбца part_nbr:

create table part (        part_nbr varchar2(20) not null,      name varchar2(50) not null,        supplier_id number(6) NOT null,
      iriventory_qty number(6) not null,
      status varchar2(10) not null, 
       unit_cost number(8,2),
       resupply_date date
       )
PARTITION BY HASH (part_nbr)        (partition part1 tablespace p1,         partition part2 tablespace p2,
         partition part3 tablespace p3,
         partition part4 tablespace p4);

Чтобы равномерно распределить данные между разделами, необходимо выбирать в качестве ключей разделения столбцы большой мощности (high cardinality). Говорят, что множество столбцов обладает большой мощностью, если количество различных значений достаточно велико по сравнению с размером таблицы.[1] Выбор в качестве ключа разделения столбца большой мощности гарантирует равномерное распределение данных по разделам. В противном случае разделы получаются не­сбалансированными, что делает производительность непредсказуемой и усложняет администрирование.

 


[1] Самой высокой мощностью обладает уникальный ключ, так как в нем все строки имеют различные значения. Примером столбца низкой мощности является столбец стран в таблице клиентов, содержащей миллионы записей.

Вас заинтересует / Intresting for you:

Oracle и непроцедурный доступ ...
Oracle и непроцедурный доступ ... 8522 просмотров Antoni Tue, 21 Nov 2017, 13:32:50
Видеокурс по администрированию...
Видеокурс по администрированию... 10719 просмотров Илья Дергунов Mon, 14 May 2018, 05:08:47
Работа с запросами Approximate...
Работа с запросами Approximate... 2289 просмотров Андрей Васенин Mon, 29 Oct 2018, 06:40:46
Отмена сессий в Oracle (ALTER ...
Отмена сессий в Oracle (ALTER ... 23217 просмотров Stepan Ushakov Thu, 01 Nov 2018, 18:04:59
Войдите чтобы комментировать