powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Как происходит операция Index Seek на самом нижнем уровне?
25 сообщений из 95, страница 2 из 4
Как происходит операция Index Seek на самом нижнем уровне?
    #37404292
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivКак IOT расшифровывается?
В Вашей терминологии это таблица с единственным кластерным индексом.
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37404310
Index Seek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivOn 08/19/2011 09:08 PM, tanglir wrote:

> Если убрать слово "кластерный", то это Мускль+ИнноДБ.

Зачем убирать ? В InnoDB вообще-то других индексов, кроме кластерных,
вообще не существует. Там всё в одном здоровом индексном дереве.

Это как в InnoDB, делаем на таблицу три индекса и получаем три копии таблицы отсортированные в порядке своих индексов?

Кластерный индекс это когда строится дерево по индексу, а в его листьях расположены остальные столбцы, как например PK в MS SQL. Тут ещё важно что они в базе лежат в порядке индекса для последовательного чтения с диска.
Но кластерный может быть только один индекс на таблицу, остальные обычные с указателями RID в листьях.
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37404312
Index Seek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerНу, "уникальный кластерный индекс" - вещь сама по себе весьма небесспорная, но просто интересно - где на практике применяется описанный угробищный подход?
А в чем угробищность подхода например?
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37404640
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Index SeekКластерный индекс это когда строится дерево по индексу, а в его листьях расположены остальные столбцы, как например PK в MS SQL.PK то здесь причем?..
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37404683
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerMasterZiv хранить в листах индекса значения полей уникального кластерного индекса -- первичного ключа таблицы. В таком случае после поиска индексной записи значения PK используются для повторного поиска нужной индексной записи в первичном ключе

Ну, "уникальный кластерный индекс" - вещь сама по себе весьма небесспорная, но просто интересно - где на практике применяется описанный угробищный подход? Нормальный метод, используется в сиквеле.

Если он по каким-то причинам не подходит, можно не использовать.

Но чаще всего это очень эффективно. Потому как не нужно перестраивать индексы при расщеплении страниц, не нужно удваивать размер индекса и делать по 2 чтения, как в оракле, и к тому же часто бывает, что обращение к страницам вообще не нужно, достаточно обращения к индексу.
Dimitry SibiryakovalexeyvgВ MSSQL rowid и означает номер страницы.
О как... Одна запись на страницу? Шикарно живёте... Нет, конечно, не одна. Это вообще был ответ на вопрос Index Seek.

Имеется в виду, что в rowid уже есть вся необходимая информация, и искать ничего не надо.
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37404685
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperIndex SeekКластерный индекс это когда строится дерево по индексу, а в его листьях расположены остальные столбцы, как например PK в MS SQL.PK то здесь причем?.. Новички часто путают ПК и кластерный индекс (про разницу кластерного индекса и уникального кластерного индекса я вообще молчу - это для лысых профессоров :-) )
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37404720
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgПотому как не нужно перестраивать индексы при расщеплении страниц
Это при расщеплении каких страниц перестраиваются индексы?...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37404756
Index Seek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SergSuperIndex SeekКластерный индекс это когда строится дерево по индексу, а в его листьях расположены остальные столбцы, как например PK в MS SQL .PK то здесь причем?..
Это "как например".
PK в MS SQL - всегда есть кластерный индекс.

alexeyvgSergSuperпропущено...
PK то здесь причем?.. Новички часто путают ПК и кластерный индекс (про разницу кластерного индекса и уникального кластерного индекса я вообще молчу - это для лысых профессоров :-) )
Надеюсь я ничего не напутал?

alexeyvgНо чаще всего это очень эффективно. Потому как не нужно перестраивать индексы при расщеплении страниц, не нужно удваивать размер индекса и делать по 2 чтения, как в оракле, и к тому же часто бывает, что обращение к страницам вообще не нужно, достаточно обращения к индексу.
А где там в Оракле удваивается размер индекса?

Кстати в Оракле можно делать кластерные IOT, по аналогии с кластерными таблицами (не путать с кластерным индексом)?
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37404761
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Index SeekА в чем угробищность подхода например?
В том, что для индекса, например, глубины 5, нужно аж 10 чтений, чтобы добраться до искомых данных.

Index SeekА где там в Оракле удваивается размер индекса?
Да Вы не беспокойтесь, коллега так спешит писать, что не успевает читать. Где уж тут думать...
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37404781
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Index SeekSergSuperпропущено...
PK то здесь причем?..
Это "как например".
PK в MS SQL - всегда есть кластерный индекс.

