Принцип організації кластерів

Кластеризація є методом спільного зберігання родинних даних (таблиць). Кластер - ϶ᴛᴏ структура пам'яті, в якій зберігається набір таблиць (в одних і тих же блоках пам'яті). Кластерізуемие таблиці повинні мати загальні стовпці, що використовуються для з'єдн ?? ення (наприклад, первинний ключ таблиці ТОВАРИ і зовнішній ключ таблиці ПОСТАВКИ. Рис. 4.8, б).

Рис.4.8. Некластерізованний (а) і Групові (б) дані

Кластерний ключ (КК) - ϶ᴛᴏ поле або набір полів, загальних для вс ?? ех кластерізуемих таблиць. Кожна таблиця, яка зберігається в кластері, повинна мати поля, які відповідають типам і розмірам полів кластерного ключа. Кількість полів в кластерному ключі обмежена (наприклад, для СУБД Oracle8 це обмеження дорівнює 16).

Спільне зберігання даних означає, що на одній сторінці або в одному блоці пам'яті зберігаються дані з нд ?? ех кластеризованих таблиць, які мають однакове значення кластерного ключа. Фізично це зазвичай реалізується так: на початку сторінки (блоку) зберігається запис з таблиці, для якої кластерний ключ є первинним (або унікальним), а слідом за нею розташовуються записи з іншої таблиці (таблиць), що мають ті ж значення кластерного ключа. Фактично, дані зберігаються у вигляді з'єдн ?? ення таблиць за значеннями кластерного ключа. З цієї причини з'єдн ?? ення кластеризованих таблиць в порівнянні з роздільно збереженими таблицями виконується в 3-6 разів швидше.

У разі якщо вс ?? е дані, що відносяться до одного значення кластерного ключа, не поміщаються в одному блоці, то виділяється новий блок пам'яті і попередній блок зберігає посилання на нього. Але якщо система дозволяє через міняти розмір блоку (зокрема, СУБД Oracle), при створенні кластера бажано встановити розмір блоку виходячи з оцінки середнього обсягу записів з однаковими значеннями кластерного ключа. У разі якщо ж записи з однаковим значенням КК займають лише частину блоку (наприклад, в середньому 1К при розмірі блоку 4К), то при створенні таблиці кластера можна вказати кількість значень КК на один блок.

Значення кластерного ключа таблиці можуть оновлюватися. Але це оновлення може викликати фізичне переміщення записи, тому що розташування запису залежить від значення кластерного ключа. З цієї причини часто оновлюються атрибути не є хорошими кандидатами на входження в кластерний ключ.

Два базових переваги кластерів:

  • Зменшується час з'єдн ?? ення таблиць за значенням кластерного ключа.
  • Кожне значення кластерного ключа зберігається тільки один раз, за ​​рахунок чого досягається економія пам'яті.

З іншого боку, наявність кластерів зазвичай збільшує час виконання операції додавання запису (INSERT): система витрачає додатковий час на пошук блоку, в який потрібно помістити новий запис.

Схожі статті