Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
Hello world! Есть две таблицы. У обеих есть кластерный индекс. Первая содержит 242575 , а вторая 97142 записей. Код: 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. Перед выполнением основного запроса обновляю статистики. Код: sql 1. 2. Скрипт основного запроса Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. При его выполнении используется план запроса, в котором оператор Sort сливает данные на диск, хотя кардинальность вычислена правильно. Подскажите с чем это связано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 16:56 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
А откуда сиквелу знать сколько будет в итоге строк? Если у вас статистика не по тем полям по которым идет соединение, ну и если по правде не вижу проблемы. Может банально не хватать памяти. Как вариант можно убрать RECOMPILE и посмотреть что с планом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 17:16 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
Так нэ лезет в память! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 17:19 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
когда серверу особо хочется посортировать, можно ему явно влепить hash join в запрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 17:25 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
AlanDentonА откуда сиквелу знать сколько будет в итоге строк? Если у вас статистика не по тем полям по которым идет соединение Данные спилятся в операторе Sort до выполнения соединения. AlanDentonМожет банально не хватать памяти. Как это проверять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 17:28 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
Yasha123когда серверу особо хочется посортировать, можно ему явно влепить hash join в запрос что вы, что вы, сейчас понабегут апологеты "безхинтового" программирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 17:28 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
Расшарьте план выполнения в формате sqlplan пжл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 17:36 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
Yagrus2, версия сиквела у вас какая? можете попробовать поэкспериментировать с вариациями Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 17:39 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
Yasha123когда серверу особо хочется посортировать, можно ему явно влепить hash join в запрос Попробовал, но у такого запроса(hash join) стоимость получилась больше, чем у исходного(merge join + sort). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 17:40 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
felix_ffYagrus2, версия сиквела у вас какая? Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64) Oct 20 2015 15:36:27 Copyright (c) Microsoft Corporation Business Intelligence Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 17:42 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
msLexYasha123когда серверу особо хочется посортировать, можно ему явно влепить hash join в запрос что вы, что вы, сейчас понабегут апологеты "безхинтового" программирования. на прежнем месте у 2008 R2 временами сносило крышу, массово мерджил там, где еще накануне красовался hash, им же самим выбранный. натурально, с сортировкой обеих таблиц (огромных таблиц). прибили хинтами, благо данные в таблицы только добавлялись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 17:43 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
Yagrus2Yasha123когда серверу особо хочется посортировать, можно ему явно влепить hash join в запрос Попробовал, но у такого запроса(hash join) стоимость получилась больше, чем у исходного(merge join + sort). да наплевать на стоимость. запустите и убедитесь. вы видите, какие объемы он решил посортировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 17:45 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
вот кстати и ответ, с чего вдруг полез merge. потому что hash видите ли вдруг подорожал. еще бы он вменяемо объяснил, в честь чего подорожание ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 17:46 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
AlanDentonРасшарьте план выполнения в формате sqlplan пжл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 17:48 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
Yasha123да наплевать на стоимость. запустите и убедитесь. вы видите, какие объемы он решил посортировать? Не пойму вас. Я параллельно запустил два запроса. Первый в хинтом на HASH JOIN. Через просмотр Execution plan вижу такую картинку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 17:55 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
да, кстати, и не 2008 это был, а 2012. у меня все хранится. могу подарить желающим поломать голову, какого черта у него хэш подорожал. реально же хэш был быстрее в 3,5 раз и в темпдб не лазил Warning: The join order has been enforced because a local join hint is used. Table 'TAB_PROCEDURE_T'. Scan count 9, logical reads 3534693, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. Table 'TAB_TABELLONE_DATI_AGGIUNTIVI_T_day'. Scan count 9, logical reads 137616, physical reads 0, read-ahead reads 7, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 155434, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. (1903553 row(s) affected) (1 row(s) affected) SQL Server Execution Times: CPU time = 39484 ms, elapsed time = 47835 ms. Table 'TAB_TABELLONE_DATI_AGGIUNTIVI_T_day'. Scan count 9, logical reads 137792, physical reads 0, read-ahead reads 10, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. Table 'TAB_PROCEDURE_T'. Scan count 9, logical reads 3534693, physical reads 0, read-ahead reads 16, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. Table 'Workfile'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. (1903553 row(s) affected) (1 row(s) affected) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 17:56 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
Yagrus2, что непонятного? вы смотрите оценку в попугаях. а я вам говорю запустить оба запроса и сравнить время выполнения. реальное время выполнения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 17:57 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
Yasha123, Размер сортируемой таблицы 36,133 MB ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 17:58 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
Yagrus2Размер сортируемой таблицы 36,133 MB вообще да, ваши таблицы хиловаты. в моем случае 27Гб было в основной таблице. тем не менее, ему приспичило сортировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 18:05 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
Yasha123, у вас предполагаемые планы приложены :( заинтересовали, а конкретики не дали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 18:10 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
felix_ffYasha123, у вас предполагаемые планы приложены :( заинтересовали, а конкретики не дали. конктерика в статистике выполнения под спойлером. прилагаю то, что сохранилось. я уже у другого клиента, тем не менее, я точно помню, что планы полетели массово. причем, скорее всего, это было после введения page compression на ряде таблиц. компрессию убирать не пожелали, зато потребовали срочно вернуться к прежнему времени выполнения. так что хинтами пришлось прибить. конфигурация сервера 100% не менялась, данные в таблицах с одного дня на другой по сотне-тысяче строк лишь прибавляли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 18:30 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
+ были сохранены предполагаемые, чтобы было видно оценку при выборе плана. это кстати был как раз нетипичный случай, где хэш стоил меньше, но он его все равно не выбирал. в других случаях он еще и считал, что хэш дороже. сейчас еще покопаюсь, если найду вывалю сюда. -- этот случай странен вдвойне, потому что должен выбирать с меньшей стоимостью, а на деле было не так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 18:37 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
Так там merge промахивается в оценке в 50раз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2018, 18:40 |
|
||
|
Оператор Sort и Spill Level
|
|||
|---|---|---|---|
|
#18+
Yasha123Yagrus2, а я вам говорю запустить оба запроса и сравнить время выполнения. реальное время выполненияЧерез HASH JOIN время выполнения получилось меньше. Скрипт Время Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2018, 10:43 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39749069&tid=1688578]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
86ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 435ms |

| 0 / 0 |
