Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Ускорение работы FireDAC в Delphi: сравнение с DBExpress для больших объемов данных из SQL Server 2014

Delphi , Базы данных , SQL

Вопрос ускорения работы с данными в среде разработки Delphi актуален для многих разработчиков, особенно при работе с большими объемами информации. В последнее время многие специалисты переходят с использования компонентов DBExpress на более новые и мощные компоненты FireDAC. Однако, как показывает практика, при некоторых условиях скорость работы может быть ниже, что вызывает закономерный вопрос о правильности настройки и возможных оптимизациях.

Проблема

Разработчик столкнулся с проблемой замедленной работы компонентов FireDAC по сравнению с DBExpress при возврате больших объемов данных (125 000 строк) из SQL Server 2014. В частности, использование TFDQuery вместо TSQLDataSet привело к увеличению времени выполнения запроса в два раза при работе через облачный сервис. При локальной работе с базой данных на той же машине, что и приложение, FireDAC работал даже немного быстрее.

Контекст

Код на Delphi для работы с DBExpress и FireDAC выглядит следующим образом:

DBExpress:

SQL_dataset:=TSQLDataSet;
...
SQL_dataset.CommandType:=ctQuery;
SQL_dataset.CommandText:='SELECT * FROM TABLE';
SQL_dataset.Open;
...

FireDAC:

SQL_query:=TFDQuery;
...
SQL_query.SQL.Text:='SELECT * FROM TABLE';
SQL_query.Open;
...

Разработчик также экспериментировал с различными настройками компонентов FireDAC, включая параметры ResourceOptions и FetchOptions, но это не привело к заметному улучшению производительности.

Подтвержденный ответ

Тестирование показало, что при использовании FetchOptions.Mode := fmOnDemand и FetchOptions.RowsetSize := 1000 фактически загружается только 1000 строк, а не все 125 000. Это означает, что данные загружаются по мере их необходимости при перемещении по набору данных. Важно отметить, что при работе через сеть скорость работы FireDAC может быть ниже, чем у DBExpress, что и было замечено разработчиком.

Альтернативный ответ

Попытки увеличить FetchOptions.RowsetSize до 125000 привели к увеличению времени открытия набора данных. Также не было замечено улучшения при использовании CursorKind := ckAutomatic или FetchOptions.Mode := fmAll.

Решение

Для оптимизации работы с большими объемами данных через FireDAC, стоит учитывать следующие моменты:

  1. Проверка сетевой задержки: Учитывая, что время работы увеличивается при обращении к базе данных через сеть, необходимо проверить сетевую инфраструктуру на предмет возможных узких мест.
  2. Настройка параметров запроса: Используйте FetchOptions.RowsetSize и FetchOptions.Mode с осторожностью, так как большие значения могут не всегда приводить к ускорению работы.
  3. Тестирование и профилирование: Проведите тестирование с различными настройками и используйте профайлер для выявления узких мест в коде.

Пример кода

SQL_query := TFDQuery.Create(nil);
try
  SQL_query.Connection := YourFDConnection;
  SQL_query.SQL.Text := 'SELECT * FROM TABLE';
  SQL_query.FetchOptions.RowsetSize := 5000; // Установите оптимальное значение
  SQL_query.FetchOptions.Mode := fmOnDemand;
  SQL_query.Open;
  // Обработка данных
finally
  SQL_query.Free;
end;

Заключение

Переход на FireDAC может быть выгодным с точки зрения производительности и расширяемости, но требует тщательной настройки и тестирования, особенно при работе с большими объемами данных и сетевыми запросами.

Создано по материалам из источника по ссылке.

Вопрос заключается в сравнении производительности компонентов FireDAC и DBExpress для работы с большими объемами данных из SQL Server 2014 в среде разработки Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: SQL ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 13:43:03/0.0034918785095215/0