Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
 Как происходит операция Index Seek на самом нижнем уровне?  [new]
Index Seek
Guest
Допустим есть таблица без PK и по одному из её полей построен индекс. Как происходит операция Index Seek на самом нижнем уровне?
Проходим по узлам дерева до листьев, а там лежит служебное rowid и номер страницы в которой искомая запись, и по этому номеру страницы вычисляем смещение с которого нужно прочитать данные из файла БД?
17 авг 11, 01:17    [11129959]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
Index Seek
Guest
Ну и интересует как это реализовано в различных СУБД и есть ли принципиальные отличия?
17 авг 11, 01:18    [11129960]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Index Seek,

MS SQL, Reading Pages
17 авг 11, 08:26    [11130366]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

On 17.08.2011 2:18, Index Seek wrote:

> Ну и интересует как это реализовано в различных СУБД и есть ли принципиальные
> отличия?

В разных СУБД по-разному.
Есть принципиальные отличия.

Posted via ActualForum NNTP Server 1.4

17 авг 11, 09:48    [11130716]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
Index Seek
Guest
pkarklin, спасибо!

MasterZiv
Ок. А какие основные отличия?
17 авг 11, 14:34    [11133290]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30233
Index Seek
и по этому номеру страницы вычисляем смещение с которого нужно прочитать данные из файла БД?

смещение, конечно, да, но обычно имеется в виду размер_страницы * номер_страницы. И читаются обычно страницы целиком.
18 авг 11, 10:51    [11137745]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34709

On 17.08.2011 15:34, Index Seek wrote:

> MasterZiv
> Ок. А какие основные отличия?

В общем-то кратко -- два подхода:
  • хранить в листах индекса ROWID -- некий физический адрес, по которому можно
    найти запись (типа НОМЕР_ФАЙЛА:НОМЕР_СТРАНИЦЫ::НОМЕР_ЗАПИСИ). В таком случае
    после поиска индексной записи в индексе производится чтение записи по
    физическому адресу.
  • хранить в листах индекса значения полей уникального кластерного индекса --
    первичного ключа таблицы. В таком случае после поиска индексной записи значения
    PK используются для повторного поиска нужной индексной записи в первичном ключе
    таблицы, в листах которого находится уже физически запись со всей строкой.

    Posted via ActualForum NNTP Server 1.4

  • 19 авг 11, 11:52    [11144872]     Ответить | Цитировать Сообщить модератору
     Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
    alexeyvg
    Member

    Откуда: Moscow
    Сообщений: 32168
    MasterZiv
    В общем-то кратко -- два подхода:
    Как я понял, человек спрвшивает про варианты реализации в первом случае.
    Index Seek
    а там лежит служебное rowid и номер страницы в которой искомая запись, и по этому номеру страницы вычисляем смещение с которого нужно прочитать данные из файла БД?
    В MSSQL rowid и означает номер страницы. В других СУБД - не знаю...
    19 авг 11, 16:15    [11147688]     Ответить | Цитировать Сообщить модератору
     Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
    Dimitry Sibiryakov
    Member

    Откуда:
    Сообщений: 54759

    alexeyvg
    В MSSQL rowid и означает номер страницы.

    О как... Одна запись на страницу? Шикарно живёте...

    Posted via ActualForum NNTP Server 1.4

    19 авг 11, 16:33    [11147854]     Ответить | Цитировать Сообщить модератору
     Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
    Зайцев Фёдор
    Member

    Откуда: Лужки
    Сообщений: 5308
    Dimitry Sibiryakov
    О как... Одна запись на страницу? Шикарно живёте...

    http://msdn.microsoft.com/ru-ru/library/ms190969%28v=SQL.100%29
    19 авг 11, 17:03    [11148083]     Ответить | Цитировать Сообщить модератору
     Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
    MasterZiv
    Member

    Откуда: Питер
    Сообщений: 34709

    On 19.08.2011 17:15, alexeyvg wrote:

    > В MSSQL rowid и означает номер страницы. В других СУБД - не знаю...

    В MSSQL rowid и означает номер страницы и номер записи на этой странице.

    Posted via ActualForum NNTP Server 1.4

    19 авг 11, 18:11    [11148558]     Ответить | Цитировать Сообщить модератору
     Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
    Ivan Durak
    Member

    Откуда: Minsk!!!
    Сообщений: 3787
    Dimitry Sibiryakov
    alexeyvg
    В MSSQL rowid и означает номер страницы.

    О как... Одна запись на страницу? Шикарно живёте...

    это он пошутил так


    Указатель строится на основе идентификатора файла (ID), номера страницы и номера строки на странице. Весь указатель целиком называется идентификатором строки (RID).
    19 авг 11, 18:17    [11148590]     Ответить | Цитировать Сообщить модератору
     Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
    softwarer
    Member

    Откуда: 127.0.0.1
    Сообщений: 67390
    Блог
    MasterZiv
  • хранить в листах индекса значения полей уникального кластерного индекса -- первичного ключа таблицы. В таком случае после поиска индексной записи значения PK используются для повторного поиска нужной индексной записи в первичном ключе

  • Ну, "уникальный кластерный индекс" - вещь сама по себе весьма небесспорная, но просто интересно - где на практике применяется описанный угробищный подход?
    19 авг 11, 19:34    [11148830]     Ответить | Цитировать Сообщить модератору
     Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
    Dimitry Sibiryakov
    Member

    Откуда:
    Сообщений: 54759

    softwarer
    просто интересно - где на практике применяется описанный угробищный подход?

    Paradox.

    Posted via ActualForum NNTP Server 1.4

    19 авг 11, 19:52    [11148887]     Ответить | Цитировать Сообщить модератору
     Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
    softwarer
    Member

    Откуда: 127.0.0.1
    Сообщений: 67390
    Блог
    Dimitry Sibiryakov
    softwarer
    просто интересно - где на практике применяется описанный угробищный подход?

    Paradox.

    (побрызгал святой водой)
    19 авг 11, 19:53    [11148893]     Ответить | Цитировать Сообщить модератору
     Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
    tanglir
    Member

    Откуда:
    Сообщений: 28966
    softwarer
    просто интересно - где на практике применяется описанный угробищный подход?
    Если убрать слово "кластерный", то это Мускль+ИнноДБ.
    19 авг 11, 20:08    [11148929]     Ответить | Цитировать Сообщить модератору
     Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
    miksoft
    Member

    Откуда:
    Сообщений: 38918
    tanglir
    softwarer
    просто интересно - где на практике применяется описанный угробищный подход?
    Если убрать слово "кластерный", то это Мускль+ИнноДБ.
    И, кстати, IOT-ы в Оракле разве не также сделаны?
    19 авг 11, 20:11    [11148938]     Ответить | Цитировать Сообщить модератору
     Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
    softwarer
    Member

    Откуда: 127.0.0.1
    Сообщений: 67390
    Блог
    miksoft
    tanglir
    пропущено...
    Если убрать слово "кластерный", то это Мускль+ИнноДБ.
    И, кстати, IOT-ы в Оракле разве не также сделаны?

    А хз, если честно. Я не зря сказал "на практике", потому как мелькнула та же мысль :) IOT-ы в оракле используются не то чтобы часто, и совершенно точно с однозначной рекомендацией "без левых индексов".
    19 авг 11, 20:20    [11148957]     Ответить | Цитировать Сообщить модератору
     Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
    softwarer
    Member

    Откуда: 127.0.0.1
    Сообщений: 67390
    Блог
    miksoft
    И, кстати, IOT-ы в Оракле разве не также сделаны?

    Посмотрел, как. Да нет, таки заметно получше :)
    19 авг 11, 20:26    [11148969]     Ответить | Цитировать Сообщить модератору
     Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
    miksoft
    Member

    Откуда:
    Сообщений: 38918
    softwarer
    miksoft
    И, кстати, IOT-ы в Оракле разве не также сделаны?

    Посмотрел, как. Да нет, таки заметно получше :)
    Можно в двух словах разницу?
    19 авг 11, 20:28    [11148976]     Ответить | Цитировать Сообщить модератору
     Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
    softwarer
    Member

    Откуда: 127.0.0.1
    Сообщений: 67390
    Блог
    miksoft
    Можно в двух словах разницу?

    Если над IOT строится вторичный индекс, то его значением является UROWID, включающее в себя как физический адрес блока, так и представление первичного ключа. При доступе по вторичному индексу СУБД берёт адрес, дёргает блок, и если не находит в нём нужной записи, то использует представление для поиска по базовому индексу. Таким образом до тех пор, пока строчки в IOT не начинают часто мигрировать, доступ к ним оказывается вполне эффективным.
    19 авг 11, 20:32    [11148984]     Ответить | Цитировать Сообщить модератору
     Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
    miksoft
    Member

    Откуда:
    Сообщений: 38918
    softwarer
    UROWID, включающее в себя как физический адрес блока, так и представление первичного ключа.
    Про этот момент забыл. Тогда согласен, что в Оракле оно получше сделано :)
    19 авг 11, 20:35    [11148993]     Ответить | Цитировать Сообщить модератору
     Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
    MasterZiv
    Member

    Откуда: Питер
    Сообщений: 34709

    On 08/19/2011 08:34 PM, softwarer wrote:

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

    Про небесспорность абсолютно согласен, потребители такого подхода (что я знаю)
    -- MSSQLServer, InnoDB.

    Posted via ActualForum NNTP Server 1.4

    19 авг 11, 23:36    [11149567]     Ответить | Цитировать Сообщить модератору
     Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
    MasterZiv
    Member

    Откуда: Питер
    Сообщений: 34709

    On 08/19/2011 09:08 PM, tanglir wrote:

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

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

    Posted via ActualForum NNTP Server 1.4

    19 авг 11, 23:38    [11149572]     Ответить | Цитировать Сообщить модератору
     Re: Как происходит операция Index Seek на самом нижнем уровне?  [new]
    MasterZiv
    Member

    Откуда: Питер
    Сообщений: 34709

    On 08/19/2011 09:32 PM, softwarer wrote:

    > базовому индексу. Таким образом до тех пор, пока строчки в IOT не начинают часто
    > мигрировать, доступ к ним оказывается вполне эффективным.

    Как IOT расшифровывается?

    Posted via ActualForum NNTP Server 1.4

    20 авг 11, 00:22    [11149734]     Ответить | Цитировать Сообщить модератору
    Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
    Все форумы / Сравнение СУБД Ответить