Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Кластерный индекс как в MSSQL / 17 сообщений из 17, страница 1 из 1
28.10.2002, 15:31
    #32062385
Guest1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кластерный индекс как в MSSQL
Насколько я понял у Oracle такого нет, но слышал что есть хеш-кластер, насколько это если можно так сказать одно и тоже?
...
Рейтинг: 0 / 0
28.10.2002, 15:39
    #32062387
killed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кластерный индекс как в MSSQL
а ты не мог бы рассказать, что такое кластерный индекс в понимании MS и чем он отличается от обычного B*Tree (деревянного) ?

Я как-то спросил в мс-эхе, а в ответ тишина. Видать вопрос был слишком глупый ...

Если расскажешь, что-такое кластерный индекс в МС, я тебе подберу подходящий по твоей задаче из десятка существующих в оракл :-)
...
Рейтинг: 0 / 0
28.10.2002, 15:48
    #32062393
lvv
lvv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кластерный индекс как в MSSQL
Кластерный - это когда на уровне листьев располагаются не ссылки на данные, а сами данные. Таким образом таблица оказывается физически отсортированной по этому индексу
...
Рейтинг: 0 / 0
28.10.2002, 15:50
    #32062394
Guest1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кластерный индекс как в MSSQL
Цитата (Мамаев, Шкарина):
Принципиальным отличием кластерного индекса от индексов других типов является, то что при его определении в таблице физическое расположение данных перестраивается в соответствии со структурой индекса
...
Рейтинг: 0 / 0
28.10.2002, 16:05
    #32062400
killed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кластерный индекс как в MSSQL
Понятно...кроме одного...чего тут кластерного. Хотя у МС понятие кластера всегда было своим... запатентованным ;-)

Думаю, похоже на IOT- Index Organized Tables. Советую использовать осторожно, с предварительным анализом. Есть ограничения/баги.
...
Рейтинг: 0 / 0
28.10.2002, 16:07
    #32062401
lh@work
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кластерный индекс как в MSSQL
Если не ошибаюсь, у Oracle аналогом clustered index будет IOT (Index-organized table). Про них можно почитать здесь:
Код: plaintext
http://otn.oracle.com/docs/products/oracle9i/doc_library/release2/server. 920 /a96521/tables.htm# 8192 

С уважением, Наталия
...
Рейтинг: 0 / 0
28.10.2002, 16:11
    #32062403
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кластерный индекс как в MSSQL
"...при его определении в таблице физическое расположение данных перестраивается в соответствии со структурой индекса"

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

И вообще в чём смысл физического упорядочивания в понимании MSSQL?
...
Рейтинг: 0 / 0
28.10.2002, 16:22
    #32062408
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кластерный индекс как в MSSQL
Сразу не отходя от кассы по поводу кластеров в Oracle.
Как я понимаю, кластеры используются для таблиц, которые совместно используются в операторах select.
При выполнении соединения кластеризованных таблиц количество блоков данных считываемых для удовлетворения запроса, значительно уменьшается. Данные хранятся в одной и той же физической области, что снижает обьём ввода/вывода информации таблиц.

Насколько я знаю использование кластеров накладывает определённые ограничения на некоторые расширенные возможности Oracle, такие как Advanced Replication.
Это надо учитывать при разработке.
Возможно в 8i и выше это ограничение снято.
Поправьте кто знает.
...
Рейтинг: 0 / 0
28.10.2002, 16:27
    #32062409
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кластерный индекс как в MSSQL
IOT предназначено в основном для хранилищ данных кажется.
...
Рейтинг: 0 / 0
28.10.2002, 16:33
    #32062411
Guest1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кластерный индекс как в MSSQL
Насколько реально незнаю, по крайней мере в списках он есть. Из описания хеш-кластеров(не путать с кластерами, создающимися для ускорения доступа для сильно связанных таблиц) я понял что это наиболее близко,
проблема в том что я так и не понял как уже созданную и заполненную таблицу засунуть в это хеш-кластер

