Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
Пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Это работает конечно, но мне не нравятся эти дёрганья oleDbConnection1.Open(); oleDbConnection1.Close(); Нельзя ли как-нить соединение открыть, все операции провести и только потом закрыть? Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 16:33 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
А откуда данные берешь? Может DTS? Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 16:47 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
Может DTS? Кто такой? А откуда данные берешь? Разве из кода не видно? Сам сочиняю в цикле :) Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 17:00 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
DTS - Data Transformation Services. я думал тебе откуда перетащить нужно. А такое сочинение лучше прямо в хранимке писать. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 17:20 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
DTS - Data Transformation Services. А с чем это едят? Мне бы ссылочку какую, где про это чудо почитать можно... А такое сочинение лучше прямо в хранимке писать. А средствАми C# мона ?! Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 17:26 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
Ниччего не понимаю, теперь работает так и причём в десятки раз быстрее: т.е. всего 10 секунд вместо 2.5 минут (!). Просто вынес из цикла открытие и закрытие соединения. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 17:36 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
А что непонятного то!? Соединение не "дергается" каждый раз! Вот и быстрее. В любом случае вынос инвариантных операций из цикла ускоряет его выполнение за счет уменьшения операций внутри каждой итерации. А уж тем более открытие/закрытие коннекта! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 17:46 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
А средствАми C# мона ?! Обьясни мне одну вещь: Зачем? Если тебе нужно заполнить таблицу подобными данными, то сам сервер БД это по определению сделает быстрее. На то он и сервер. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 17:50 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
А что непонятного то!? Непонятно чего енто раньше не работало, прежде чем сюда писать я именно этот вариант пробовал.... ну да ладно, мож где не туда нажал...уже не важно. Обьясни мне одну вещь: Зачем? Есть ВэбСервис который работает с БД и он написан на Сишарп. Спрошу подругому: Как мне вызать эту ХП из ВэбСервиса? Код на Сишарп можете дать? Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 18:08 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
сервис или нет, это не важно. Вот пример http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconusingstoredprocedureswithcommand.asp Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 18:13 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
Спасибо. Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2004, 18:16 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
2 M234 Если бы сразу же написал: "Вот пример, используется база данных Access". Половина бы постов здесь не было, ведь это sql.ru здесь народ сразу же думает что стоит MS SQL даже не обращая внимания на OleDb провайдер (хотя и им тоже можно к MS SQL коннектиться но все таки) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 07:23 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
2 Sa Ок. Замечания учту. Я думаю, что в моём случае на сервере будет стоять MS SQL, а на клиентах Ацесс, так что все ответы мне полезны в той или иной степени. Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2004, 10:14 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
авторНиччего не понимаю, теперь работает так и причём в десятки раз быстрее: т.е. всего 10 секунд вместо 2.5 минут (!). А если prepare добавить? Я думаю секунды 2 будет. int Value2=0; int i; oleDbConnection1.Open(); oleDbDataAdapter1.InsertCommand.CommandText="INSERT INTO Table1(Field1, Field2) VALUES (?,?)"; oleDbDataAdapter1.InsertCommand.Parameters.Add("Par1", OledbType.VarChar); oleDbDataAdapter1.InsertCommand.Parameters.Add("Par2", OledbType.Int); oleDbDataAdapter1.InsertCommand.Prepare; for (i=0;i<2000;i++) { oleDbDataAdapter1.InsertCommand.Parameters[0].Value = "Value1"; oleDbDataAdapter1.InsertCommand.Parameters[1].Value = id; oleDbDataAdapter1.InsertCommand.ExecuteNonQuery(); id++; } oleDbConnection1.Close(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 09:28 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
А если prepare добавить? Я думаю секунды 2 будет. Точно! Проверил на 10000 записей разница между "с prepare" и "без оного" составила 21 секунду (26 и 47 секунд соответственно) Спасибо большое за оптимизацию процесса ! Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 11:06 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
авторЕсть ВэбСервис который работает с БД и он написан на Сишарп. авторТочно! Проверил на 10000 записей разница между "с prepare" и "без оного" составила 21 секунду (26 и 47 секунд соответственно) Надеюсь ты не собираешься вызывать ВэбСервис 2000 раз? Кстати, никто не делал/видел реализации коннекшион пул? Что бы на каждый вызов вебсервиса не открывать/закрывать коннект. Похоже у меня теряется на этом 500-600 млсек, а Субд сей финт не умеет. Я Использую System.Data.Odbc классы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 11:15 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
А если попробовать написать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. А потом из клиента вызывать их. Так можно наверно коннект держать открытым до момента его явного закрытия, хотя это теория, ещё не пробовал пока. Попробую - скажу результат. Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 12:15 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
>Кстати, никто не делал/видел реализации коннекшион пул? Вы наверное имеете ввиду настройку connection pool Посмотрите: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnmdac/html/pooling2.asp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 13:33 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
автор>Кстати, никто не делал/видел реализации коннекшион пул? Вы наверное имеете ввиду настройку connection pool Ага. авторПосмотрите: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnmdac/html/pooling2.asp Спасибо, посмотрю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 14:10 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
авторА если попробовать написать так: [WebMethod] public void DBCloseConn() { if (oleDbConnection1.State.ToString().ToUpper()=="OPEN") { oleDbConnection1.Close(); } } [WebMethod] public void DBOpenConn() { if (oleDbConnection1.State.ToString().ToUpper()=="CLOSED") { oleDbConnection1.Open(); } } А потом из клиента вызывать их. Так можно наверно коннект держать открытым до момента его явного закрытия, хотя это теория, ещё не пробовал пока. Попробую - скажу результат. Я конечно не очень копенгаген, но у меня есть ощущение oleDbConnection1 существует только внутри [WebMethod]. Т.е. если откроешь oleDbConnection1 из одного WebMethod, в другом WebMethod, его (oleDbConnection1) не будет. Можно конечно сохранить его в Session, но тогда и методы д.б. [WebMethod (Description="", EnableSession= true )] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 14:19 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
авторНадеюсь ты не собираешься вызывать ВэбСервис 2000 раз? В общем я хотел намекнуть, что вызов ВэбСервиса довольно дорогая операция, и имеет смысл создать ВэбСервиса, принимающий в качестве параметра XmlNode, или массив твоих объектов. И уже внутри ВэбСервиса выполнить инсерты в цикле сделав prepare. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 14:24 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
....и имеет смысл создать ВэбСервиса, принимающий в качестве параметра XmlNode, или массив твоих объектов. И уже внутри ВэбСервиса выполнить инсерты в цикле сделав prepare. Есссесно. Обижаете коллега.... Я конечно не очень копенгаген, но у меня есть ощущение oleDbConnection1 существует только внутри [WebMethod]. Т.е. если откроешь oleDbConnection1 из одного WebMethod, в другом WebMethod, его (oleDbConnection1) не будет. Угу. Так и есть, но мы его еще покрутим.... :)) Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 14:51 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
А с хранимкой таки быстрее будет :) Вставка 2К записей для сервера - полпинка. В данном варинте мы имеем 2000 обращений к серверу. Улавливаете разницу? :) Естественно если все таки будет сиквел. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 16:10 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
авторА с хранимкой таки быстрее будет :) Вставка 2К записей для сервера - полпинка. В данном варинте мы имеем 2000 обращений к серверу. Улавливаете разницу? :) Я не в курсе, а что можно в хранимку передать массив? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 16:19 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
Массив - нет. А зачем? Я же вверху привел небольшой пример. Кривоват конечно, но это общая идея. Если угодно, можно передать границы и по ним заполнять. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 16:39 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
авторМассив - нет. А зачем? Я же вверху привел небольшой пример. Кривоват конечно, но это общая идея. Если угодно, можно передать границы и по ним заполнять. Я думаю что конечная цель M234 все таки вставить 2000 записей из своей системы, а не сгенерировать таблицу с 2000 строк. А пример он написал в качестве теста скорострельности insert. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 17:02 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
Так я ведь в начале спрашивал: откуда данные? Их ведь можно сборисить в базу разными спсобами. Он оветил что прям там и сочиняет. ИМХО самое место этому циклу в хранимке. Если честно то можно и без цикла, одним батчем, вообще летать будет. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 17:07 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
Я думаю что конечная цель M234 все таки вставить 2000 записей из своей системы, а не сгенерировать таблицу с 2000 строк. А пример он написал в качестве теста скорострельности insert. Да, в общем верно. Я конечно в цикле сам сочиняю, но цикл находится в моём приложении и на его месте могли бы быть (и будут) какие-либо данные из другого источника (другая БД наример). Данные передаются ВэбСервису, он их обрабатывает и вставляет в таблицу в БД на сервере или передаёт их ХП мне это всё равно, но с ХП это будет в этом случае невозможно если я на счёт массивов правильно понял. ВэбСервис лежит на томже сервере что и серверная БД, поэтому разговаривать о скорости тут можно только условно. Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 17:30 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
Собственно обработку данных тоже можно проводить на сервере. Во ,многих случаюх даже нужно. Если ервису их девать никуда н нужно, то сквел с обработкой и перемещением данных между базами справляется не в пример лучше. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 18:01 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
Если сервису их девать никуда не нужно, то сиквел с обработкой и перемещением данных между базами справляется не в пример лучше. Не совсем понял, поясните пожалуйста на примере. Я сделал всё что мог, кто может пусть сделает лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 18:18 |
|
||
|
Как вставить в БД 2000 записей наилучшим образом?
|
|||
|---|---|---|---|
|
#18+
Написал тут целую поэму а тут куча вирусов, весь офис завалился. Еле отбились :) Коротко: Если сервис занят чем то вроде статистической обработки(или любой другой) без представления данных пользователю то иммет смысл перенести всю обработку на сервер. Это типично серверная задача, каждый должен заниматся тен что у него получается лучше всего. И бизнес рулз, в такок случае должны быть на сервере. Сервис только вызывать будет: Сделай то, посчитай это. И получать ответы : Success/Fail. Т.е. вданном случае, сервис вызывает хранимку, она берет данные из базы , проводит все необходимые манипуляции и заливает обратно(или в другую базу) возвращая сервису только флаг о выполнении. Ну и может кое какие результаты необходимые для принятия последующих решений. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2004, 21:45 |
|
||
|
|

start [/forum/topic.php?all=1&fid=20&tid=1439375]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
83ms |
get tp. blocked users: |
2ms |
| others: | 270ms |
| total: | 459ms |

| 0 / 0 |
