|
параметризация запросов insert
|
|||
---|---|---|---|
#18+
Gloryartiiпросто говорю, что в моем случае подсказывать SQL Server какие типы у констант должны быть в плане запросе, Ну так и подсказывайте правильно insert into A (a, b) values (1, 1.0000010000E3) insert into A (a, b) values (1, 9.90000019999E4) Вот, это мне и нужно было, а не городить огороды в sp_executesql и прочей пертушкой. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 11:58 |
|
параметризация запросов insert
|
|||
---|---|---|---|
#18+
artiiгородить огороды в sp_executesql и прочей пертушкой так все равно придется же, скорее всего :) хотя.. если скорости будет достаточно без этого то и хватит, да ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 11:59 |
|
параметризация запросов insert
|
|||
---|---|---|---|
#18+
Crimeanartiiподсказывать SQL Server какие типы у констант должны быть в плане запросе, на клиентской стороне довольно с трудоемкая задача, которая еще может не выстрелить по быстродействию дважды неверно. во-первых восприятие констант самим SQL Server описано. а то, что вы не хотите этим пользоваться на server-side просто добавляет вам проблем, внезапно: ... Все проще я даже не рассматривал вариант (что там говорить не знал), который описал Glory ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 12:06 |
|
параметризация запросов insert
|
|||
---|---|---|---|
#18+
Crimeanтак все равно придется же, скорее всего :) хотя.. если скорости будет достаточно без этого то и хватит, да Всему свое время хочется с простыми текстовыми запросами разобраться. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 12:13 |
|
параметризация запросов insert
|
|||
---|---|---|---|
#18+
artii, А что это даст? Я так понимаю если делать OPTION(RECOMPILE), то темплейт тогда делать бессмыслено, не? Сейчас буду пробовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 12:35 |
|
параметризация запросов insert
|
|||
---|---|---|---|
#18+
artiiна клиентской стороне довольно с трудоемкая задача, которая еще может не выстрелить по быстродействию.Это точно выстрелит, и это правильно. Трудоёмкость нивелируется правильным программированием, это в принципе делается один раз, потом используется. А уж использование правильных методов для массовой загрузки даст совсем большое ускорение. Если речь о тысячах строк в секунду, то уже стоит задуматься, тогда и милионы строк в секунду будет совсем незаметно. artiiGloryНу так и подсказывайте правильно insert into A (a, b) values (1, 1.0000010000E3) insert into A (a, b) values (1, 9.90000019999E4) Вот, это мне и нужно было, а не городить огороды в sp_executesql и прочей пертушкой.Ну да, если у вас в поле тип данных float, то и передавать константы нужно такого же типа. Я почему то думал, что у вас в таблице тип DECIMAL. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 12:51 |
|
параметризация запросов insert
|
|||
---|---|---|---|
#18+
artii, Эксперимент №1 Код: 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.
Эксперимент №2 Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 13:16 |
|
параметризация запросов insert
|
|||
---|---|---|---|
#18+
Ну и Эксперимент №3 Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2013, 13:22 |
|
параметризация запросов insert
|
|||
---|---|---|---|
#18+
некропостю, но "закрыть тему": 1.чтобы "отгайдить" запрос с константами - надо или гайдов 2 делать или базу в FORCED переводить. ессно, если запрос на сервер идет непараметризованный. если уже параметризованный - проще, но есть еще и п.2. 2.собственно values параметризации не поддается, только WHERE. как следствие переписывание как INSERT SELECT тоже ничего не дает ибо параметризуется опять же только WHERE итого - в гайды играть для вставки нет возможности p.s. ну и с типами данных надо или четко указывать или рисовать море гайдов под разные типы, что не особо выход ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2013, 13:00 |
|
параметризация запросов insert
|
|||
---|---|---|---|
#18+
Crimeanсобственно values параметризации не поддаетсяБерем скрипт из 14972559 , убираем, за ненадобностью, set parameterization forced, выполняем и получаем: Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2013, 15:18 |
|
параметризация запросов insert
|
|||
---|---|---|---|
#18+
invm, это у вас PQ считаются - вопросов нет! но будут-то еще и AQ! а с ними проблема как была так и останется сам профайлером смотрел. для первого получаем AQ miss + PQ miss, для остальных получаем AQ miss но PQ hit ну и я больше про натягивание гайдов на "такие" вставки - не натянуть, надо параметризовать с клиента ну или уже хранимку ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2013, 16:10 |
|
параметризация запросов insert
|
|||
---|---|---|---|
#18+
Crimean, Что-то я не пойму: В скрипте же непараметризованные Ad-hoc inserts? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2013, 16:51 |
|
параметризация запросов insert
|
|||
---|---|---|---|
#18+
я вот про что. даже если взять "тот" пример и форсировать параметризацию, то собственно батч будет каждый раз разбираться, хотя сам план для insert уже будет параметризован. верх картинки - видно что все 3 батча дают CacheMiss для AQ, хотя, конечно, для PQ дальше мы имеем 1 CacheInsert и дальше CacheHit а вот если перейти на RPC с параметризацией то первый раз получим CacheInsert и дальше будут только CacheHit. вторая часть картинки или я совсем в сторону уже сбежал? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2013, 19:07 |
|
параметризация запросов insert
|
|||
---|---|---|---|
#18+
artii, Попробуйте включить 'optimize for adhoc workloads'. Параметризацию конечно не исправит, но возможно поможет решить проблему с процедурным кэшем. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2013, 20:16 |
|
параметризация запросов insert
|
|||
---|---|---|---|
#18+
Crimeanя вот про что. даже если взять "тот" пример и форсировать параметризацию, то собственно батч будет каждый раз разбираться, хотя сам план для insert уже будет параметризован.Ага, теперь понятно о чем была речь. Ну да, для insert'ов shell-планов нету в кеше...Crimeanили я совсем в сторону уже сбежал?Да нет. Понятно, что RPC выгоднее, но ТС его не захотел... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2013, 20:35 |
|
параметризация запросов insert
|
|||
---|---|---|---|
#18+
Забавный баг оптимизатора (параметризатора). Типы данных таблы известны заранее. Из тех, что мне нравятся - не дают сделать через *опу. Crimean, invm - я немногое не понял, с параметризованные запросами всё нормально (а то я AQ и PQ не могу расшифровать) И это, RPC и параметризация это не одно и тоже? (опять же детали для тех кто в терминологии плавает) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2013, 00:15 |
|
параметризация запросов insert
|
|||
---|---|---|---|
#18+
Mnior, AQ и PQ - термины профайлера, собственно, для этого типа событий а "лирику" написал, подумал и удалил ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2013, 11:22 |
|
параметризация запросов insert
|
|||
---|---|---|---|
#18+
Mnior, Все нормально с параметризацией. Просто для Adhoc select в кеше есть план-обертка, а для Adhoc insert нету. Соответственно и видим в трассе CacheMiss для insert AQ. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2013, 13:24 |
|
параметризация запросов insert
|
|||
---|---|---|---|
#18+
invmВсе нормально с параметризацией.Ок. Если будет эта тема (план-обертка, а для Adhoc insert) в баг-трекере, я проголосую против. Иба нефег. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2013, 16:48 |
|
параметризация запросов insert
|
|||
---|---|---|---|
#18+
invm, Ну, скажем так, я изначально отказался от sp_executesql, по той причине, что не понимал как завернуть несколько insert или update в один батч, сейчас мне уже понятно, что я был тогда не прав. Сейчас я уже переписал сервер, чтобы он заворачивал запросы insert или update в параметрическую форму через sp_executesql. Тестирую на скорость и отсутствие adhoc планов, посмотрим, что получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2013, 20:42 |
|
|
start [/forum/topic.php?fid=46&gotonew=1&tid=1704757]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
11ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 239ms |
total: | 383ms |
0 / 0 |