или я че то не понимаю (просьба сильно не бить :))
...
Рейтинг: 0 / 0
29.10.2002, 09:55
    #32062539
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кластерный индекс как в MSSQL
Если кому-то это еще интересно, то
"Microsoft® SQL Server™ 2000 indexes are organized as B-trees. Each page in an index holds a page header followed by index rows. Each index row contains a key value and a pointer to either a lower-level page or a data row. Each page in an index is called an index node. The top node of the B-tree is called the root node. The bottom layer of nodes in the index are called the leaf nodes. The pages in each level of the index are linked together in a doubly-linked list. In a clustered index, the data pages make up the leaf nodes. Any index levels between the root and the leaves are collectively known as intermediate levels.

For a clustered index, sysindexes.root points to the top of the clustered index. SQL Server navigates down the index to find the row corresponding to a clustered index key. To find a range of keys, SQL Server navigates through the index to find the starting key value in the range, and then scans through the data pages using the previous or next pointers. To find the first page in the chain of data pages, SQL Server follows the leftmost pointers from the root node of the index."
...
Рейтинг: 0 / 0
30.10.2002, 11:41
    #32063041
killed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кластерный индекс как в MSSQL
2Guest1

Хэш-кластер обычно применяется для статичных таблиц, где можно подобрать свою или использовать встроенную хэш-функцию. Смысл в том, что имея значение из хэш-столбца, через хэш-функцию вы сразу получаете адрес искомого блока данных. Т.е. за одну операцию чтения вы сразу извлекаете данные. Если использовать индекс, то понадобится как минимум 2 операции чтения. Если таблица будет расти, то хэш-функция будет давать промахи. Уже существующую таблицу преобразовать в кластер нельзя, его нужно создать насколько я помню.
...
Рейтинг: 0 / 0
30.10.2002, 11:49
    #32063047
killed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кластерный индекс как в MSSQL
2Glory

Если я правильно понял, то структура B*Tree индексов в Oracle и MS идентична. MS page == Oracle block. Вопрос по ходу...чем определяется размер страницы в МS? какие размеры могут быть у страницы?

А MS clustered index == Oracle Index Orginized Table. Т.е. у кластеред индекса нет соответствующей таблицы, где хранятся данные, т.е. все данные полностью хранятся в leaf pages. Я правильно понял?
...
Рейтинг: 0 / 0
30.10.2002, 12:51
    #32063095
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кластерный индекс как в MSSQL
чем определяется размер страницы в МS? какие размеры могут быть у страницы?
Размер страницы жестко задан и составляет 8Kb из которых под данные может быть использовано 8060 bytes.

Т.е. у кластеред индекса нет соответствующей таблицы, где хранятся данные, т.е. все данные полностью хранятся в leaf pages. Я правильно понял?
Да, кластерный индекс и есть собственно сама физически упорядоченная таблица + B-дерево
...
Рейтинг: 0 / 0
30.10.2002, 13:34
    #32063116
killed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кластерный индекс как в MSSQL
теперь понятно.
а можно ли в МС на clustered index навесить еще индексы по другим полям?
...
Рейтинг: 0 / 0
30.10.2002, 14:06
    #32063130
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кластерный индекс как в MSSQL
2 killed
Я слабо представляю что значит "на clustered index навесить еще индексы по другим полям". Но если имеется в виду можно ли создавать еще индексы по таблице с кластерным интексом - то можно, но кластерный индекс естественно может быть только один.

Кстати cluster переводится как пучок, гроздь, ничего удивительного в названии индекса кластеным я не вижу.
...
Рейтинг: 0 / 0
30.10.2002, 15:03
    #32063170
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кластерный индекс как в MSSQL
"The pointer from an index row in a nonclustered index to a data row is called a row locator. The structure of the row locator depends on whether the data pages are stored in a heap or are clustered. For a heap, a row locator is a pointer to the row. For a table with a clustered index, the row locator is the clustered index key ."
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Кластерный индекс как в MSSQL / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]