Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Свойства хеш-ключей

Читайте также:
  1. А. ХАРАКТЕРНЫЕ СВОЙСТВА КАЖДОГО ОРГАНА
  2. Автономные и неавтономные динамические системы. Свойства решений автономных динамических систем (АДС). Фазовый портрет и бифуркации.
  3. Билет 23. Магнитные свойства ферромагнетиков.
  4. ВЕНТИЛЬНЫЕ СВОЙСТВА ПОЛУПРОВОДНИКОВ
  5. Версии стандарта ATA, скорость передачи и свойства
  6. Виджеты и их свойства
  7. Влияние нагрева на структуру и свойства деформированного металла.

Давайте рассмотрим некоторые свойства хеш-ключей.

• Хеш-ключ можно применять только при поиске по равенству.

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

• Для эффективной работы хеш-ключа необходимо точно задать размеры таблицы.

• Для эффективной работы хеш-ключа необходим хороший алгоритм хеширования.

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

• Завышение размеров таблицы приводит к появлению разреженных блоков и, следовательно, к неэффективному полному сканированию таблицы.

• Общий объем необходимого пространства в хеш-кластере с нормально установленными размерами должен быть меньше, чем сумма объемов данных и индексов, имеющих структуру В*-дерева.

• Вместо хеш-функции, которая предлагается в Oracle, можно написать свою. (В версиях начиная с 7.2 этот процесс проще, чем в предыдущих версиях.)

• Если столбец таблицы содержит целочисленные значения, имеющие равномерное распределение, его можно использовать в качестве хеш-ключа, не применяя никаких функций (с помощью HASH_IS). Именно это позволяет задавать собственную хеш-функцию в версиях 7.0 и 7.1.

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

• Хеш-ключи не следует использовать в случае, если ключ подвержен изменениям, так как при этом понадобится переставлять всю строку. Это, конечно, характерно для всех кластерных ключей.

• Хеш-ключи вряд ли стоит применять, если один и тот же ключ используется и для сканирования. Этот механизм не поддерживает сканирование, и, возможно, придется строить по этому же ключу обычный индекс.

• Хеш-ключи нельзя объявлять уникальными. Это серьезный недостаток, потому что, если ключ уникален и пользователь хочет, чтобы Oracle в обеспечила его уникальность, он должен либо применить ограничение UNIQUE или PRIMARY KEY (которое построит традиционный индекс), либо создать триггеры BEFORE INSERT и BEFOR UPDATE, проверяющие этот ключ.

Чтобы основанное на триггерах решение работало надежно, а не просто большую часть времени, требуется эксклюзивная блокировка. Обычно она устанавливается на кластеризованной таблице, но — если это может вызвать серьезное снижение производительности — решение можно построить с помощью пакета DBMS_LOCK (который есть в Огас1е7) путем блокирования хешированного ключевого значения. Хотя при этом решении используется кооперативная блокировка, которую мы обычно не рекомендуем (из-за того, что какая-нибудь программа может отказаться от совместной работы) и при которой блокировка помещается в триггер, единственный путь избежать его - выполнять программу с отключенным триггером.


Дата добавления: 2015-08-09; просмотров: 89 | Нарушение авторских прав


Читайте в этой же книге: Исследование синтетических, или суррогатных, ключей | Неуникальные (или почти уникальные) ключи | Замена длинных каскадных ключей суррогатными | Как работает индекс? | Примечание | Отключение индексов | Составные индексы | Индексные кластеры |
<== предыдущая страница | следующая страница ==>
Примечание| Пример хеш-кластера

mybiblioteka.su - 2015-2024 год. (0.006 сек.)