|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
30.01.2021, 14:58 | #11 |
Форумчанин
Регистрация: 27.04.2012
Сообщений: 219
|
Почему балк вставку не делаете сразу? Зачем по 1 записи вставлять? Нужно понимать что в целом вставка во первых запускает кучу процессов в самой СУБД и во вторых вы увеличивает расход времени на ожидание ответа от СУБД после вставки. Балк вставка открывает одну транзакцию, вставляет все, закрывает ее и передает вам результат - ОДИН РАЗ. А не открывает как в Вашем примере кода 100500 транзакций и не отчитывается перед вами за каждую после Exec. Плюсом еще после каждой завершенной транзакции MySQL еще и индексы Вам пересчитывает. Отсюда- низкая скорость и в хлам загруженый HDD.
Не могу конкретно сказать про mySQL но на MSSQL можно передать XML как параметр хранимки и вставить его весь и сразу. Эти 99 тыс записей в таблицу за пару секунд залетят. А если таблица почти не индексирована, то еще быстрее. Посмотрите, может ли MySQL сразу csv парсить, возможно и не надо всяких извращений с преобразованием, передайте его как параметр хранимки MySQL и радуйтесь скорости. В качестве примера могу выложить кусок рабочего кода, где парсингом занимается MS SQL, только не CSV, а XML : ... MS SQL Код:
Код:
Например вставка 300-400 тысяч строк, занимает примерно 20 секунд. На саму вставку времени почти не тратиться,оно тратиться в основном на расстановку ключей и.т.д., т.к вставка идет в 10 разных таблиц потом это все связывается. Но все равно этот подход занимет не более 2 часов на вставку и организацию 1-2 миллионов строк в БД, в каждой строке за 100 ячеек. Я думаю тут вопрос о скорости должен отпасть. В вашем случае и в ваших объемах, вставка у Вас вообще меньше секунды должна быть на 90 тыс записей, а то и выше. Просто изучите возможности MySQL, какой формат он умеет балком вставлять и передайте ему данные в этом формате. Как его передать я написал в блоке DELPHi, как вставить XML в блоке MS SQL. Mq и MS в плане SQL похожи.
Пишу много и развернуто
Последний раз редактировалось Heneken87; 30.01.2021 в 16:08. |
01.02.2021, 11:03 | #12 |
Форумчанин
Регистрация: 02.06.2009
Сообщений: 228
|
Век живи - век учись. Спасибо. Я деж и не знал про такую возможность
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[DELPHI + MySQL на хостинге] Возможен ли обмен сообщениями между компьютерами через MySQL на сайте? | garuna | БД в Delphi | 5 | 21.08.2019 19:50 |
mySQL+DELPHI от и до | shuhermayer | SQL, базы данных | 21 | 20.10.2011 21:22 |
Mysql+Delphi 2010 Использую libmysql.dll + mysql.pas не могу инф сохранить в базу | kGpROGER | БД в Delphi | 7 | 30.12.2010 18:27 |
Delphi+MySQL | prod87 | БД в Delphi | 2 | 18.08.2010 10:09 |