[MSSQL 2005 через ADO на С++]
Есть ХП, которая принимает N параметров (ну, скажем, int, bit и еще кой-чего, не суть...). Так как ХП довольно часто вызывается, то хотелось бы не вызывать ее 10 раз, а за один вызов передать ей сразу массив из этих параметров (т.е. массив из 10 элементов, в каждом из которых N параметров). Каким образом этого добиться в ADO?
Может передавать ей на вход XML, а уже в самой процедуре из него извлекать данные?
... << RSDN@Home 1.2.0 alpha 4 rev. 1446>>
Здравствуйте, trophim, Вы писали:
T>Может передавать ей на вход XML, а уже в самой процедуре из него извлекать данные?
Да, так тоже делают.
Здравствуйте, trophim, Вы писали:
Уже было
здесьАвтор:
Дата: 16.05.07
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
trophim wrote:
> Есть ХП, которая принимает N параметров (ну, скажем, int, bit и еще
> кой-чего, не суть...). Так как ХП довольно часто вызывается, то хотелось
> бы не вызывать ее 10 раз, а за один вызов передать ей сразу массив из
> этих параметров (т.е. массив из 10 элементов, в каждом из которых N
> параметров). Каким образом этого добиться в ADO?
Смысла это делать нет никакого. Даже если бы и можно было.
Posted via RSDN NNTP Server 2.1 beta
Здравствуйте, MasterZiv, Вы писали:
MZ>trophim wrote:
>> Есть ХП, которая принимает N параметров (ну, скажем, int, bit и еще
>> кой-чего, не суть...). Так как ХП довольно часто вызывается, то хотелось
>> бы не вызывать ее 10 раз, а за один вызов передать ей сразу массив из
>> этих параметров (т.е. массив из 10 элементов, в каждом из которых N
>> параметров). Каким образом этого добиться в ADO?
MZ>Смысла это делать нет никакого. Даже если бы и можно было.
Откуда такая уверенность? Каково обоснование? Я до конца не уверен (иначе б не спрашивал), но разве накладные расходы не будут меньше? Просто это ХП, которая выполняет insert и у меня будет возможность вставлять эти десять записей в 1 транзакции вместо 10 отдельных транзакций. Разве сам факт вызова ХП не вносит издержек, или они несравнимы с тем временем которое отнимает непосредственно выполнение самой ХП?
Может альтернативой будет самому явно стартовать транзакцию и самому ее закрывать и тогда не будет смысла передавать в ХП массив?
Я верно понял мысль?
... << RSDN@Home 1.2.0 alpha 4 rev. 1446>>
trophim wrote:
> MZ>Смысла это делать нет никакого. Даже если бы и можно было.
>
> Откуда такая уверенность? Каково обоснование? Я до конца не уверен
> (иначе б не спрашивал), но разве накладные расходы не будут меньше?
Если и будут меньше, то на мизерные какие-то величины.
> Просто это ХП, которая выполняет insert и у меня будет возможность
> вставлять эти десять записей в 1 транзакции вместо 10 отдельных
> транзакций.
Это ты ошибаешься. Транзакции от процедур никак не зависят. А процедуры
от транзакций. Ты и не посылая пачкой 10 вызовов можешь это
всё в одну транзакцию сделать. Кстати, скорость вставки от
этого тоже не очень сильно зависит. Где-то на 10-20 вставок в одной
транзакции у тебя будет подъём производительности, потом -- уже всё равно.
Разве сам факт вызова ХП не вносит издержек,
Вносит, но только если это не вызов процедуры. Если это RPC -вызов
процедуры, он почти мгновенен.
или они
> несравнимы с тем временем которое отнимает непосредственно выполнение
> самой ХП?
Вот именно. Несравнимы. Гораздо меньше.
> Может альтернативой будет самому явно стартовать транзакцию и самому ее
> закрывать и тогда не будет смысла передавать в ХП массив?
смысла передавать в ХП массив по-любому нет. А транзакции можно конечно
стартовать и комитить.
> Я верно понял мысль?
Нет, но в общем и этот ход твоей мысли хорош.
В общем я хотел сказать, что по сравнению с основными действиями процедуры
эти выигрышы все очень незначительны.
Posted via RSDN NNTP Server 2.1 beta