Физически ли отсортированы записи таблицы с кластеризованным индексом по ключу кластеризации? - PullRequest
2 голосов
/ 28 апреля 2011

Мне интересно, отсортирована ли таблица или, в частности, файл кучи с кластеризованным индексом, созданным для одного из атрибутов, по этому атрибуту. Есть ли разница между файлом отсортированной кучи и файлом кучи с кластерным индексом?

1 Ответ

2 голосов
/ 28 апреля 2011

Есть ли разница между отсортированным файлом кучи и файлом кучи с кластеризованным индексом?

Файл отсортированной кучи представляет собой кучу (массивоподобную структуру) с упорядоченными элементами.Это то, что MyISAM делает с ALTER TABLE … ORDER BY … или PostgreSQL делает с CLUSTER.Вставка новой записи в такую ​​таблицу нарушает порядок.

Кластерный индекс - это B-Tree.Вставка новой записи сохраняет порядок.

Записи в кластеризованной таблице не обязательно физически упорядочены (в том смысле, что запись с более высоким значением ключа кластеризации имеет большее смещение в файле или табличном пространстве).

Скорее, записи логически упорядочены: вы можете переходить от одной записи к другой по следующим B-Tree ссылкам (или прямым ссылкам между страницами в случае B+Tree), но это все еще подразумевает случайный поиск дискапотому что логически связанные страницы не обязательно находятся рядом друг с другом на диске.

Некоторые базы данных, например Oracle, позволяют считывать индексы в физическом порядке (используя операцию, известную как INDEX FAST FULL SCAN), что делаетне поддерживает логический порядок, но быстрее из-за преимуществ или последовательного доступа к страницам.

Не существует такого понятия, как «файл кучи с кластеризованным индексом»: организация таблицы является либо кучей, либо кластеризованной.

...