powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Медленная запись в удаленный SQL сервер
19 сообщений из 19, страница 1 из 1
Медленная запись в удаленный SQL сервер
    #39349537
umrbek79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет народ.
Проблема такая. WinForms приложение на C# надо отправить большое кол-во записей (5000) на SQL сервер на хостинге.
Таблица небольшая, состоит из 9 столбиков.
Создаю временную таблицу, заполняю, коннект к SQL серверу, через SQLBULKCOPY копирую временную таблицу на удаленный сервер и SQL запросом добавляю в нужную мне таблицу.
Даже если я отправляю 10 записей, отправка идет около 3-х минут!!!
Раньше пробовал отправлять курсорно по одной записи - на 100 записей уходило около получаса!!!

Скорость интернета 2048 Кб/с.
Работаю на Visual Studio 2012
C#
SQL SERVER 2012

Помогите советом, как увеличить скорость отправки или скорость соединения с сервером, а то прога виснет (или показывает вид, что виснет), а клиент недоволен ((
...
Рейтинг: 0 / 0
Медленная запись в удаленный SQL сервер
    #39349559
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Размер одной записи в байтах какой?

По моему тут дело вовсе не в соединении.
Затестить просто: запусти SQL Managment studio на сервере где стоит MS SQL и сделай insert одной записи в свою таблицу. На 99% уверен что тоже будет тормозить. Если так - разбирайся с БД, смотри что там в триггерах понаписано.

Для 5000 записей не надо никаких BULKCOPY, это не много. В крайнем случае сначала во временную таблицу, а потом ее целиком в рабочую.
...
Рейтинг: 0 / 0
Медленная запись в удаленный SQL сервер
    #39349580
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tзапусти SQL Managment studio на сервере где стоит MS SQL и сделай insert одной записи в свою таблицу.такая проверка - не панацея
Медленно в приложении, быстро в SSMS
нужно запускать sql-профайлер и смотреть реальное время вставки записи
...
Рейтинг: 0 / 0
Медленная запись в удаленный SQL сервер
    #39349583
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
100% - что-то с сервером. Надо попробовать на другом
...
Рейтинг: 0 / 0
Медленная запись в удаленный SQL сервер
    #39349589
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProDima Tзапусти SQL Managment studio на сервере где стоит MS SQL и сделай insert одной записи в свою таблицу.такая проверка - не панацея
Медленно в приложении, быстро в SSMS
нужно запускать sql-профайлер и смотреть реальное время вставки записи
Сомневаюсь что это касается примитивного
Код: c#
1.
insert into MyTable (...) values (...)


Для чистоты эксперимента можно повторить тест из SSMS запущенный на машине клиента. ТС ведь канал подозревает.
...
Рейтинг: 0 / 0
Медленная запись в удаленный SQL сервер
    #39349594
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
umrbek79Помогите советом, как увеличить скорость отправки...Упакуй все insert-ы в один SQL-пакет (batch), и всё полетит, вместо того, чтобы запускать каждый insert в отдельном SQL-пакете. Тогда и временная таблица станет не нужна, пиши сразу в целевую таблицу.
...
Рейтинг: 0 / 0
Медленная запись в удаленный SQL сервер
    #39349597
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё будет не плохо в начале поставить команду
Код: sql
1.
set nocount on
...
Рейтинг: 0 / 0
Медленная запись в удаленный SQL сервер
    #39349622
Фотография Смузи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может задать вопрос тому, кто поддерживает "удаленный" сервер? Причин может быть много, режут канал, фаервол, при вставке пересчитывается индекс или срабатывает какой-то триггер. Гадать можно долго. Нужно отправить пример запроса в саппорт и узнать у них, почему так долго выполняется вставка.
...
Рейтинг: 0 / 0
Медленная запись в удаленный SQL сервер
    #39350122
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Алексей КЕщё будет не плохо в начале поставить команду
Код: sql
1.
set nocount on


Здорово, Динозавр!
Данный совет опоздал лет на 15
...
Рейтинг: 0 / 0
Медленная запись в удаленный SQL сервер
    #39350159
umrbek79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TРазмер одной записи в байтах какой?

По моему тут дело вовсе не в соединении.
Затестить просто: запусти SQL Managment studio на сервере где стоит MS SQL и сделай insert одной записи в свою таблицу. На 99% уверен что тоже будет тормозить. Если так - разбирайся с БД, смотри что там в триггерах понаписано.

Для 5000 записей не надо никаких BULKCOPY, это не много. В крайнем случае сначала во временную таблицу, а потом ее целиком в рабочую.

Размер одной записи - 30-40 байтов
на сервере инсерты без проблем

я пишу через sqlbulkcopy во временную таблицу и одним запросом вношу во рабочую
...
Рейтинг: 0 / 0
Медленная запись в удаленный SQL сервер
    #39350166
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
umrbek79,

когда-то была подобная проблема у коллеги.
была создана таблица не нормализированная. добавили первичный ключ.
...
Рейтинг: 0 / 0
Медленная запись в удаленный SQL сервер
    #39350215
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если тормоза именно на вызове SqlBulkCopy.WriteToServer, то проблема в канале, и средствами C# её не решить. Собственно, для массовой вставки данных с клиента для MSSQL есть только 3 альтернативы: SqlBulkCopy, UDТT, и передача данных в виде XML. По моим наблюдениям, вторые две значительно тормознутее первой.
...
Рейтинг: 0 / 0
Медленная запись в удаленный SQL сервер
    #39350310
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

а по моим 2 намного быстрее
...
Рейтинг: 0 / 0
Медленная запись в удаленный SQL сервер
    #39350315
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныЕсли тормоза именно на вызове SqlBulkCopy.WriteToServer, то проблема в канале, и средствами C# её не решить. Собственно, для массовой вставки данных с клиента для MSSQL есть только 3 альтернативы: SqlBulkCopy, UDТT, и передача данных в виде XML. По моим наблюдениям, вторые две значительно тормознутее первой.

в случае ТС 40*5000 = 200 кбайт - это массовая? это фигня
...
Рейтинг: 0 / 0
Медленная запись в удаленный SQL сервер
    #39350427
umrbek79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем спасибо,кто откликнулся.

оказывается программе остался кусок кода, который просматривает сервер покурсорно и я его не заметил.
изменил этот кусок и все отлично.

с sqlbulkcopy копирует на сервер 5 мб данных за 30 секунд.

ВСЕМ СПАСИБО!
...
Рейтинг: 0 / 0
Медленная запись в удаленный SQL сервер
    #39350495
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
umrbek79всем спасибо,кто откликнулся.

оказывается программе остался кусок кода, который просматривает сервер покурсорно и я его не заметил.
изменил этот кусок и все отлично.

с sqlbulkcopy копирует на сервер 5 мб данных за 30 секунд.

ВСЕМ СПАСИБО!
5 мб - 30 сек? ужас какой то
...
Рейтинг: 0 / 0
Медленная запись в удаленный SQL сервер
    #39350517
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos5 мб - 30 сек? ужас какой то
канал 2 мегабита - никакого противоречия.
...
Рейтинг: 0 / 0
Медленная запись в удаленный SQL сервер
    #39350545
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,

про канал я пропустил мимо ушей :)
...
Рейтинг: 0 / 0
Медленная запись в удаленный SQL сервер
    #39350575
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TDS компрессии до сих пор не обучили вроде как.

можно попробовать пожать данные для передачи и на сервере распаковать
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Медленная запись в удаленный SQL сервер
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]