вобще-то не обязательно
Но PK - это логическое понятие, а тут разговор о физическом хранении
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37404792
Index Seek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerIndex SeekА в чем угробищность подхода например?
В том, что для индекса, например, глубины 5, нужно аж 10 чтений, чтобы добраться до искомых данных.
А можно чуть подробней? Или вы имеете ввиду при доступе к данным IOT/(таблицы с кластерным индексом) не по кластерному индексу, а по обычному? Я думаю там в листьях тоже есть информация о номере страницы с данными, навряд ли стали бы они так криво делать.

А если имеете ввиду именно кластерный индекс, то в обычном индексе в листьях находится RID по которому нужно ещё прочитать данные из таблицы, а в кластерном/IOT в листьях сами данные.
Мало того при IOS мы последовательно читаем, а не рандомно.

Например IOS нету в PostgreSQL и Firebird, там SELECT name FROM table ORDER BY id выгоднее делать сортировку чем использовать индекс по ID, как раз по описанной выше причине. По крайне мере в Firebird по этому поводу целая статья была.

SergSuperIndex Seekпропущено...

Это "как например".
PK в MS SQL - всегда есть кластерный индекс.

вобще-то не обязательно
Но PK - это логическое понятие, а тут разговор о физическом хранении
А можно пример как создать PK в MS SQL чтобы он не был кластерным индексом?
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37404802
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Index SeekИли вы имеете ввиду ... Я думаю
Я имею в виду реализацию, описанную Master Ziv-ом на прошлой странице.

Index Seekтам SELECT name FROM table ORDER BY id выгоднее делать сортировку чем использовать индекс по ID
Запросы с order by id - вещь редкая, не то чтобы нужная, но из общих соображений я бы отметил, что в них сортировка будет выгоднее индекса всегда, когда нет гарантии в том, что записи вставлялись строго по возрастанию.
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37404809
Index Seek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerIndex SeekИли вы имеете ввиду ... Я думаю
Я имею в виду реализацию, описанную Master Ziv-ом на прошлой странице.

Index Seekтам SELECT name FROM table ORDER BY id выгоднее делать сортировку чем использовать индекс по ID
Запросы с order by id - вещь редкая, не то чтобы нужная, но из общих соображений я бы отметил, что в них сортировка будет выгоднее индекса всегда, когда нет гарантии в том, что записи вставлялись строго по возрастанию.
А ну что Master Ziv сказал я вообще не понял, надеюсь разъяснит.

"Запросы с order by id" это как пример. В реальности это круто скажется при SMJ, с допустим подсчетом агрегатов. В Firebird он начнет дергать таблицу в независимости от того что индекс покрывающий.
IOS по IOT позволит избежать random read, в отличие от index key lookup.
А IOT по сравнению с обычным покрывающим индексом позволит исключить затраты на сортировку по ненужным столбцам, допустим по которым идет подсчет агрегатов.
Собственно для этого например в MS SQL есть включенные столбцы и кластерный индекс, а в Oracle - IOT.
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37404817
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Index SeekВ реальности это круто скажется при SMJ, с допустим подсчетом агрегатов.
Не возьмусь отгадывать, что такое SMJ.

Index SeekВ Firebird он начнет дергать таблицу в независимости от того что индекс покрывающий.
Мне так смутно помнится, что в IB/FB у индексов хитрая версионность, которая идеологически мешает в некоторых случаях их использовать.

Index SeekIOS по IOT позволит избежать random read, в отличие от index key lookup.
Если IOS - это что-нибудь типа Index Order Scan, то фокус как раз в том, что оно далеко не всегда лучшее решение.

Когда расщепляется страница в середине индекса, у сервера есть фактически два варианта: либо передвигать пол-индекса, либо записать новую страницу куда-нибудь в конец, то есть нарушить порядок следования страниц в индексе. Когда после этого производится массовое чтение по [покрывающему] индексу, то "считать индекс от начала до конца и отсортировать" скорее всего будет быстрее, нежели постранично считывать его в нужном порядке.
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37404834
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Index SeekА можно пример как создать PK в MS SQL чтобы он не был кластерным индексом?нет ничего проще:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE table
(
	id INT NOT NULL IDENTITY(  1 ,  1  )
		CONSTRAINT PK_delivery_hdr PRIMARY KEY NONCLUSTERED ( id ) ON [PRIMARY],
	...
) ON [PRIMARY]
GO
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37404841
Index Seek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerIndex SeekIOS по IOT позволит избежать random read, в отличие от index key lookup.
Если IOS - это что-нибудь типа Index Order Scan, то фокус как раз в том, что оно далеко не всегда лучшее решение.

Когда расщепляется страница в середине индекса, у сервера есть фактически два варианта: либо передвигать пол-индекса, либо записать новую страницу куда-нибудь в конец, то есть нарушить порядок следования страниц в индексе. Когда после этого производится массовое чтение по [покрывающему] индексу, то "считать индекс от начала до конца и отсортировать" скорее всего будет быстрее, нежели постранично считывать его в нужном порядке.
SMJ - Sort Merge Join.

