Хешированные кластеры.
Организация баз данных
Хешированные кластеры можно использовать там, где значение ключа используется для установления условия равенства. Хешированные кластеры не должны использоваться для проверки принадлежности ключа к диапазону или для подстановочных знаков. В некоторых поисках подстановочных знаков и проверках принадлежности к диапазону используются индексы, и для одного и того же столбца можно иметь и индекс… Читать ещё >
Хешированные кластеры. Организация баз данных (реферат, курсовая, диплом, контрольная)
Хешированный кластер аналогичен по своему характеру, индексированному кластеру в том отношении, что строки в нем хранятся в зависимости от значения ключа. Однако в состав хешированного кластера входит только одна таблица. Физическое расположение хранимой строки все еще основано на значении ключа, но значение ключа используется в хеш-функции, которая вырабатывает данные о физическом расположении строки.
Преимущество хешированного кластера состоит в том, что при выборе строки на основе значения ключа информацию о физическом расположении строки можно получить по значению ключа без необходимости выполнения полного просмотра таблицы или индексного доступа к данным.
Для хешированного кластера создается кластерный объект посредством определения типа ключевых столбцов, размера каждой строки и числа различных значений ключа. Эта информация используется для определения того, где будут храниться строки и какой объем памяти должен быть первоначально распределен для хешированного кластера (если фраза storage не определена) — дополнительный объем памяти будет автоматически распределен, когда потребуется, точно так же, как распределяются дополнительные экстенты для других объектов базы данных.
В следующем примере показано создание хешированного кластера, в котором хранятся данные таблицы командированных сотрудников. Можно определить, что строки с одним и тем же хешированным значением (mycol, который хранит номер заказчика) будут иметь средний размер 1 Кб. Число различных хешированных значений ключа равно 200 (число различных номеров заказчиков).
SQL> CREATE CLUSTER hashed_delegates (delegatejd NUMBERS, 0)).
SIZE IK HASH IS delegatejd HASHKEYS 200;
Cluster created.
SQL>
SQL>
CREATE TABLE delegates.
(d_delegate_idNUMBER (5)NOTNULL, d_lastnameVARCHAR2(20)NOTNULL, d_firstnameVARCHAR2(20), d_organizationVARCHAR2(20), d_sex VARCHAR2(1), date_last_contacted DATE).
CLUSTER hashed_delegates (d_delegate_id);
Table created.
SQL>
Указанный выше хешированный кластер можно использовать в запросе следующего типа, где известно значение ключа:
SQL> SELECT *.
FROM delegates.
WHERE d_delegate_id = 25;
Хешированные кластеры можно использовать там, где значение ключа используется для установления условия равенства. Хешированные кластеры не должны использоваться для проверки принадлежности ключа к диапазону или для подстановочных знаков. В некоторых поисках подстановочных знаков и проверках принадлежности к диапазону используются индексы, и для одного и того же столбца можно иметь и индекс, и хешированный кластер, чтобы ускорить поиск для условий точных соответствий (хешированные кластеры) и частичных соответствий (индексы).
ПРИМЕЧАНИЕ.
Для одного и того же столбца таблицы может быть установлен и хешированный кластер, и обычный индекс.
Один из недостатков хешированных кластеров состоит в том, что если значения ключа не распределены равномерно (например, если хешированный кластер создан на фамилиях командированных сотрудников и имеется много командированных сотрудников с одинаковой фамилией), то к одному и тому же физическому расположению будет подключено много строк. Блоки Oracle могут хранить только определенное число строк (в зависимости от того, какие они имеют размеры.) и те строки, которые не впишутся в блок, будут храниться в другом блоке, называемом блоком переполнения. Если затем потребуется обратиться ко всем строкам с тем же значением ключа, программное обеспечение Oracle будет обращаться к первоначальному блоку и ко всем блокам переполнения. Это приведет к доступу к большему числу блоков Oracle, что повлечет за собой снижение производительности.