|
Вставка в InMemory таблицу и параллельный план выполнения
|
|||
---|---|---|---|
#18+
Обнаружил, что вставка путём INSERT ... SELECT ... в InMemory таблицу (SCHEMA_ONLY) производит исключительно однопоточный план выполнения. То, что параллельная вставка невозможна, я нашел информацию. Но не нашел о том, что такая вставка влияет на весь план запроса. Можно ли добиться параллельного плана выполнения? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2021, 22:15 |
|
Вставка в InMemory таблицу и параллельный план выполнения
|
|||
---|---|---|---|
#18+
Владислав Колосов, нет, обычно во всех планах для NonParallelReason будет присутствовать значение NonParallelForDmlOnMemoryOptimizedTable параллельного плана выпонения можно вроде добиться если целевой таблицей для инструкции DML не является таблица оптимизированная для памяти, в противном случае план всегда будет последовательным. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2021, 01:27 |
|
Вставка в InMemory таблицу и параллельный план выполнения
|
|||
---|---|---|---|
#18+
Владислав Колосов Обнаружил, что вставка путём INSERT ... SELECT ... в InMemory таблицу (SCHEMA_ONLY) производит исключительно однопоточный план выполнения. То, что параллельная вставка невозможна, я нашел информацию. Но не нашел о том, что такая вставка влияет на весь план запроса. Можно ли добиться параллельного плана выполнения? Запустить 2, 3, ... многа INSERT-а? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2021, 07:50 |
|
Вставка в InMemory таблицу и параллельный план выполнения
|
|||
---|---|---|---|
#18+
Понятно, неприятный сюрприз. Хотя что мешало выполнить план параллельно и сделать последовательную вставку как это было раньше, до введения параллельной вставки. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2021, 11:10 |
|
Вставка в InMemory таблицу и параллельный план выполнения
|
|||
---|---|---|---|
#18+
:) :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2021, 11:15 |
|
Вставка в InMemory таблицу и параллельный план выполнения
|
|||
---|---|---|---|
#18+
felix_ff, как можно увидеть NonParallelReason? Какой-то флаг трассировки включить? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2021, 12:12 |
|
Вставка в InMemory таблицу и параллельный план выполнения
|
|||
---|---|---|---|
#18+
Владислав Колосов как можно увидеть NonParallelReason? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2021, 13:24 |
|
Вставка в InMemory таблицу и параллельный план выполнения
|
|||
---|---|---|---|
#18+
Владислав Колосов, план запроса в виде xml посмотреть. ну или если в графическом варианте он на результирующем узле в плане эту информацию отражает. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2021, 13:26 |
|
Вставка в InMemory таблицу и параллельный план выполнения
|
|||
---|---|---|---|
#18+
felix_ff, у меня нет такого в xml или на корневом узле, может это появилось в SQL2019? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2021, 13:59 |
|
Вставка в InMemory таблицу и параллельный план выполнения
|
|||
---|---|---|---|
#18+
Владислав Колосов, да не, это вообще с 2014 когда Hekaton появился. вот вам ссылочка еще где чувак сталкивался с той же проблемой. https://stackoverflow.com/questions/45026111/insert-from-memory-optimized-table-to-physical-table отмечу что: именно эта кляуза, в плане появляется если целевой таблицей dml инструкции будет выступать XTP-таблица. в туже тему: https://www.nikoport.com/2018/01/20/parallelism-in-hekaton-in-memory-oltp/ ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2021, 15:41 |
|
Вставка в InMemory таблицу и параллельный план выполнения
|
|||
---|---|---|---|
#18+
felix_ff, спасибо за подробности, я имел в виду, что в своем XML плане я не нахожу ключевое слово NonParallelReason. MaxDOP = 0. Код: xml 1.
Microsoft SQL Server 2017 (RTM-CU24) (KB5001228) - 14.0.3391.2 (X64) Apr 28 2021 10:32:18 Copyright (C) 2017 Microsoft Corporation Developer Edition (64-bit) on Windows 10 Enterprise 10.0 <X64> (Build 18363: ) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2021, 18:26 |
|
Вставка в InMemory таблицу и параллельный план выполнения
|
|||
---|---|---|---|
#18+
Владислав Колосов, эта кляуза не обязательно всегда присутствует в плане. она обычно туда включается если план не может быть интерпретирован как параллельный. попробуйте у себя выполнить Код: 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.
в первых трех планах она будет присутствовать, а в последнем нет. если не так, то видимо это специфика RTM выпуска возможно. я проверял на своей 2016 Enterprise SP2-CU-6 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2021, 18:45 |
|
Вставка в InMemory таблицу и параллельный план выполнения
|
|||
---|---|---|---|
#18+
felix_ff, по всей видимости, такое поведение by design в моём случае, NonParallelPlanReason присутствует только в первом и третьем планах. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2021, 21:11 |
|
Вставка в InMemory таблицу и параллельный план выполнения
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2021, 16:26 |
|
Вставка в InMemory таблицу и параллельный план выполнения
|
|||
---|---|---|---|
#18+
Александр Гладченко, да, я читал об этом исправлении, оно касается лишь просмотра МО, а если МО таблица является целью, то план выполнения остается последовательным: INSERT, UPDATE, DELETE, and MERGE statements that involve modification of a memory-optimized table or table variable continue to be serial. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2021, 17:07 |
|
|
start [/forum/topic.php?fid=46&fpage=21&tid=1684583]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 264ms |
total: | 395ms |
0 / 0 |