![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
amarenkov |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 21.2.2008 Где: Воронеж Репутация: нет Всего: нет |
Добрый день.
Необходимо загрузить много данных из какого-либо источника (в данном случае это XML, но не принципиально) на сервер MS SQL Server 2008 из C#. Каким образом это можно сделать максимально быстро? При помощи SqlConnection, SqlCommand? Есть ли какие-то хитрости (пакетная засылка данных, буффер, еще что-то)? Заранее спасибо ![]() |
|||
|
||||
Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: нет Всего: 54 |
-------------------- Слава Україні! |
|||
|
||||
Выхухоль |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 9.10.2008 Где: Ташкент Репутация: нет Всего: 2 |
Если это xml, то это вообще можно сделать при помощи MSSQL сервера, без других программных средств.
|
|||
|
||||
amarenkov |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 21.2.2008 Где: Воронеж Репутация: нет Всего: нет |
Gluttton, насколько я понял, это работает для файлов разных форматов. Мне же нужен метод записи данных на сервер из приложения. Причем создавать файлы доступные с сервера я не могу. Вообщем, я имел в виду, как программно я могу максимально быстро это сделать.
Выхухоль, нет, надо из приложения программными средствами ![]() |
|||
|
||||
Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: нет Всего: 54 |
А каких объемах данных (количество записей), с какой частотой и каким количеством пользователей идет речь?
-------------------- Слава Україні! |
|||
|
||||
amarenkov |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 21.2.2008 Где: Воронеж Репутация: нет Всего: нет |
Объем данных: примерно по 600 000 тыс. записей в 5 таблицах.
Частота: редко. Пользователей: такую операцию осуществляет один пользователь. Проблема в том, что сейчас я использовал Entity Framework. Потребление памяти росло с огромной скоростью, производительность с той же скоростью падало (возможно, я что-то не так делал). Вот я и задался вопросом, как это можно сделать оптимально? |
|||
|
||||
Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: нет Всего: 54 |
Непосредсвенно с Entity Framework работать не приходилось, но проводя аналогию может "подлечить" периодический COMMIT, в данном контексте это может быть закрытие и повторное октрытие соединения через каждые например 10 000 записей (а может и 1 000). Но это уже так сказать эксперименты ![]() ![]() Хотя с другой стороны, если бы это помогало, наверное об этом бы пИсали ![]() А индексы в БД есть? Может их нужно перед началом вставки блока данных удалять, а потом (после завершения операции вставки) по новой создавать? Это сообщение отредактировал(а) Gluttton - 27.7.2009, 16:03 -------------------- Слава Україні! |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 1 Всего: 92 |
Наиболее оптимально - либо OPENROWSET (с ADO=шными провайдерами), либо сериализовать данные в XML и распарсерить на стороне сервера. Множество инсёртов - в любом случае неоптимально.
Добавлено через 1 минуту и 32 секунды
Сурово... Только это займёт больше времени ![]() |
|||
|
||||
jonie |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 8 Всего: 118 |
ну и два инсерта подряд тоже вполне себе работают за один "ExecuteNonQuery". ну и вообще про bulk insert почитать стоит все же. Добавлено через 2 минуты и 23 секунды
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||||
|
|||||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 1 Всего: 92 |
Получим строковое формирование SQL-а. Что не есть хорошо (по крайней мере в данном случае). |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 8 Всего: 118 |
Любитель в любом случае формируется строка, никто ж не запрещает сделать класс и наружу будет все "красиво".
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 1 Всего: 92 |
Эээ.. Речь о том, чтобы отсылать один и тот же SQL всегда (скорее даже просто вызов нужной хранимки).
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |