Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Key lookup vs RID Lookup
|
|||
|---|---|---|---|
|
#18+
Всем привет. На текущем проекте абсолютно все таблицы - кластеризованные. Меня, как бывшего ораклиста, мучает вопрос- почему никто не использует кучи или используют очень редко? Оракловый аналог RID Lookup - это table access by index rowid и это там чуть ли не основной оператор для доступа к данным. Решил замерить производительность оператора select на кучу и на кластеризованную таблицу: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. Результаты : Для кластерной таблицы : Duration = 20,CPU Cost = 31, Reads = 3036 Для кучи : Duration = 8,CPU Cost = 0, Reads = 993 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2019, 16:44 |
|
||
|
Key lookup vs RID Lookup
|
|||
|---|---|---|---|
|
#18+
А теперь сравните скорость выборки по полю id на вашей структуре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2019, 17:03 |
|
||
|
Key lookup vs RID Lookup
|
|||
|---|---|---|---|
|
#18+
результаты ожидаемы, поэтому вставку делают обычно в кучи или стедж таблицы. Для каких-то задач используются кучи, для каких-то кластеризованные таблицы. Вы попробуйте пожить с вашей кучей, удалить, вставить данные, перестроить и объем хороший сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2019, 17:05 |
|
||
|
Key lookup vs RID Lookup
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич, Для кластерной таблицы : Duration = 1,CPU Cost = 16, Reads = 3 Для кучи : Duration = 1,CPU Cost = 0, Reads = 4 Запросы по id ,в общем случае, редкое явление при условии что таблица не является справочником. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2019, 17:10 |
|
||
|
Key lookup vs RID Lookup
|
|||
|---|---|---|---|
|
#18+
Cristiano_Rivaldo 1. RID Lookup в MSSQL это доступ по физическому расположению (file_id + page_id + slot_id) записи в куче. 2. Вы сравниваете неэквивалентные случае, в первом у вас два индекса (один из них кластерный) и поиск можно осуществлять по любому из них. Сделайте и там и там по одному индексу и сравните. 3. При любых перемещении исходных данных в кластерном индексе не требуется обновлять некластерный. 4. В MSSQL у куч есть некоторое количество неприятных особенностей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2019, 17:12 |
|
||
|
Key lookup vs RID Lookup
|
|||
|---|---|---|---|
|
#18+
msLex, В обоих случаях по два индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2019, 17:23 |
|
||
|
Key lookup vs RID Lookup
|
|||
|---|---|---|---|
|
#18+
Cristiano_RivaldoГавриленко Сергей Алексеевич, Для кластерной таблицы : Duration = 1,CPU Cost = 16, Reads = 3 Для кучи : Duration = 1,CPU Cost = 0, Reads = 4Т.е. ровно на 25% хуже в вашем случе. Для деревьев глубиной 5-6 будет 10-15% ухудшения. Весьма существенно. Cristiano_RivaldoЗапросы по id ,в общем случае, редкое явление при условии что таблица не является справочником.Открою секрет -- кластерный индекс можно делать не только по полю id. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2019, 17:23 |
|
||
|
Key lookup vs RID Lookup
|
|||
|---|---|---|---|
|
#18+
Cristiano_RivaldomsLex, В обоих случаях по два индекса. да не заметил тогда у вас в случае кучи оверхед на хранение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2019, 17:24 |
|
||
|
Key lookup vs RID Lookup
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевич]Открою секрет -- кластерный индекс можно делать не только по полю id. Я в курсе :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2019, 17:25 |
|
||
|
Key lookup vs RID Lookup
|
|||
|---|---|---|---|
|
#18+
авторМеня, как бывшего ораклиста, мучает вопрос- почему никто не использует кучи или используют очень редко? если все задачи с бд сводятся к выбору a = 45, то и ms sql и скорее всего oracle проиграют наверное большиству nosql dbms ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2019, 18:01 |
|
||
|
Key lookup vs RID Lookup
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичCristiano_RivaldoГавриленко Сергей Алексеевич, Для кластерной таблицы : Duration = 1,CPU Cost = 16, Reads = 3 Для кучи : Duration = 1,CPU Cost = 0, Reads = 4Т.е. ровно на 25% хуже в вашем случе. Для деревьев глубиной 5-6 будет 10-15% ухудшения. Весьма существенно.При поиске по некластерному индексу, куча будет работать быстрее на те же несколько чтений, так что я бы не сказал что у кластерного индекса прям существенное преимущество. Обсуждалось это уже много-много раз. Основная проблема с кучей это её обслуживание. Не знаю как в Оракле, а в SQL Server все плохо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2019, 21:00 |
|
||
|
Key lookup vs RID Lookup
|
|||
|---|---|---|---|
|
#18+
Cristiano_RivaldoЗапросы по id ,в общем случае, редкое явление при условии что таблица не является справочникомЗапросы по RID ещё более редкое явление, даже если таблица является справочником. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2019, 21:12 |
|
||
|
Key lookup vs RID Lookup
|
|||
|---|---|---|---|
|
#18+
Cristiano_Rivaldo, https://www.red-gate.com/simple-talk/sql/t-sql-programming/delete-operation-sql-server-heaps/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2019, 21:18 |
|
||
|
Key lookup vs RID Lookup
|
|||
|---|---|---|---|
|
#18+
MindГавриленко Сергей Алексеевичпропущено... Т.е. ровно на 25% хуже в вашем случе. Для деревьев глубиной 5-6 будет 10-15% ухудшения. Весьма существенно.При поиске по некластерному индексу, куча будет работать быстрее на те же несколько чтений, так что я бы не сказал что у кластерного индекса прям существенное преимущество. Обсуждалось это уже много-много раз. Основная проблема с кучей это её обслуживание. Не знаю как в Оракле, а в SQL Server все плохо. Не всегда, в куче возможен Forwarding Pointers ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2019, 17:14 |
|
||
|
Key lookup vs RID Lookup
|
|||
|---|---|---|---|
|
#18+
-- KAB --Mindпропущено... При поиске по некластерному индексу, куча будет работать быстрее на те же несколько чтений, так что я бы не сказал что у кластерного индекса прям существенное преимущество. Обсуждалось это уже много-много раз. Основная проблема с кучей это её обслуживание. Не знаю как в Оракле, а в SQL Server все плохо. Не всегда, в куче возможен Forwarding Pointers+1 чтение, а индекс это как минимум 3-4 уровня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2019, 22:55 |
|
||
|
Key lookup vs RID Lookup
|
|||
|---|---|---|---|
|
#18+
Mind-- KAB --пропущено... Не всегда, в куче возможен Forwarding Pointers+1 чтение, а индекс это как минимум 3-4 уровня. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. Посмотрите результат скрипта на вкладке messages в SSMS - статистика ввода вывода таблица tn - nonclustered и tc - clustered ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2019, 14:20 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39813226&tid=1687825]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
184ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 275ms |
| total: | 552ms |

| 0 / 0 |
