Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
Думал встроенная STRING_SPLIT будет явно быстрее моего велосипеда (не помню откуда стыреного и мной допиленного). Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. В таблице 176 тыс значений с пробелами, вставка 410тыс значений. Код: sql 1. 2. 3. С моей функцией вставка 1 сек, со встроеной фунцией 7 сек. Код: sql 1. 2. 3. Где засада? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2018, 18:21 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
Lepsik, CHARINDEX? STRING_SPLIT не требует проверки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2018, 18:37 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
Lepsik, STRING_SPLIT в текущей реализации тот еще тормоз, но ваш "велосипед" еще тормознее. Так что вы, видимо, что-то где-то напутали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2018, 22:04 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовLepsik, CHARINDEX? STRING_SPLIT не требует проверки. каким образом where на что-то повлияет? Без него тот же результат. 1:7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2018, 23:40 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
invmLepsik, STRING_SPLIT в текущей реализации тот еще тормоз, но ваш "велосипед" еще тормознее. Так что вы, видимо, что-то где-то напутали. Есть что по существу сказать? Репо я выложил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2018, 23:41 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
LepsikinvmLepsik, STRING_SPLIT в текущей реализации тот еще тормоз, но ваш "велосипед" еще тормознее. Так что вы, видимо, что-то где-то напутали. Есть что по существу сказать? Репо я выложил.Я запустил, на маленькой таблице (1000) функция медленнее в 5 раз На большой (1000000) сплит медленее в 10 раз (6 и 60 секунд) На маленькой таблице, но с большими строками (1000 по 8000 символов), сплит выполняется 180 секунд, а функция падает The maximum recursion 100 has been exhausted before statement completion. Ну и вообще (если поправить maxrecursion) в ней ошибки: Invalid length parameter passed to the LEFT or SUBSTRING function. LepsikГде засада?Хм, никакой засады, сплит медленнее вашей функции при определённых условиях. Зато она работает без ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2018, 00:18 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
LepsikЕсть что по существу сказать? Репо я выложил.Именно, что "репо". Репро - это то, что можно взять, запустить и увидеть (или не увидеть) проблему. Так что вашему репо до репро еще очень далеко. На форуме есть темы с обсуждением и примерами различных вариантов функций разбиения строки. Найдите себе среди них подходящий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2018, 10:06 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
STRING_SPLIT предназначен по своему духу для преобразования входного параметра в табличную форму. "Можно" не равно "нужно". Хранение в таблице неатомарных данных - ересь чистой воды. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2018, 11:51 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовSTRING_SPLIT предназначен по своему духу для преобразования входного параметра в табличную форму. "Можно" не равно "нужно". Хранение в таблице неатомарных данных - ересь чистой воды. ;)Да, поэтому было принято решение сделать его медленным :-) По моему, просто это делали криворукие программисты, да ещё наверняка обходными путями (типа, вкорячили через .NET) Это же надо, сделать его сравнимым или даже более медленным, чем парс рекурсивными запросами по строкам на T-SQL Возмутительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2018, 12:25 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
Если бы просили меня, то я бы ответил, что использую для тех же целей SplitString_Multi от Adam Machanic. А то действительно нет доверия индусам :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2018, 12:35 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, Если бы просили меня, то я бы ответил, что если вам постоянно надо пользоваться сплитами, то у вас кака-то проблема в архитектуре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2018, 12:39 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
invmLepsikЕсть что по существу сказать? Репо я выложил.Именно, что "репо". Репро - это то, что можно взять, запустить и увидеть (или не увидеть) проблему. Так что вашему репо до репро еще очень далеко. На форуме есть темы с обсуждением и примерами различных вариантов функций разбиения строки. Найдите себе среди них подходящий.Например: Функция, которая делит строку на слова ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2018, 12:42 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
TaPaK, Я о том же. Надо хранить атомарные данные в таблицах. Разбивать требуется списки перечислений для процедур репортинг сервиса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2018, 12:42 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
alexeyvgПо моему, просто это делали криворукие программистыДа. Только в другом месте :) 1. Функция split_string действительно тормозная; 2. Тем не менее, split_string гораздо быстрее функции ТС'а; 3. Есть аномальное поведение split_string в параллельных планах. Репро Код: 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. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2018, 13:41 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
invm, автор3. Есть аномальное поведение split_string в параллельных планах. на что смотреть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2018, 15:38 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
TaPaKна что смотреть?На CPU при сериальном и параллельном планах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2018, 15:46 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
TaPaKВладислав Колосов, Если бы просили меня, то я бы ответил, что если вам постоянно надо пользоваться сплитами, то у вас кака-то проблема в архитектуре. Представьте что ваша работа - писать репорты, где в качестве аргументов могут использоватся списки. Архитектура плохая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2018, 16:09 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
LepsikTaPaKВладислав Колосов, Если бы просили меня, то я бы ответил, что если вам постоянно надо пользоваться сплитами, то у вас кака-то проблема в архитектуре. Представьте что ваша работа - писать репорты, где в качестве аргументов могут использоватся списки. Архитектура плохая? вы точтно понимаете, что означает архитектура? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2018, 16:10 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
invmTaPaKна что смотреть?На CPU при сериальном и параллельном планах. Ну как по мне здесь не из-за STRING_SPLIT, а из за вставки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2018, 16:14 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
TaPaKНу как по мне здесь не из-за STRING_SPLIT, а из за вставки.Поясните, что именно вызвало рост CPU time в параллельном плане с string_split, в сравнении с сериальным и не вызвало в аналогичном с fn_splitter. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2018, 16:57 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
invmTaPaKНу как по мне здесь не из-за STRING_SPLIT, а из за вставки.Поясните, что именно вызвало рост CPU time в параллельном плане с string_split, в сравнении с сериальным и не вызвало в аналогичном с fn_splitter. Ну я смотрел только на string_split. Сам оператор в параллельном плане даёт 4572/299 против 2145/2145 в последовательном. Это на MAXDOP 16. Говорить про аномальное поведение как минимум странно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2018, 17:02 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
invm, ну и Код: sql 1. 2. даёт абсолютно обратную картину, имхо вопрос именно к SELECT INTO которая как по мне проклята :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2018, 17:16 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
TaPaK, У меня для string_split парллельный/сериальный CPU time - 7689/3078 А должно быть сопоставимо. Что и видно для fn_splitter - 6155/5750 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2018, 17:48 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
invmTaPaK, У меня для string_split парллельный/сериальный CPU time - 7689/3078 А должно быть сопоставимо. Что и видно для fn_splitter - 6155/5750 вы про выполнение целиком? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2018, 17:51 |
|
||
|
Непонятки с производительностью STRING_SPLIT
|
|||
|---|---|---|---|
|
#18+
invm1. Функция split_string действительно тормозная; 2. Тем не менее, split_string гораздо быстрее функции ТС'а; 3. Есть аномальное поведение split_string в параллельных планах.Так вот у ТС и получается своя функция быстрее split_string, именно из за тормознутости последней в параллельных планах. Это и по вашему репро видно. В 9 раз тормознутее, если split_string выполняется параллельно, и в 5 раз - если она выполняется в одном потоке, а функция ТС'а во многих (там, понятно, сама split_string быстрее, но функция ТС'а берёт параллельным выполнением) ТС'а Для миллиона строк: function queryoptionCPU duration reads fn_splitter querytraceon 864963406 17820 46081026fn_splitter maxdop 1 198781 208033 46077786string_split querytraceon 8649263141 140406 6515962string_split maxdop 1 79266 87837 6515919 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2018, 18:24 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39687558&tid=1689260]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
31ms |
get topic data: |
37ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 280ms |
| total: | 419ms |

| 0 / 0 |
