Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скорость перебора набора данных при использовании, TAdoConnection и TAdoDataSet 
:(
    Опции темы
Fedia
Дата 18.9.2007, 03:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

Репутация: 3
Всего: 13



Доброго времени суток !

Клиентское приложение подключено к БД MySql посредством компонента TAdoConnection через драйвер MySQL ODBC 3.51.
После осуществления запроса в БД, происходит заполнение внутренних массивов программы данными из БД:
Код

    QueryWork.ClearQuery(Query);
    QueryWork.QueryText(Query, 'Select b.id_inf,b.DNID,b.mn,b.datetime,' +
      'b.latitude,b.longitude,b.course,b.velocity ' + s + ' from pos b ' +
      ' where b.id_ves = ' + IntToStr(id_ves1));
    Query.Open;

      j:=0;
      While not Query.Eof do
      begin
        inc(j);
        ArPos[j-1].Ist:=Query1.Fields[0].AsInteger;
        ArPos[j-1].DNID:=Query1.Fields[1].AsInteger;
        ArPos[j-1].MN:=Query1.Fields[2].AsInteger;
        ArPos[j-1].DT:=Query1.Fields[3].AsDateTime;
        ArPos[j-1].Code:=id_ves1;
        ArPos[j-1].L:=Query1.Fields[4].AsFloat;
        ArPos[j-1].M:=Query1.Fields[5].AsFloat;
        ArPos[j-1].A:=Query1.Fields[6].AsFloat;
        ArPos[j-1].V:=Query1.Fields[7].AsFloat;
       Query.Next;
    end;

Немного поясню ситуацию. До перевода программы на компоненты ADO, для осуществления запросов в БД я использовал компоненты zeosdbo-5.4.1, специально разработанные для СУБД MySql. Когда же я попробовал реализовать те же действия посредством ADO, то заметил, что скорость выполнения циклов, осуществляющих перебор значений набора данных, упала примерно в 6-ть раз.
При этом скорость выполнения цикла без заполнения массива:
Код

      While not Query.Eof do
      begin
        inc(j);
       Query.Next;
    end;

практически не отличается от скорости цикла, заполняющего внутренние массивы.

Эксперименты со свойствами AdoDataSet, такими как CursorType, CacheSize практически не повлияли на итоговую скорость.
Вот текущие настройки компонентов ADO:
Код

  object AdoCon: TAdoMySqlConnect
    ConnectionString = 
      'DSN=myodbc3-test;DESC=MySQL ODBC 3.51 TEST DSN;DATABASE=;SERVER=' +
      ';UID=;PASSWORD=;PORT=;OPTION=3;STMT=;'
    LoginPrompt = False
    Mode = cmRead
    Con.DriverName = 'MySQL ODBC 3.51'
    Left = 40
    Top = 256
  end
  object Query1: TADODataSet
    AutoCalcFields = False
    CacheSize = 50000
    Connection = AdoCon
    CursorType = ctOpenForwardOnly
    LockType = ltReadOnly
    MarshalOptions = moMarshalModifiedOnly
    Parameters = <>
    Left = 80
    Top = 256
  End

Есть ли возможность каким-либо образом, при использовании связки компонентов AdoConnection и AdoDataset ускорить процесс заполнения внутреннего массива ?


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0380 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.