Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.07.2012, 19:06   #1
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
Радость MySQL. Скорость добавления записей

Добрый день!
Работаю с СУДБ мускуль из делфи, собственно с помощью компонента adotable и метода post осуществляю добавление записей, все бы ничего, но количество записей которых мне нужно добавлять = 50 тысяч. Добавление занимает слишком много времени
Отсюда у меня такой вопросик возникает, есть ли какой-либо способ ускорить процесс добавления записей?
Может быть сменить технлогию подключения на dbexpress?
Или же добавлять записи через sql запрос?
Или все-таки этот процесс напрямую зависит от быстродействия ПК ?

Благодарю заранее!

P.S. Совсем забыл уточнить, БД расположена локально, но в дальнейшем будет - удаленно.

Последний раз редактировалось Базиля; 25.07.2012 в 19:15. Причина: Уточнения
Базиля вне форума Ответить с цитированием
Старый 25.07.2012, 19:49   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

ADOQUERY конечно лучше для этих целей, а еще лучше использовать адаптированные к MySql компоненты
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.07.2012, 19:50   #3
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Аватар
Спасибо за ответ!
Цитата:
а еще лучше использовать адаптированные к MySql компоненты
Помимо стандартных из dbexpress, есть еще какие-либо?
Базиля вне форума Ответить с цитированием
Старый 25.07.2012, 19:56   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

MyDAC платная
ZEOSLIB
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.07.2012, 19:56   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

MyDAC по-моему.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.07.2012, 20:00   #6
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Аватар
Stilet
Спасибо за советы!

Опробую dbexpress, MyDAC и ZEOSLIB.

О результатах сравнения отпишусь здесь позже, надеюсь поможет кому-либо в дальнейшем
Базиля вне форума Ответить с цитированием
Старый 25.07.2012, 21:30   #7
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Попробовал. С MyDAC 50 тысяч записей добавилось за 4 секунды.
_SERGEYX_ вне форума Ответить с цитированием
Старый 26.07.2012, 02:45   #8
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

_SERGEYX_
Благодарю!
Ого!
Может действительно дело в производительности самого ПК.
Ибо поставил сейчас MyDAC. Попробовал добавить записи запросом (использовал MyQuery), 4-мя секундами у меня вообще не пахло - 3 минуты 40 секунд.
С adoquery вышел примерно тот же результат.
С методом post на все про все ушло 5 минут 7 секунд (сейчас решил замерить). Прогресс все-таки есть
Но хотелось бы те самые 4 секунды
Может вы каким-то другим путем добавляете запись ?

Осталось протестировать ZEOSLIB и dbexpress. Но вот что-то прям чувствуется что разницы особой не будет

P.S. По поводу производительности ПК - вот если что для сравнения моя система.

Последний раз редактировалось Базиля; 26.07.2012 в 02:48.
Базиля вне форума Ответить с цитированием
Старый 26.07.2012, 07:25   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Может вы каким-то другим путем добавляете запись ?
А может сама БД настроена на медленную вставку? Пересчет индексов, возможно какие-то триггеры...
Ты вставку делал в рамках одной транзакции, или на каждый инсерт свой commit?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.07.2012, 09:46   #10
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Что-то мне подсказывает, что у ТС во время цикла подключены визуальные компоненты, например, DBGrid.
Я добавлял даже не sql-запросом, а обычным insert-post (запросом, наверно, еще быстрее будет, но сейчас проверить не могу, на работе нет майдака):
Код:
procedure TfrmMain.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  with MyQuery1 do
  begin   
    DisableControls;
    for i := 0 to 50000 do
    begin
      Insert;
      FieldByName('name').AsString := 'Запись ' + inttostr(i);
      Post;
    end;
    EnableControls;
  end;
end;
_SERGEYX_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление записей в БД Access DjoNik135 Помощь студентам 0 18.04.2012 15:09
Добавление Записей в таблицу DJ DIMON PHP 10 31.10.2011 20:12
Добавление записей IvaNNN БД в Delphi 6 11.12.2009 15:02
Добавление записей Liones БД в Delphi 3 25.12.2008 10:08
добавление записей в таблицу strannik БД в Delphi 5 10.05.2007 08:12