|
52 / 52 / 31
Регистрация: 04.03.2014
Сообщений: 430
|
||||||
Добавление больших объемов данных07.12.2015, 12:09. Показов 1096. Ответов 11
Метки нет (Все метки)
Доброго времени суток. Разрабатываю веб-приложение, в качестве бд использую MS SQL для доступа к данным Entity. Мне нужно загрузить 93к данных, они добавляются около 3 часов.. подскажите как сделать быстрее.
0
|
||||||
| 07.12.2015, 12:09 | |
|
Ответы с готовыми решениями:
11
Хранение больших объемов данных в файлах. Добавление в бд больших объемов данных Добавление в базу больших объемов |
|
|
|
| 07.12.2015, 14:00 | |
|
0
|
|
|
52 / 52 / 31
Регистрация: 04.03.2014
Сообщений: 430
|
|
| 07.12.2015, 14:25 [ТС] | |
|
insite2012, 930 000 строк
0
|
|
|
|
||
| 07.12.2015, 14:34 | ||
|
valdi_korot, первое что я вижу - несколько методов в цикле. А вот в каждом из ник, если я правильно понял, у вас идет дублирование кода. Я вот про эту строку:
0
|
||
|
52 / 52 / 31
Регистрация: 04.03.2014
Сообщений: 430
|
|
| 07.12.2015, 14:44 [ТС] | |
|
insite2012, еще вопрос будет быстрее сразу очистить всю базу и добавлять все подрят, либо все же проверять на существующие данные ?
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|||||||
| 07.12.2015, 14:46 | |||||||
|
Сначала уберите весь код, который работает с базой. Если не умеете пользоваться профайлером, то делайте "по-дедовски" — сначала закомментируйте вот эти строчки:
За сколько он завершится? Если все равно будет работать долго, то дело не в EF и тема должна быть в другом разделе. Если отработает быстро, то раскомментируйте по одной строчке, начиная с последней, каждый раз прогоняя приложение и сравнивая производительность. Пока что видно две причины тормозов: 1. SaveChanges вызывается на каждой итерации, а не один раз после всего цикла. 2. В контексте включено отслеживание изменений, что приводит к постепенному падению производительности по мере добавления элементов. Определите, что убивает производительность: вызов SaveChanges в цикле или вызов Add, оттуда уже и будем плясать.
0
|
|||||||
|
52 / 52 / 31
Регистрация: 04.03.2014
Сообщений: 430
|
|||||||
| 07.12.2015, 15:17 [ТС] | |||||||
|
kolorotur,
500 записей добавило за 59 908 мс из моего исходного текста, за 59 664 мс save после цикла, за 59 386 мс без Add и Save, а вот и проблема похоже, без селекта к базе за 3 млс Добавлено через 1 минуту Добавлено через 13 минут kolorotur, но тогда мне приходится удалять предыдущие записи, а удаляет их тоже долго
0
|
|||||||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|||||||||
| 07.12.2015, 15:45 | |||||||||
|
Конечно, если 93к раз делать выборку из базы, то это убьет любую производительность.
Для обновления базы я бы использовал обычный низкоуровневый SQL-запрос и следующий алгоритм: 1. Создание временной таблицы с такой же структурой, как у обновляемой. 2. Заливка всех записей во временную таблицу через BULK INSERT 3. Обновление/добавление записей в обновляемую таблицу из временной через MERGE INTO. 4. Удаление временной таблицы. Таким образом, пусть база занимается нахождением разницы. Для остальных операций по нахождению/добавлению/изменению отдельных записей можно использовать и EF.
0
|
|||||||||
|
52 / 52 / 31
Регистрация: 04.03.2014
Сообщений: 430
|
|
| 07.12.2015, 15:59 [ТС] | |
|
kolorotur, но что тогда использовать в с# для такого низкого уровня запроса ?
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||
| 07.12.2015, 16:04 | ||
|
Как вариант, конечно, можно через EF сначала вытащить из базы все ID, а потом каждую добавляемую запись проверять на наличие, но если таблица большая, то это займет много времени на запрос и памяти на хранение всех ключей.
1
|
||
|
91 / 91 / 44
Регистрация: 20.04.2008
Сообщений: 331
|
|
| 08.12.2015, 08:23 | |
|
Статья на эту тему http://habrahabr.ru/post/251397/
2
|
|
|
52 / 52 / 31
Регистрация: 04.03.2014
Сообщений: 430
|
|
| 08.12.2015, 14:29 [ТС] | |
|
Нашел еще одно решение! можно использовать Dapper, во многом похож на EF
ссылка
0
|
|
| 08.12.2015, 14:29 | |
|
Помогаю со студенческими работами здесь
12
добавление в TListView больших объемов инфы Обработка больших объемов данных
Обработка больших объёмов данных Сортировка больших объемов данных Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Рецензия / Мнение/ Перевод
https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs
. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|