|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
MasterZivКак IOT расшифровывается? В Вашей терминологии это таблица с единственным кластерным индексом. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2011, 01:17 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
MasterZivOn 08/19/2011 09:08 PM, tanglir wrote: > Если убрать слово "кластерный", то это Мускль+ИнноДБ. Зачем убирать ? В InnoDB вообще-то других индексов, кроме кластерных, вообще не существует. Там всё в одном здоровом индексном дереве. Это как в InnoDB, делаем на таблицу три индекса и получаем три копии таблицы отсортированные в порядке своих индексов? Кластерный индекс это когда строится дерево по индексу, а в его листьях расположены остальные столбцы, как например PK в MS SQL. Тут ещё важно что они в базе лежат в порядке индекса для последовательного чтения с диска. Но кластерный может быть только один индекс на таблицу, остальные обычные с указателями RID в листьях. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2011, 01:59 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
softwarerНу, "уникальный кластерный индекс" - вещь сама по себе весьма небесспорная, но просто интересно - где на практике применяется описанный угробищный подход? А в чем угробищность подхода например? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2011, 02:01 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
Index SeekКластерный индекс это когда строится дерево по индексу, а в его листьях расположены остальные столбцы, как например PK в MS SQL.PK то здесь причем?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2011, 20:18 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
softwarerMasterZiv хранить в листах индекса значения полей уникального кластерного индекса -- первичного ключа таблицы. В таком случае после поиска индексной записи значения PK используются для повторного поиска нужной индексной записи в первичном ключе Ну, "уникальный кластерный индекс" - вещь сама по себе весьма небесспорная, но просто интересно - где на практике применяется описанный угробищный подход? Нормальный метод, используется в сиквеле. Если он по каким-то причинам не подходит, можно не использовать. Но чаще всего это очень эффективно. Потому как не нужно перестраивать индексы при расщеплении страниц, не нужно удваивать размер индекса и делать по 2 чтения, как в оракле, и к тому же часто бывает, что обращение к страницам вообще не нужно, достаточно обращения к индексу. Dimitry SibiryakovalexeyvgВ MSSQL rowid и означает номер страницы. О как... Одна запись на страницу? Шикарно живёте... Нет, конечно, не одна. Это вообще был ответ на вопрос Index Seek. Имеется в виду, что в rowid уже есть вся необходимая информация, и искать ничего не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2011, 22:24 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
SergSuperIndex SeekКластерный индекс это когда строится дерево по индексу, а в его листьях расположены остальные столбцы, как например PK в MS SQL.PK то здесь причем?.. Новички часто путают ПК и кластерный индекс (про разницу кластерного индекса и уникального кластерного индекса я вообще молчу - это для лысых профессоров :-) ) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2011, 22:26 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
alexeyvgПотому как не нужно перестраивать индексы при расщеплении страниц Это при расщеплении каких страниц перестраиваются индексы?... Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.08.2011, 23:23 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
SergSuperIndex SeekКластерный индекс это когда строится дерево по индексу, а в его листьях расположены остальные столбцы, как например PK в MS SQL .PK то здесь причем?.. Это "как например". PK в MS SQL - всегда есть кластерный индекс. alexeyvgSergSuperпропущено... PK то здесь причем?.. Новички часто путают ПК и кластерный индекс (про разницу кластерного индекса и уникального кластерного индекса я вообще молчу - это для лысых профессоров :-) ) Надеюсь я ничего не напутал? alexeyvgНо чаще всего это очень эффективно. Потому как не нужно перестраивать индексы при расщеплении страниц, не нужно удваивать размер индекса и делать по 2 чтения, как в оракле, и к тому же часто бывает, что обращение к страницам вообще не нужно, достаточно обращения к индексу. А где там в Оракле удваивается размер индекса? Кстати в Оракле можно делать кластерные IOT, по аналогии с кластерными таблицами (не путать с кластерным индексом)? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2011, 00:24 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
Index SeekА в чем угробищность подхода например? В том, что для индекса, например, глубины 5, нужно аж 10 чтений, чтобы добраться до искомых данных. Index SeekА где там в Оракле удваивается размер индекса? Да Вы не беспокойтесь, коллега так спешит писать, что не успевает читать. Где уж тут думать... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2011, 00:33 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
Index SeekSergSuperпропущено... PK то здесь причем?.. Это "как например". PK в MS SQL - всегда есть кластерный индекс. вобще-то не обязательно Но PK - это логическое понятие, а тут разговор о физическом хранении ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2011, 01:13 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
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 чтобы он не был кластерным индексом? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2011, 01:35 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
Index SeekИли вы имеете ввиду ... Я думаю Я имею в виду реализацию, описанную Master Ziv-ом на прошлой странице. Index Seekтам SELECT name FROM table ORDER BY id выгоднее делать сортировку чем использовать индекс по ID Запросы с order by id - вещь редкая, не то чтобы нужная, но из общих соображений я бы отметил, что в них сортировка будет выгоднее индекса всегда, когда нет гарантии в том, что записи вставлялись строго по возрастанию. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2011, 01:52 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2011, 02:09 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
Index SeekВ реальности это круто скажется при SMJ, с допустим подсчетом агрегатов. Не возьмусь отгадывать, что такое SMJ. Index SeekВ Firebird он начнет дергать таблицу в независимости от того что индекс покрывающий. Мне так смутно помнится, что в IB/FB у индексов хитрая версионность, которая идеологически мешает в некоторых случаях их использовать. Index SeekIOS по IOT позволит избежать random read, в отличие от index key lookup. Если IOS - это что-нибудь типа Index Order Scan, то фокус как раз в том, что оно далеко не всегда лучшее решение. Когда расщепляется страница в середине индекса, у сервера есть фактически два варианта: либо передвигать пол-индекса, либо записать новую страницу куда-нибудь в конец, то есть нарушить порядок следования страниц в индексе. Когда после этого производится массовое чтение по [покрывающему] индексу, то "считать индекс от начала до конца и отсортировать" скорее всего будет быстрее, нежели постранично считывать его в нужном порядке. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2011, 02:21 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
Index SeekА можно пример как создать PK в MS SQL чтобы он не был кластерным индексом?нет ничего проще: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2011, 02:48 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
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 дергать :) Это сутки. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2011, 03:01 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
egorych , круто :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2011, 03:05 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
Index SeekНу представьте таблицу в 10 ТБ, либо всю сортировать во внешней памяти, либо всю в random read дергать :) Это сутки. Боюсь, что разработчика, написавшего такой запрос, убьют независимо от используемой СУБД... Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2011, 13:37 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovIndex SeekНу представьте таблицу в 10 ТБ, либо всю сортировать во внешней памяти, либо всю в random read дергать :) Это сутки. Боюсь, что разработчика, написавшего такой запрос, убьют независимо от используемой СУБД... Если вы про который я написал, то соединение со справочником и агрегированием по фактам входит почти в любой запрос к DWH и на нормальных СУБД он выполнится за несколько десятков минут. С матвью за минуту. Или вы про то что его можно выполнить в Firebird за то же время? Расскажите как. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2011, 14:12 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
Index Seekсоединение со справочником и агрегированием по фактам входит почти в любой запрос к DWH И почти любой запрос к DWH молотит террабайты данных? Я думал для этого давно придумали свёртку в OLAP кубы. И Firebird, вообще-то, не претендует на использование в DWH. У неё другая ниша. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2011, 14:28 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovIndex Seekсоединение со справочником и агрегированием по фактам входит почти в любой запрос к DWH И почти любой запрос к DWH молотит террабайты данных? Я думал для этого давно придумали свёртку в OLAP кубы. И Firebird, вообще-то, не претендует на использование в DWH. У неё другая ниша. А в результате какого запроса получается свёртка в OLAP кубы? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2011, 14:42 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
Index SeekА в результате какого запроса получается свёртка в OLAP кубы? :) Разве они обновляются целиком, а не копятся инкрементально?.. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2011, 15:56 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
On 20.08.2011 2:59, Index Seek wrote: > Это как в InnoDB, делаем на таблицу три индекса и получаем три копии таблицы > отсортированные в порядке своих индексов? Нет, конечно. Один кластерный индекс, и два индекса (можно сказать -- кластерные таблицы), содержащие в листах значения полей кластерного индекса. > Кластерный индекс это когда строится дерево по индексу, а в его листьях > расположены остальные столбцы, как например PK в MS SQL. Тут ещё важно что они в > базе лежат в порядке индекса для последовательного чтения с диска. > Но кластерный может быть только один индекс на таблицу, остальные обычные с > указателями RID в листьях. Спасибо за информацию. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 12:05 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
MasterZivOn 20.08.2011 2:59, Index Seek wrote: > Это как в InnoDB, делаем на таблицу три индекса и получаем три копии таблицы > отсортированные в порядке своих индексов? Нет, конечно. Один кластерный индекс, и два индекса (можно сказать -- кластерные таблицы), содержащие в листах значения полей кластерного индекса. Два индекса содержащие в листьях значения индексных полей или включенных полей кластерного индекса? (Индексные - это которые отсортированы в кластерном, включенные - нет) " и два индекса (можно сказать -- кластерные таблицы)" Имеется ввиду кластерные таблицы в определениях Oracle? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2011, 14:51 |
|
Как происходит операция Index Seek на самом нижнем уровне?
|
|||
---|---|---|---|
#18+
авторИмеется ввиду кластерные таблицы в определениях Oracle? да это везде так, потому что по другому не сделаешь. хотя коллега софтварер говорит что в Оракле еще и указатель на страницу хранится. p.s. чем больше узнаю про оракл тем больше удивляюсь - как он вообще умудряется работать? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2011, 11:00 |
|
|
start [/forum/topic.php?fid=35&msg=37404841&tid=1552222]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
147ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
others: | 239ms |
total: | 513ms |
0 / 0 |