|
Медленная запись в удаленный SQL сервер
|
|||
---|---|---|---|
#18+
Привет народ. Проблема такая. WinForms приложение на C# надо отправить большое кол-во записей (5000) на SQL сервер на хостинге. Таблица небольшая, состоит из 9 столбиков. Создаю временную таблицу, заполняю, коннект к SQL серверу, через SQLBULKCOPY копирую временную таблицу на удаленный сервер и SQL запросом добавляю в нужную мне таблицу. Даже если я отправляю 10 записей, отправка идет около 3-х минут!!! Раньше пробовал отправлять курсорно по одной записи - на 100 записей уходило около получаса!!! Скорость интернета 2048 Кб/с. Работаю на Visual Studio 2012 C# SQL SERVER 2012 Помогите советом, как увеличить скорость отправки или скорость соединения с сервером, а то прога виснет (или показывает вид, что виснет), а клиент недоволен (( ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 02:24 |
|
Медленная запись в удаленный SQL сервер
|
|||
---|---|---|---|
#18+
Размер одной записи в байтах какой? По моему тут дело вовсе не в соединении. Затестить просто: запусти SQL Managment studio на сервере где стоит MS SQL и сделай insert одной записи в свою таблицу. На 99% уверен что тоже будет тормозить. Если так - разбирайся с БД, смотри что там в триггерах понаписано. Для 5000 записей не надо никаких BULKCOPY, это не много. В крайнем случае сначала во временную таблицу, а потом ее целиком в рабочую. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 07:03 |
|
Медленная запись в удаленный SQL сервер
|
|||
---|---|---|---|
#18+
Dima Tзапусти SQL Managment studio на сервере где стоит MS SQL и сделай insert одной записи в свою таблицу.такая проверка - не панацея Медленно в приложении, быстро в SSMS нужно запускать sql-профайлер и смотреть реальное время вставки записи ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 08:24 |
|
Медленная запись в удаленный SQL сервер
|
|||
---|---|---|---|
#18+
100% - что-то с сервером. Надо попробовать на другом ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 08:32 |
|
Медленная запись в удаленный SQL сервер
|
|||
---|---|---|---|
#18+
Shocker.ProDima Tзапусти SQL Managment studio на сервере где стоит MS SQL и сделай insert одной записи в свою таблицу.такая проверка - не панацея Медленно в приложении, быстро в SSMS нужно запускать sql-профайлер и смотреть реальное время вставки записи Сомневаюсь что это касается примитивного Код: c# 1.
Для чистоты эксперимента можно повторить тест из SSMS запущенный на машине клиента. ТС ведь канал подозревает. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 08:51 |
|
Медленная запись в удаленный SQL сервер
|
|||
---|---|---|---|
#18+
umrbek79Помогите советом, как увеличить скорость отправки...Упакуй все insert-ы в один SQL-пакет (batch), и всё полетит, вместо того, чтобы запускать каждый insert в отдельном SQL-пакете. Тогда и временная таблица станет не нужна, пиши сразу в целевую таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 09:02 |
|
Медленная запись в удаленный SQL сервер
|
|||
---|---|---|---|
#18+
Ещё будет не плохо в начале поставить команду Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 09:04 |
|
Медленная запись в удаленный SQL сервер
|
|||
---|---|---|---|
#18+
Может задать вопрос тому, кто поддерживает "удаленный" сервер? Причин может быть много, режут канал, фаервол, при вставке пересчитывается индекс или срабатывает какой-то триггер. Гадать можно долго. Нужно отправить пример запроса в саппорт и узнать у них, почему так долго выполняется вставка. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 09:43 |
|
Медленная запись в удаленный SQL сервер
|
|||
---|---|---|---|
#18+
Алексей КЕщё будет не плохо в начале поставить команду Код: sql 1.
Здорово, Динозавр! Данный совет опоздал лет на 15 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 20:09 |
|
Медленная запись в удаленный SQL сервер
|
|||
---|---|---|---|
#18+
Dima TРазмер одной записи в байтах какой? По моему тут дело вовсе не в соединении. Затестить просто: запусти SQL Managment studio на сервере где стоит MS SQL и сделай insert одной записи в свою таблицу. На 99% уверен что тоже будет тормозить. Если так - разбирайся с БД, смотри что там в триггерах понаписано. Для 5000 записей не надо никаких BULKCOPY, это не много. В крайнем случае сначала во временную таблицу, а потом ее целиком в рабочую. Размер одной записи - 30-40 байтов на сервере инсерты без проблем я пишу через sqlbulkcopy во временную таблицу и одним запросом вношу во рабочую ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 22:26 |
|
Медленная запись в удаленный SQL сервер
|
|||
---|---|---|---|
#18+
umrbek79, когда-то была подобная проблема у коллеги. была создана таблица не нормализированная. добавили первичный ключ. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 22:54 |
|
Медленная запись в удаленный SQL сервер
|
|||
---|---|---|---|
#18+
Если тормоза именно на вызове SqlBulkCopy.WriteToServer, то проблема в канале, и средствами C# её не решить. Собственно, для массовой вставки данных с клиента для MSSQL есть только 3 альтернативы: SqlBulkCopy, UDТT, и передача данных в виде XML. По моим наблюдениям, вторые две значительно тормознутее первой. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2016, 06:27 |
|
Медленная запись в удаленный SQL сервер
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, а по моим 2 намного быстрее ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2016, 16:40 |
|
Медленная запись в удаленный SQL сервер
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныЕсли тормоза именно на вызове SqlBulkCopy.WriteToServer, то проблема в канале, и средствами C# её не решить. Собственно, для массовой вставки данных с клиента для MSSQL есть только 3 альтернативы: SqlBulkCopy, UDТT, и передача данных в виде XML. По моим наблюдениям, вторые две значительно тормознутее первой. в случае ТС 40*5000 = 200 кбайт - это массовая? это фигня ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2016, 17:12 |
|
Медленная запись в удаленный SQL сервер
|
|||
---|---|---|---|
#18+
всем спасибо,кто откликнулся. оказывается программе остался кусок кода, который просматривает сервер покурсорно и я его не заметил. изменил этот кусок и все отлично. с sqlbulkcopy копирует на сервер 5 мб данных за 30 секунд. ВСЕМ СПАСИБО! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2016, 09:08 |
|
Медленная запись в удаленный SQL сервер
|
|||
---|---|---|---|
#18+
umrbek79всем спасибо,кто откликнулся. оказывается программе остался кусок кода, который просматривает сервер покурсорно и я его не заметил. изменил этот кусок и все отлично. с sqlbulkcopy копирует на сервер 5 мб данных за 30 секунд. ВСЕМ СПАСИБО! 5 мб - 30 сек? ужас какой то ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2016, 15:26 |
|
Медленная запись в удаленный SQL сервер
|
|||
---|---|---|---|
#18+
ViPRos5 мб - 30 сек? ужас какой то канал 2 мегабита - никакого противоречия. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2016, 16:14 |
|
Медленная запись в удаленный SQL сервер
|
|||
---|---|---|---|
#18+
Изопропил, про канал я пропустил мимо ушей :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2016, 17:53 |
|
|
start [/forum/topic.php?fid=20&msg=39349583&tid=1400209]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
50ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 154ms |
0 / 0 |