Бывает что и Fast Full Index Scan с сортировкой быстрее чем Full Index Scan по сильно фрагментированному индексу. Если это OLTP, то там и данных и запросов таких мало. Если DWH, то индексы обычно в хорошем состоянии.
Но в приведенном мною примере если и случиться FFIS, то не с сортировкой, а с HASH JOIN и HASH MATCH. А вот если зададим в предикатах WHERE диапазоны то приехали, сортировка. Ну а сортировка по фактам DWH вообще унылое зрелище, если только не секционирована по этому полю.
Собственно с диапазонами в предикатах WHERE в Exadata идет FFIS со спасительным Smart Scan. А дальше HJ/HM.

Не знаю насколько в Firebird отсутствие IOS связано с версионностью :)
Но там соответственно не возможно и Fast Full Index Scan.
И нету спасительных в этом случае HASH JOIN с HASH MATCH.
Ну представьте таблицу в 10 ТБ, либо всю сортировать во внешней памяти, либо всю в random read дергать :) Это сутки.
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37404843
Index Seek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
egorych , круто :)
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37405017
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Index SeekНу представьте таблицу в 10 ТБ, либо всю сортировать во внешней памяти, либо всю в random
read дергать :) Это сутки.

Боюсь, что разработчика, написавшего такой запрос, убьют независимо от используемой СУБД...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37405050
Index Seek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovIndex SeekНу представьте таблицу в 10 ТБ, либо всю сортировать во внешней памяти, либо всю в random
read дергать :) Это сутки.

Боюсь, что разработчика, написавшего такой запрос, убьют независимо от используемой СУБД...

Если вы про который я написал, то соединение со справочником и агрегированием по фактам входит почти в любой запрос к DWH и на нормальных СУБД он выполнится за несколько десятков минут. С матвью за минуту.
Или вы про то что его можно выполнить в Firebird за то же время? Расскажите как.
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37405064
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Index Seekсоединение со справочником и агрегированием по фактам входит почти в любой запрос к DWH

И почти любой запрос к DWH молотит террабайты данных? Я думал для этого давно придумали
свёртку в OLAP кубы.

И Firebird, вообще-то, не претендует на использование в DWH. У неё другая ниша.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37405074
Index Seek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovIndex Seekсоединение со справочником и агрегированием по фактам входит почти в любой запрос к DWH

И почти любой запрос к DWH молотит террабайты данных? Я думал для этого давно придумали
свёртку в OLAP кубы.

И Firebird, вообще-то, не претендует на использование в DWH. У неё другая ниша.

А в результате какого запроса получается свёртка в OLAP кубы? :)
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37405113
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Index SeekА в результате какого запроса получается свёртка в OLAP кубы? :)

Разве они обновляются целиком, а не копятся инкрементально?..
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37407543
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 20.08.2011 2:59, Index Seek wrote:

> Это как в InnoDB, делаем на таблицу три индекса и получаем три копии таблицы
> отсортированные в порядке своих индексов?

Нет, конечно. Один кластерный индекс, и два индекса (можно сказать -- кластерные
таблицы), содержащие в листах значения полей кластерного индекса.

> Кластерный индекс это когда строится дерево по индексу, а в его листьях
> расположены остальные столбцы, как например PK в MS SQL. Тут ещё важно что они в
> базе лежат в порядке индекса для последовательного чтения с диска.
> Но кластерный может быть только один индекс на таблицу, остальные обычные с
> указателями RID в листьях.

Спасибо за информацию.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37407965
Index Seek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivOn 20.08.2011 2:59, Index Seek wrote:

> Это как в InnoDB, делаем на таблицу три индекса и получаем три копии таблицы
> отсортированные в порядке своих индексов?

Нет, конечно. Один кластерный индекс, и два индекса (можно сказать -- кластерные
таблицы), содержащие в листах значения полей кластерного индекса.

Два индекса содержащие в листьях значения индексных полей или включенных полей кластерного индекса?
(Индексные - это которые отсортированы в кластерном, включенные - нет)

" и два индекса (можно сказать -- кластерные таблицы)"
Имеется ввиду кластерные таблицы в определениях Oracle?
...
Рейтинг: 0 / 0
Как происходит операция Index Seek на самом нижнем уровне?
    #37409293
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИмеется ввиду кластерные таблицы в определениях Oracle?
да это везде так, потому что по другому не сделаешь. хотя коллега софтварер говорит что в Оракле еще и указатель на страницу хранится.
p.s. чем больше узнаю про оракл тем больше удивляюсь - как он вообще умудряется работать?
...
Рейтинг: 0 / 0
25 сообщений из 95, страница 2 из 4
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Как происходит операция Index Seek на самом нижнем уровне?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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