Кластеризація в базах даних

Як правило, використовується в СУБД середнього і великого розміру. SQL-сервер - сервер середнього класу, а кластеризація в ньому вже є.
Ідея кластеризації полягає в найбільш близькому фізичному розміщенні на диску логічно пов'язаних між собою даних (наприклад, по якому-небудь полю, по ключу). Записи фізично лежать один за одним.

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

Застосовується 2 підходи: внутріфайловая і межфайловая кластеризація.
Внутріфайловая - це коли записи розташовуються один за одним в рамках однієї таблиці.

Межфайловая - один за одним розташовуються записи з пов'язаних таблиць (зчитується запис по черзі, то з однієї, то з іншої).

Основні проблеми виникають при додаванні записів: коли з'являється запис, яку потрібно розмістити між записами. Для цього роблять ЗАПАС, за який відповідає параметр fillpart, зазвичай в% буває 60-80%. Тому фактично спочатку дані заносяться вбраними. Згодом знову виникає та ж проблема. Диспетчер файлів, поки є вільні місця, навіть пересуває записи, щоб вставити потрібну новий запис. Приходить час, коли весь простір заповнений. До кластерам додаються нові блоки, звані екстенти - безперервні області

64 сторінки, які виділяються на диску.

хешировать кластери
Підтримуються в СУБД Oracle, починаючи з 7-й версії, випущеної в 90ті роки. Використовується хешування для швидкого доступу до первинного ключа.

Схожі статті